基于网页元素的论坛帖子群发技术

2016-11-23 10:52徐文涛
东方教育 2016年17期

徐文涛

摘要:随着因特网的发展,出现了诸如手机短信、Email、即时通讯、论坛等基于互联网的交流工具,用户广泛。利用这些工具的信息群发系统可以向大量受众发送网络信息,在企业推广、舆论宣传等方面具有重要的应用价值。作为网络信息群发系统的一个子课题,本文拟针对国内流行的Discuz论坛作研究并实现一个基于网页元素的论坛帖子群发技术,该技术可以支持同时对多个Discuz论坛完成账号注册、登录、帖子群发、帖子持续回复、注销退出等操作。与现有常见的论坛帖子群发系统相比,本文研究并实现的论坛帖子群发技术基于网页元素,具有稳定可靠、实现方便、易于扩展等优点。

关键词:信息群发,论坛,网页元素

0.研究背景

随着国际互联网和移动通信网的发展,人们已习惯于使用手机短信、即时通讯工具、电子邮件、论坛帖子等基于网络的通讯工具(以下简称网络通讯工具)进行信息交流。网络通讯工具具有使用方便、成本低、受众面广等优点。

网络信息群发系统定义为一种可以向移动通信手机用户和国际互联网用户批量发送手机短信、电子邮件、即时通信消息、论坛帖子等网络信息的软硬件平台,在短时间内充分利用各类网络资源的发送能力,将己方设计好的信息送达上述目标受众群体。

网络信息群发系统具有极高的应用价值,例如企业使用网络信息群发系统向所属员工发送网络信息可以达到日常管理的目的,政府机构向一定范围的民众发送网络信息可以达到引导舆论的目的,一国向敌方或第三方民众发送网络信息可以达到影响敌方或第三方民众心理的作用,通过研究网络信息群发技术的原理可以采取技术手段屏蔽非法网络信息群发技术,等等。

论坛帖子群发系统属于网络信息群发系统的一个子系统。论坛群发系统又名灌水机、发帖机等,顾名思义,它是可以实现同时向多个论坛注册账号、登录、发送帖子、回复帖子等操作的软件,是网络推广的一种手段,一般用于商业目的或者舆论宣传。论坛帖子群发系统一般由注册、发帖、监控等几个模块组成,用户通过软件的窗口就能完成帖子群发,其他的工作由后台程序处理,一般比较好的论坛帖子群发系统能够支持主流的论坛技术,如Discuz、PHPwind、Dvbbs等。本文主要针对目前国内主流的Discuz论坛系统研究论坛帖子群发技术。

1.研究现状

一般的论坛帖子群发系统操作过程是构造用户计算机向论坛服务器提交的post表单内容,实现代码对论坛的操作。C#一般使用类HttpWebRequest实现模拟连接论坛以及向服务器提交post表单,使用类HttpWebResponse实现接受服务器的响应信息,使用类StreamReader实现响应信息的读取。要实现同时对多个不同论坛的不同版块发帖,则要利用编程中的多线程机制,循环上诉单次发帖过程即可,但是模拟报文中必须提交一个值formhash,而这个值是Discuz论坛系统根据登录系统的用户信息生成的,这个值较难获取。

2.基于网页元素的论坛帖子群发技术

2.1 Discuz论坛发帖中涉及的网页元素

本课题基于网页元素的论坛帖子群发技术中的网页元素是指在Discuz论坛网页中需要用户输入、选择、点击的网页html基本元素,主要是指表单元素和链接元素。用户对论坛的操作就是通过这些网页元素进行的。如在登录页面中,基本的网页元素有账号输入框、密码输入框、登录按钮,为了防止恶意自动灌水,很多Discuz论坛都设置了验证码输入框。

2.2基于网页元素的单个帖子发送技术

基于网页元素实现登录的原理是用.net framework中的类HtmlElement代表Webbrowser中的密码输入框、账号输入框、提交按钮等网页元素,然后用类HtmlElement中的方法填入这些表单元素的值并提交,从而实现登录。下面通过利用控件Webbrowser登录论坛“小文之家“的例子来对基于网页元素的单条帖子发送原理进行详细分析。

从本例可以看出,用控件Webbrowser登录论坛非常简单,主要的代码也就六行,这种方法利用的是网页表单元素填充机制。

分析以上的网页源代码和C#代码,可知用C#的web类HtmlElement的三个对象可以分别代表账号输入框、密码输入框、登录按钮等网页元素,用HtmlElement的方法SetAttribute给这些表单赋上相应的值,如给账号输入框赋上账号,给密码输入框赋上密码,而 HtmlElement的方法InvokeMember可以模拟各种网页操作,如InvokeMember("click")可以模拟对按钮进行点击,用它就可以向服务器提交表单中的值,从而实现登录。以上举的是一个登录论坛的例子,发帖与登录的原理是一样的,用控件Webbrowser模拟发帖实际上相当于模拟人工直接在网页上填写表单并提交。

基于网页元素的发帖技术从本质上来说也是模拟HTTP报文对论坛进行操作,只是这种技术采用C#中比较高级的类HtmlElement,它屏蔽了底层的数据通讯格式,用户不需要关心论坛通信过程中http报文的具体格式,这就绕过Discuz论坛为了防止用户恶意自动灌水而设的formhash值,而从论坛看来,通过这种技术发帖就如同用户手工操作论坛发帖一样。基于网页元素的发帖技术比一般的发帖方法更加简单、高效。

2.3多个论坛帖子群发技术

本课题采用控件Webbrowser获取网页元素发帖,如果只用一个Webbrowser,那么每发一次帖,都必须在这个控件内经历连接论坛、注册、登陆、发帖、回复、注销退出等过程,显然,如果只用一个Webbrowser来实现在多个Discuz论坛上群发帖子,效率是很低的,所以在本课题中,我们采用多个Webbrowser实现群发。

用代码动态生成控件Webbrowser,就可以用多个Webbrowser实现群发。如同时向五个论坛发帖,动态生成五个Webbrowser,每个Webbrowser负责向一个论坛发帖,这样就实现了帖子群发,而每个Webbrowser各自在其负责的Discuz论坛内完成连接、注册、登录、发帖、回复、注销退出等操作,互不干扰,所以群发的效率还是比较高的。

3.结论与展望

随着信息时代的到来,网络将越来越流行,而论坛作为重要的网络交流工具,因为其开放性强、影响面广、门栏低等特点,也必将显现巨大的作用,由此可见,论坛帖子群发系统作为一种廉价而方便的信息宣传工具,还是有相当大的开发价值的。本文对国内流行的Discuz论坛作了研究,并实现了一个基于网页元素的论坛帖子群发技术,该技术可以同时对多个Discuz论坛完成账号注册、登录、帖子群发、帖子持续回复、注销退出等操作。

本文分析了目前国内主流的Discuz论坛的工作过程和结构特点,给出了论坛帖子群发的原理,利用.net framework平台的优势和web网页的结构特点,研究了发帖过程中涉及到的网页元素以及如何识别与获取这些网页元素,在此基础上提出了一种基于网页元素的论坛帖子群发技术,描述了其工作过程和关键算法。相对于一般的论坛帖子群发系统,本系统有实现简单、稳定高效、易于扩展的特点,更重要的是,本系统的实现基于C#的高级网页类HtmlElement,利用它可以不必关心底层的数据通信结构,同时也就绕过了Discuz论坛为了防止灌水而设的值formhash。

由于时间和精力的限制,本文对论坛帖子群发技术的研究还不够透彻,基于网页元素的论坛帖子群发系统还有一些需要改进的地方,下一步研究的工作主要是:

1)扩展可发帖的论坛类型。本课题的研究是基于Discuz论坛的,由于基于网页元素的论坛帖子群发技术不需要关心底层的HTTP通信数据结构,所以很容易在稍加修改或者不必修改的情况下就能轻松支持其他版本的论坛。

2)自动识别填写验证码。现在许多因特网上的论坛都加了图片验证码防止用户恶意自动灌水,要真正实现在所有的论坛无障碍群发帖子,必须解决图片验证码的识别与自动填写问题。

3)实现自动注册。本系统虽然可以同时进行多个Discuz论坛的账号注册,但是注册过程中需要手动填写用户名和密码等信息,要提高发帖效率,就必须让系统自动生成可用的用户名和密码进行全自动注册。

4)实现附件和帖子图片添加功能。这些功能可以让群发的信息内容更加丰富,更加吸引人。

参考文献:

[1] 陈慧玲,帅立国,姜昌金.基于HTTP协议的论坛群发技术的研究[J].计算机技术与发展,2007,17(3):37-39.

[2] 石青论坛群发大师.http:www.crsky.com,2011-05-15.

[3] Charles M.Kozierok.The TCP/IP Guide:A Comprehensive Illustrated Internet Protocols Reference [M].San Francisco:No Starch Press,2005.

[4] 谢希仁.计算机网络[M].第4版.北京:电子工业出版社,2003.

[5] Robin Nixon.Learning PHP,MySQL,and JavaScript [M].Sebastopol:OReilly,2009.

[6] Davis,F.,Kahle,B.,Morris,H.,Salem,J.,Shen,T.,Wang,R.,Sui,J.,and M.Grinbaum,"WAIS Interface Protocol Prototype Functional Specification",(v1.5),Thinking Machines Corporation,April 1995.