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-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></span>

  【知识扩展】:

http_build_query函数并不是必须的,这个函数仅仅是把传入的数组元素用&号连接起来并编码,也可以自己手工构造。

Example:

<span style="font-size:14px;"><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>


输出结果:

 

【示例】灌水机器人的代码实现

<span style="font-size:14px;"><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></span>


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值