首先 有个疑问, 是不是只有浏览器才能发送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麻烦些了,你可能要抓包分析,但是
你要相信,人能提交的地方都可以通过模拟实现,只不过分析不到位而已;