火车采集器/Discuz论坛模块

来自站长百科
跳转至: 导航、​ 搜索

火车采集器 | 安装 | 主程序 | 子程序 | 应用拓展 | 模块开发 | FAQ

安装了一个Discuz论坛,假设论坛地址为http://www.discuz4.com

在登陆前使用Winsock监视到登陆页面

Locoy Discuz1.jpg

登陆后返回Winsock获取截取的数据

Locoy Discuz2.jpg

第四行 浏览齐send发送的数据包如下:

POST /logging.php?action=login HTTP/1.1  (登陆action地址)
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, 
application/vnd.ms-excel, application/msword, */*
Referer: http://www.discuz4.com/logging.php?action=login (登陆来源页面)
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; Maxthon; .NET CLR 1.1.4322)
Host: www.discuz4.com
Content-Length: 215
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: cdb_sid=eQanty; cdb_cookietime=2592000

formhash=81e752cb&referer=http%3A%2F%2Fwww.discuz4.com%2Findex.php&loginmode=
&styleid=&cookietime=2592000&loginfield=username&username=locoy&password=haha&questionid=0&answer=&loginsubmit=%CC%E1+%26nbsp%3B+%BD%BB

前面内容可参考DedeCMS文章模块

Locoy Discuz3.jpg

POST /logging.php?action=login 这个是登陆地址后缀

Referer: http://www.discuz4.com/logging.php?action=login 去掉前面的cms/论坛根地址便是来源页面 ,由于没开启验证码,这里留空。

好,来看POST的数据

formhash=81e752cb&referer=http%3A%2F%2Fwww.discuz4.com%2Findex.php&loginmode=&styleid=
&cookietime=2592000&loginfield=username&username=locoy&password=haha&questionid=0&answer=
&loginsubmit=%CC%E1+%26nbsp%3B+%BD%BB
  • formhash=81e752cb //这个便是登陆时产生的随机值,每次都不一样,在登陆前必须获取到它才能通过验证登陆,可以在页面里去找
  • referer=http%3A%2F%2Fwww.discuz4.com%2Findex.php 也就是http://www.discuz4.com/index.php 这里进行了urlencode
  • loginmode=&styleid= 没选择登陆方式和风格(默认)
  • cookietime=2592000 默认是一个月吧。。。
  • oginfield=username 使用用户名登陆的而不是用户id号

注意

  • username=locoy&password=haha 这就是用户名密码
  • &questionid=0&answer=&loginsubmit=%CC%E1+%26nbsp%3B+%BD%BB 问题,答案都没选 loginsubmit表示进行了登陆操作。。

现在退出登陆返回登陆页面http://www.discuz4.com/logging.php?action=login再来看它的源代码。在form 表单里有这么一行

<form method="post" name="login" action="logging.php?action=login">
<input type="hidden" name="formhash" value="81e752cb">
Formhash=81e752cb 这就是要获取的值。。

于是在随机值及ubb Tab页里增加一个标签 [登陆随机值1]

  • 页面:当然是登陆时的页面 /logging.php?action=login
  • 开始字符串 :type="hidden" name="formhash" value="
  • 结束字符串:"> 通过这个限制便能获取到81e752cb 这个随机值
Locoy Discuz4.jpg

于是登陆POST数据替换掉动态变化的内容便是:

formhash=[登陆随机值1]&referer=[网站地址]%2Findex.php&loginmode=&styleid=&cookietime=2592000
&loginfield=username&username=[用户名]&password=[密码]&questionid=0&answer=
&loginsubmit=%CC%E1+%26nbsp%3B+%BD%BB
Locoy Discuz5.jpg

登陆成功的源代码里找一个成功标志码:欢迎您回来

出现的常见得几种错误标志码:

  1. 用户名无效,密码错误或安全问题回答错误
  2. 累计 5 次错误尝试
  3. 错误:登陆太频繁,服务器认为在暴力破解密码

测试一下,登陆成功。

接下来是刷新列表设置了,找一个有列表的页面。Dz论坛的列表版块一般就在首页。所以刷新列表页面填:/index.php

来源这个哪都能刷,可以不填了,页面区域就在全页面匹配,若只在某一定范围内获取列表,请选取其开始结束字符串 下面到index源代码中找一个版块。这有一个默认论坛,其链接如下:

Locoy Discuz6.jpg
 <a href="forumdisplay.php?fid=1"><span class="bold">默认论坛</span></a>

填到分类列表名称及ID格式里 替换变化的fid值和版块名称即为

<a href="forumdisplay.php?fid=[分类ID]"><span class="bold">[分类名称]</span></a>   

以前这里使用正则刷新列表,现在取消了

Locoy Discuz7.jpg

如果有了论坛,列表形式可能有一点变化,也就可能出现刷不出列表的情况,其实这里只是为了大家选取时更加直观,直接填版块ID的效果是一样的。

UBB选项,这里直接选择系统内置的discuz UBB形式,这里是软件的以后版本可能会考虑独立出来由用户编辑,适应更多的论坛系统及UBB形式的更新。

文章POST数据,打开一个版本,在发表文章前使用Winsock监视窗口 发表后的winsock:

Locoy Discuz8.jpg

鼠标选中的那一行

POST /post.php?action=newthread&fid=1&extra=page%3D1&topicsubmit=yes HTTP/1.1
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, 
application/x-shockwave-flash, application/vnd.ms-excel, application/msword, */*
Referer: http://www.discuz4.com/post.php?action=newthread&fid=1&extra=page%3D1
Accept-Language: zh-cn
Content-Type: multipart/form-data; boundary=---------------------------7d61c51340152
Accept-Encoding: gzip, deflate
User-Agent: Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; SV1; Maxthon; .NET CLR 1.1.4322)
Host: www.discuz4.com
Content-Length: 4548
Connection: Keep-Alive
Cache-Control: no-cache
Cookie: cdb_sid=eQanty; cdb_cookietime=2592000; cdb_auth=BFsLBgAPV1UEAAdTV1heUwUHAVMNUgZUCQJcB1FWAQNrMQM; cdb_visitedfid=1

鼠标的下一行数据

-----------------------------7d61c51340152
Content-Disposition: form-data; name="formhash"
cc06cb25
-----------------------------7d61c51340152
Content-Disposition: form-data; name="isblog"
-----------------------------7d61c51340152
Content-Disposition: form-data; name="readperm"
0
-----------------------------7d61c51340152
Content-Disposition: form-data; name="subject"
title
-----------------------------7d61c51340152
Content-Disposition: form-data; name="iconid"
0

参数太多太长略去一部分

  • 发表地址后缀即POST地址:/post.php?action=newthread&fid=[分类ID]&extra=page%3D1&topicsubmit=yes这里替换掉了fid=1的默认分类为[分类ID]变量
  • 来源页面后缀:http://www.discuz4.com/post.php?action=newthread&fid=1&extra=page%3D1去掉网址替换fid即为:/post.php?action=newthread&fid=[分类ID]&extra=page%3D1

发表POST数据,因为论坛发表时可能上传文件,使用的Content-Type是 multipart/form-data;

于是发表POST数据要将第二页的所有参数全部连接起来,文件上传部分可以不管(2.0的一个功能是自动上传文本及附件到论坛,可以实现),即:

formhash=cc06cb25&isblog=&readperm=0&subject=title&iconid=0&mode=2&font=&size&color&message=content

这里几个参数formhash又是一个随机值到随机值编辑页面再定义一个[登陆随机值2]

isblog readperm iconid mode font=&size&color 这些应该能懂他的意思,修改值后发表后便不是默认值了。subject是帖子标题,message是内容

整个POST数据整理后便成为:

formhash=[登陆随机值2]&isblog=&readperm=0&subject=[标签:标题]&iconid=0&mode=2
&font=&size&color&message=[标签:内容]
Locoy Discuz9.jpg

最后一页填上一些该模块的注意事项及相关备注。

有的论坛的开启了小标题, 发表的POST数据便改变了。这样模块应该添加一个参数&typeid=小标题id


参考来源[ ]

火车采集器使用手册导航

安装

系统安装

主程序

主程序|主菜单|命令行启动|随机文件夹保存数据|正则匹配模式采集数据|采集记录筛选|代理服务器采集数据|POST方式获得网址|拓展插件|分页采集|多页采集|数据导出|多任务多线程|手动链接格式设置|循环匹配采集|网站登陆采集|列表缩略图及标签采集|html标签排除|全局词语替换|首图缩略|FTP文件上传|附件上传|本地数据编辑|下载导出|图片下载|Flash文件下载|任意格式文件下载|采集数据导入数据库|任务定时自动更新|任务运行日志|自动中文分词|自动摘要和拼音|前后截取模式|采集任务新建

子程序

源代码获取与模拟|Web在线发布模块编辑器|Web在线发布配置管理|数据库发布模块编辑器|数据库发布配置管理|工具箱|编程插件管理|翻译测试|中文分词测试|自动运行管理器 任务队列管理器|自动升级程序

应用拓展

数据库发布模块编辑器制作|外部编程插件开发

模块开发

DedeCMS文章模块|PHPWind论坛模块|Discuz论坛模块

FAQ

使用前常见问题|编辑任务中常见问题|发布失败常见问题|使用中常见问题|VIP版本常见问题