zoukankan      html  css  js  c++  java
  • HTTP协议

    首先 有个疑问, 是不是只有浏览器才能发送http 请求?

    答案肯定是错的,第一篇就说了,http是由请求行,请求头,请求主体三个部分组成,那么我们可不可以用代码来模拟一下get和post请求呢;

    首先又回到一个最基本的认识,你要模拟一个请求,那你至少要和对方连接上吧,如何连接?php已经为你准备好了  fsockopen 函数;

    //打开通道
    $f = fsockopen("www.baidu.com", 80, $errno, $errstr, 30);
    //拼装一个http请求字符串
    $g = "GET / HTTP/1.1
    ";
    $g .= "Host: www.baidu.com
    ";
    $g .= "Connection: Close
    ";
    $g .= "
    ";
    //往这个通道里面写数据 其实就是通信
    fwrite($f,$g);
    //用来保存返回结果
    $r = "";
    //为了避免过大的返回结果,每次循环取出1024个字节的内容
    while(!feof($f)){
        $r .= fread($f,1024);
    }
    //关闭通道
    fclose($f);
    //把返回的头信息和内容分开  只输出内容
    echo array_pop(explode("
    
    ",$r));

    简短几行代码就实现了模拟get请求,稍加修改就可以实现post模拟,但是别高兴的太早,post通常关乎网站的安全因素,所以大部分网站都会
    使用很多方法来防止你做这样的事情,比如添加个验证码,比如判断useragent信息等,你在模拟post提交的时候就比get麻烦些了,你可能要抓包分析,但是

    你要相信,人能提交的地方都可以通过模拟实现,只不过分析不到位而已;

  • 相关阅读:
    CodeForces 706C Hard problem
    CodeForces 706A Beru-taxi
    CodeForces 706B Interesting drink
    CodeForces 706E Working routine
    CodeForces 706D Vasiliy's Multiset
    CodeForces 703B Mishka and trip
    CodeForces 703C Chris and Road
    POJ 1835 宇航员
    HDU 4907 Task schedule
    HDU 4911 Inversion
  • 原文地址:https://www.cnblogs.com/codeAB/p/6307006.html
Copyright © 2011-2022 走看看