- 论坛徽章:
- 1
|
[乔楚技术]CU灌水机的实现原理和思路
10月30日,CU论坛更换了程序使用了Discuz。
换了新的,当然要这腾一下子了,于是一乐我的第一个灌水机,在清茶灌水测试,决然还成功了。对于灌水测试过程之中给清茶版主和网友带来的任何不便,表示诚恳的道歉和惭愧。
技术归技术,下面我来讲一讲实现原理和思路。
原理很简单,就是模仿用户发帖,使用CURL模块来做的。
通过手工发帖的研究,发帖过程如下:
1. 用户登陆成功,访问logging.php并发送用户名称和密码等数据
2. 发帖,访问post.php,并POST发送相关参数即可灌水。因为当时验证码没有开启,所以可以成行。
1和2需要连贯的进行,而他们而这的连续,靠得是cookie文件来进行的。
查看 http://w.yi.org/ftp/FAPM/PHP/php_manual_zh/function.curl-setopt.html
我们发现: 应用 CURLOPT_COOKIEFILE 参数,可以将cookie保存到一个文件并且被继续使用。
cookie可以保存了,那么其他的工作就很好做了。
当然,本文需要你对CURL较为了解。
同是为了安全原因,不做详细的代码的分析了。
以下为登陆的代码:
- <?php
- set_time_limit(1200);
- function make_seed($intBase=100000) {
- list($usec, $sec) = explode(' ', microtime());
- return (float) $sec + ((float) $usec * $intBase);
- }
- /*
- 安全提问:
- 0--无安全提问
- 1--母亲的名字
- 2--爷爷的名字
- 3--父亲出生的城市
- 4--您其中一位老师的名字
- 5--您个人计算机的型号
- 6--您最喜欢的餐馆名称
- 7--驾驶执照的最后四位数字
- */
- $strQuestionid = 0;
- $strAnswer = '';
- $strUsername = '';
- $strPassword = '';
- $strLoginData = '' . 'loginmode=' . '&' . 'styleid=' . '&' . 'questionid=' . $strQuestionid . '&' . 'formhash=242bdcad' . '&' . 'referer=http://bbs.chinaunix.net/index.php' . '&' . 'cookietime=0' . '&' . 'loginfield=username' . '&' . 'username=' . $strUsername . '&' . 'password=' . $strPassword . '&' . 'answer=' . $strAnswer . '' . '&' . 'loginsubmit=%CC%E1+%26%23160%3B+%BD%BB';
- $ch = curl_init();
- curl_setopt($ch, CURLOPT_URL, "http://bbs.chinaunix.net/logging.php?action=login");
- curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/99.99 (compatible; MSIE 99.99; Windows XP 99.99)");
- curl_setopt($ch, CURLOPT_POST, 1);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $strLoginData);
- curl_setopt ($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
- curl_exec($ch);
复制代码 |
|