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

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

  • 相关阅读:
    Android动态加载jar/dex
    aiXcoder安装&使用
    笨办法学python 13题:pycharm 运行
    python2.7安装numpy、pandas、matplotlib库
    win10在文件夹下打开powershell
    SpringCloud:(一)服务注册与发现
    pycharm2018.2安装
    Python2.7安装&配置环境变量
    centos7配置NTP时间服务器
    centos7:Zookeeper集群安装
  • 原文地址:https://www.cnblogs.com/codeAB/p/6307006.html
Copyright © 2011-2022 走看看