创世神域

Nothing is impossible.

@Puteulanus4年前

06/17
01:01
学习心得

技术宅社区(DZ论坛)自动签到

嘛,那论坛的积分不计算在线时长的,不然和我在狮城论坛一样24小时挂机就好了。。。

不过还好,签到程序不算复杂,用Firebug看了下POST信息,试着弄了个自动签到的PHP程序。

  1. <?php
  2. header(“Content-type:text/html;charset=utf-8”);
  3. // 设定cookie和网址
  4. $cookie = “”;
  5. $URL = “http://www.gn00.com/plugin.php?mobile=1”;
  6. // 获取formhash
  7. $UserAgent = ‘Mozilla/5.0 (Linux; Android 4.1; Galaxy Nexus Build/JRN84D, compatible iPhone) AppleWebKit/535.19 (KHTML, like Gecko) Chrome/18.0.1025.166 Mobile Safari/535.19’;
  8. $str = loadcode($cookie,$URL,$UserAgent);
  9. preg_match_all(‘#formhash=(.+)&amp#sU’,$str,$m);
  10. // 设定POST信息
  11. $data = ‘formhash=’.$m[1][0].’&qdxq=yl&qdmode=3&todaysay=&fastreply=0′;
  12. $URL = ‘http://www.gn00.com/plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=1&inajax=1′;
  13. $UserAgent = ‘Mozilla/5.0 (Macintosh; Intel Mac OS X 10.9; rv:30.0) Gecko/20100101 Firefox/30.0’;
  14. $Referer = ‘http://www.gn00.com/plugin.php?id=dsu_paulsign:sign’;
  15. // 模拟签到并输出回执
  16. print_r(vpost($URL,$data,$cookie,$UserAgent,$Referer));
  17. function loadcode($cookie,$URL,$UserAgent)
  18. {
  19.   $ch = curl_init();//初始化curl
  20.   curl_setopt($ch,CURLOPT_COOKIE,$cookie); //设置cookie
  21.   curl_setopt($ch,CURLOPT_URL,$URL);//抓取指定网页
  22.   curl_setopt($ch, CURLOPT_HEADER, 0);//设置header
  23.   curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER[$UserAgent]); // 模拟用户使用的浏览器
  24.   curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);//要求结果为字符串且输出到屏幕上
  25.   return curl_exec($ch);//运行curl
  26.   curl_close($ch);
  27. }
  28. function vpost($url,$data,$cookie,$UserAgent,$Referer){ // 模拟提交数据函数
  29.   $curl = curl_init(); // 启动一个CURL会话
  30.   curl_setopt($curl, CURLOPT_URL, $url); // 要访问的地址
  31.   curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, 0); // 对认证证书来源的检查
  32.   curl_setopt($curl, CURLOPT_SSL_VERIFYHOST, 1); // 从证书中检查SSL加密算法是否存在
  33.   curl_setopt($curl, CURLOPT_USERAGENT, $_SERVER[$UserAgent]); // 模拟用户使用的浏览器
  34.   curl_setopt($curl, CURLOPT_COOKIE, $cookie);
  35.   curl_setopt($curl, CURLOPT_REFERER,$Referer);// 设置Referer
  36.   curl_setopt($curl, CURLOPT_POST, 1); // 发送一个常规的Post请求
  37.   curl_setopt($curl, CURLOPT_POSTFIELDS, $data); // Post提交的数据包
  38.   curl_setopt($curl, CURLOPT_TIMEOUT, 30); // 设置超时限制防止死循环
  39.   curl_setopt($curl, CURLOPT_HEADER, 0); // 显示返回的Header区域内容
  40.   curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); // 获取的信息以文件流的形式返回
  41.   $tmpInfo = curl_exec($curl); // 执行操作
  42.   if (curl_errno($curl)) {
  43.     echo ‘Errno’.curl_error($curl);//捕抓异常
  44.   }
  45.   curl_close($curl); // 关闭CURL会话
  46.   return $tmpInfo// 返回数据
  47. }
  48. ?>

刚刚跨过12点试了一下【前一天的签到抓POST信息了】,签到成功,重复执行的话会返回今日已经签到的提示。

挂了个12小时一次的Cron,跑两天看看吧。

需要源码的朋友可以去我的Github复制。

技术宅社区(DZ论坛)自动签到

          1. quericy
            UnknownUnknownUnknownUnknown

            应该不会太难吧_(:з」∠)_
            博主能不能试试写下呢??这可是能造♂福♂大♂家的呢~~discuz论坛签到的人肯定不少啊,如果能有个通用模板的插件来各个论坛云签到…(*ˉ﹃ˉ)想想就有点小激动呢wwww