HTTP协议 - 使用php模拟get/post请求

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

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

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

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

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

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

转载于:https://www.cnblogs.com/codeAB/p/6307006.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值