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麻烦些了,你可能要抓包分析,但是

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

  • 相关阅读:
    redis 使用
    VS----id为xxxx的进程当前未运行 问题
    bootstrap--------bootstrap table显示行号
    js--------js获取当前时间,返回日期yyyy-MM-dd
    CLR via C#--------CLR的执行模式
    Python链表成对调换
    Python去除列表中的重复元素
    MySQL索引背后的数据结构及算法原理
    Python 垃圾回收机制
    Python 里的拷贝
  • 原文地址:https://www.cnblogs.com/codeAB/p/6307006.html
Copyright © 2011-2022 走看看