HTTP应用:模拟灌水机器人
模拟灌水机器人
注:由于论坛实现了评价审核,或者直接使用wordpress建站,本文实现的灌水机器人就显得吃力了。
首先,要实现HTTP协议与服务器的交互,不一定使用浏览器,对于服务器,无法识别是真实的浏览器还是“虚拟”的浏览器。
1. PHP中与HTTP协议相关的函数
a) get_headers()函数。取得服务器响应一个HTTP请求所发送的标头。可以用此函数来请求一个URL,来判断请求的资源是否存在。
b) file 系列函数:包括fopen、file_get_contents等,可以用来操作文件,也可以请求一个网络上的资源。
c) stream_*系列函数:发送请求,包括但不限于HTTP协议。
d) socket 系列函数:通过Socket发送和请求数据,包括但不限于HTTP协议。
e) cURL扩展库:PHP的一个扩展,这是一个封装的函数库。可以用来模拟浏览器和服务器进行交互,功能强大。
f) header函数:PHP中可用此函数发送原始的HTTP报头。但是注意的是这个函数之前不能有任何的输出或空格。
利用file_get_contents、fopen、file、readfile系列函数读取URL的时候,会创建一个$http_response_header变量保存HTTP响应的报头,使用fopen等函数打开的数据流信息可以使用stream_get_meta_data获取。
【示例】
<span style="font-size:14px;"><span style="font-family:FangSong_GB2312;font-size:12px;"><?PHP $html =file_get_contents('http://www.baidu.com'); print_r($http_response_header); $fp = open('http://www.baidu.com','r'); //打印数据流信息 print_r(stream_get_meta_data($fp)); fclose($fp); ?></span></span>
【知识扩展】:
http_build_query函数并不是必须的,这个函数仅仅是把传入的数组元素用&号连接起来并编码,也可以自己手工构造。
Example:
<span style="font-size:14px;"><span style="font-family:FangSong_GB2312;font-size:12px;"><?PHP $data = array( 'foo' => 'bar', 'baz' => 'boom', 'cow' => 'milk' ); echo http_build_query($data); ?></span></span>
输出结果:
【示例】灌水机器人的代码实现
<span style="font-size:14px;"><span style="font-family:FangSong_GB2312;font-size:12px;"><?PHP $data = array( /* 这部分是表单name和你需要提交的内容。 */ ) $data = http_build_query($data); $opt = array( 'http' => array( 'method' => 'POST', 'header' =>"Content-type:application/x-www-form-urlencoded"."\r\n". "Content-Length:".strlen($data)."\r\n". /* 这里如果行不通可以具体写,比如UA、Cookie、Referer */ 'content' => $data ) ); $context = stream_context_create($opt); $html =@file_get_contents('URL',false,$context); ?></span></span>
郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。