火车采集器/PHPWind论坛模块
PHPWind 6.3.2的模块制作,基本方法和DedeCms5.1模块制作是一样的。
主要内容是要用“通出发送数据包登陆”主要讲登陆随机值的获取。
首先,本地安装好论坛,地址是http://127.0.0.1/pw632
一步步来,先做登陆设置,在http://127.0.0.1/pw632/login.php这个页面登陆,因为这里可以选择保存cookies的时间,选最大的,一年。 填写好用户名密码,用Winsock Expert监视浏览器数据的发送,可以得到以下结果,看图1第五行
第五行 浏览器send发送的数据包如下:
POST /pw632/login.php? HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Referer: http://127.0.0.1/pw632/login.php Accept-Language: zh-cn Content-Type: application/x-www-form-urlencoded Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Host: 127.0.0.1 Content-Length: 122 Connection: Keep-Alive Cache-Control: no-cache Cookie: 52208_lastvisit=29%091216516081%09%2Fpw632%2Flogin.php%3F; 52208_lastpos=other; 52208_ol_offset=97 forward=&jumpurl=http%3A%2F%2F127.0.0.1%2Fpw632%2Findex.php&step=2 &lgt=0&pwuser=admin&pwpwd=admin&hideid=0&cktime=31536000
前面的具体填法,可以参考DedeCMS文章模块中的填法讲解。
POST /pw632/login.php?
这个是登陆地址后缀
Referer: http://127.0.0.1/pw632/login.php
去掉前面的cms/论坛根地址便是来源页面 ,由于没开启验证码,这里留空。建议大家关闭验证码。
来看POST的数据
forward=&jumpurl=http%3A%2F%2F127.0.0.1%2Fpw632%2Findex.php&step=2&lgt=0 &pwuser=admin&pwpwd=admin&hideid=0&cktime=31536000
- jumpurl=http%3A%2F%2F127.0.0.1%2Fpw632%2Findex.php 也就是http://127.0.0.1/pw632/index.php 这里进行了urlencode
- pwuser和pwpwd 分别是用用户和密码
- cktime=31536000 是一年的时间
- hideid=0 是不隐身登陆
- lgt 是用户名登陆和uid登陆的参数。
将对应的可变值用标签代替,并测试登陆,在返回代码里可以看到“您已经顺利登录”字样,这就是成功标识码。
最后再找一些登陆错误返回的代码(这没找全),登陆设置部分就完成了。具体看图2。
接下来是刷新列表设置了,找一个有列表的页面。pw论坛的列表版块一般就在首页。但是从找最简单的列表来说,搜索页是个不错的选择。
所以刷新列表页面填:/search.php
来源这个哪都能刷,可以不填了,页面区域,可以在全页面匹配,也可只在某一定范围内获取列表,只需选取其开始结束字符串
下边看一下/search.php页的代码
<input type="radio" name="s_type" value="forum" />社区分类 <select name="f_fid" onclick="this.form.s_type[1].checked=true"> <option value="1">>> PHPwind Board</option> <option value="2"> |- 默认版块</option> <option value="3">>> test1</option> <option value="4"> |- test12</option> </select>
这个简单们选个开头结尾的,就好了,看效果图3.
测试一下,成功.
下边做文章发表参数这块,方法和dedecms的差不多。
文章POST数据,打开一个页面,在发表文章前使用Winsock监视窗口 发表后的winsock:
鼠标选中的那一行
POST /pw632/post.php? HTTP/1.1 Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */* Referer: http://127.0.0.1/pw632/post.php?fid=2 Accept-Language: zh-cn Content-Type: multipart/form-data; boundary=---------------------------7d828313401b0 Accept-Encoding: gzip, deflate User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; .NET CLR 2.0.50727) Host: 127.0.0.1 Content-Length: 2377 Connection: Keep-Alive Cache-Control: no-cache Cookie: 52208_lastpos=other; 52208_ol_offset=97; 52208_ck_info=%2F%09; 52208_winduser=Aj9RAgNUAVpRBlIAU10CBwYDBwJQUAcCAAkEBQQAAgNQUjs%3D; 52208_lastvisit=2979%09121652009509%2Fpw632%2Fpost.php%3Ffid%3D2; PHPSESSID=2a3bae3e451299dcbfe2659e303c0fcb; ENV_GOBACK_URL=%2Fdede51%2Fdede%2Fcontent_list.php; 52208_threadlog=%2C2%2C
鼠标的下一行数据
-----------------------------7d828313401b0 Content-Disposition: form-data; name="magicname" -----------------------------7d828313401b0 Content-Disposition: form-data; name="magicid" -----------------------------7d828313401b0 Content-Disposition: form-data; name="verify" e2589801 -----------------------------7d828313401b0 Content-Disposition: form-data; name="atc_title" caijitt -----------------------------7d828313401b0 Content-Disposition: form-data; name="atc_iconid" 0 -----------------------------7d828313401b0 Content-Disposition: form-data; name="atc_content" caijicc -----------------------------7d828313401b0 参数太多太长略去一部分
分析:发表地址后缀即POST地址: /post.php? 来源页面后缀:http://127.0.0.1/pw632/post.php?fid=2去掉网址替换fid即为:/post.php?fid= [分类ID]
注意,verify是个可变的参数,在每个论坛可能不一样,在退出那里也有个verify,但那个不是所要的,要的是表单里的verify,看下边的设置。还有很重要的一点,就是ubb,还是请看图6,不选这个的话没法ubb发表帖子。目前支持的就上边几大主流ubb编码。
发表POST数据,因为论坛发表时可能上传文件,使用的Content-Type是 multipart/form-data;于是发表POST数据要将第二页的所有参数全部连接起来,并将相关参数换成标签,于是可得
magicname=&magicid=&verify=[登陆随机值1]&atc_title=[标签:标题]&atc_iconid=0&atc_content=[标签:内容] &atc_autourl=1&atc_usesign=1&atc_convert=1&digest=0&atc_rvrc=0&atc_money=0&atc_credittype=money &atc_downrvrc1=0&atc_desc1=&attachment_1=&step=2&pid=&action=new&fid=[分类ID]&tid=0&article=&special=0
图7就是post的设置,里边的其它参数的意义可以查看源码里对应的表单项的意义,以便按需要进行修改。
测试发帖,成功,标志码“发贴完毕点击进入主题列表”,再找一些出错代码,就可以了。
最后一页填上一些该模块的注意事项就相关备注
本系统只能通过发送数据包的形式登陆,不然用内置浏览器登陆会提示没有登陆。