·您现在的位置: 云翼网络 >> 文章中心 >> 网站建设 >> 网站建设开发 >> php网站开发 >> php模拟用户自动在qq空间发表文章的方法

php模拟用户自动在qq空间发表文章的方法

作者:佚名      php网站开发编辑:admin      更新时间:2022-07-23
php模拟用户自动在QQ空间发表文章的方法

我们这里是一个简单的利用php来模拟登录后再到QQ空间发送文章的一个简单的程序,有需要的朋友可以参考,或改进可以给我意见,代码如下:

[php]view plaincopy
  1. <?php
  2. //模拟getpost请求函数http://www.lai18.com
  3. /*
  4. 函数说明:
  5. 功能:请求方式可以get,post,可以发送的cookie,保存的cookiefile文件
  6. 参数:$url-----请求url$referer---来源url$postdata----------用于post请求的数据,''为get请求
  7. $cookie---------发送的cookie$cookiefile-----保存的cookiefile文件
  8. 返回值:返回获取的源码
  9. */
  10. functionrequest($url,$referer='',$postdata='',$cookie='',$cookiefile=''){
  11. //header设置
  12. $header='';
  13. $header.="Content-Type:application/x-www-form-urlencodedrn";//内容请求类型
  14. $header.="User-Agent:Mozilla/4.0(compatible;MSIE8.0;WindowsNT6.1;Trident/4.0;SLCC2;.NETCLR2.0.50727;.NETCLR3.5.30729;.NETCLR3.0.30729;MediaCenterPC6.0)rn";//浏览器字段
  15. $header.="Referer:".$referer."rn";//设置来源地址
  16. $header.="Cookie:".$cookie;//设置cookie,默认空
  17. //请求方法getpost,通过$postdata空---get,非空----post
  18. if($postdata=='')$method='GET';
  19. else$method='POST';
  20. //定义用于创建流的数组
  21. $opts=array();
  22. $opts['http']=array('method'=>$method,'header'=>$header,'content'=>$postdata);
  23. //生成流
  24. $context=stream_context_create($opts);
  25. //发送请求,获取源码
  26. $yuanma=file_get_contents($url,false,$context);
  27. //是否需要保存cookie到文件,$cookiefile不空时
  28. if($cookiefile!=''){
  29. echo'需要保存cookie<br>';
  30. //判断保存文件存在,不存在创建
  31. if(!file_exists($cookiefile)){
  32. file_put_contents($cookiefile,'');
  33. }
  34. //获取cookie,保存起来
  35. $response=implode("rn",$http_response_header);
  36. //用正则匹配cookie
  37. $zengze="/Set-Cookie:(.*?)rn/";
  38. PReg_match_all($zengze,$response,$cookie_arr);
  39. //存在匹配,保存
  40. if(!emptyempty($cookie_arr[1])){
  41. $cookiestr=implode(';',$cookie_arr[1]);
  42. file_put_contents($cookiefile,$cookiestr);
  43. echo'成功保存cookie<br>';
  44. }
  45. elseecho'没有匹配到cookie<br>';
  46. }//endif($cookiefile!='')
  47. //返回源码
  48. return$yuanma;
  49. }//endfunctionrequest($url,$referer,$postdata,$cookie,$cookiefile)
  50. //获得当前的脚本网址
  51. functionGetCurUrl()
  52. {
  53. if(!emptyempty($_SERVER["REQUEST_URI"]))
  54. {
  55. $scriptName=$_SERVER["REQUEST_URI"];
  56. $nowurl=$scriptName;
  57. }
  58. else
  59. {
  60. $scriptName=$_SERVER["PHP_SELF"];
  61. if(emptyempty($_SERVER["QUERY_STRING"]))
  62. {
  63. $nowurl=$scriptName;
  64. }
  65. else
  66. {
  67. $nowurl=$scriptName."?".$_SERVER["QUERY_STRING"];
  68. }
  69. }
  70. return$nowurl;
  71. }
  72. //获得当前文件名
  73. $nowurl=GetCurUrl();
  74. //echo$nowurl;
  75. //表单输出,没有提交时
  76. if(!isset($_POST['qq'])){
  77. echo'<formmethod="post"action="'.$nowurl.'">
  78. qq号码:<inputtype="text"name="qq"><br>
  79. g_tk:<inputtype="text"name="g_tk"><br>
  80. 标题:<inputtype="text"name="title"><br>
  81. 内容:<inputtype="text"name="content"><br>
  82. <inputtype="submit"value="发表文章">
  83. </form>';
  84. die();
  85. }
  86. /*
  87. 提交参数说明:
  88. $_POST['qq']---用户QQ
  89. $_POST['g_tk']--这个参数很关键,获得这个参数,需要抓下发表时提交的post地址后面调用的g_tk=123456789,
  90. 路POST<ahref="http://b1.qzone.qq.com/cgi-bin/blognew/blog_add?g_tk=123456789里的g_tk=123456789"target="_blank">http://b1.qzone.qq.com/cgi-bin/blognew/blog_add?g_tk=123456789里的g_tk=123456789</a>
  91. $_POST['title']---文章标题,不得空
  92. $_POST['content']---文章内容,不得空
  93. */
  94. header('Content-Type:text/html;charset=gb2312');
  95. 上一篇文章:
  96. 下一篇文章: