最近忽然有一个想法,就是通过程序在客户端自动完成一些较为复杂的功能,比如说在一个论坛里自动注册自动发贴、利用某些网站的搜索功能自动搜索组织感兴趣数据、自动站内发短信甚至自动发电子邮件;说白了就是一些所谓的“灌水机”、“爆吧机”、“垃圾邮件机”,当然我的出发点是为了学习提高。
由于之前完全没有接触过这方面的东西,所以决定先实现一小部分的功能,打个基础。这个小项目要实现的功能是使用程序在一个论坛里自动发表评论,可以是人输入文字后程序提交,也可以通过程序自动获取网友已经发布的评论后作为关键字google,得到结果后回复到论坛,后面这种功能本意是智能聊天,但为了实现简单的一种处理,效果不佳,下面讨论这种功能的实现。
程序要做的工作有1、用户名和密码登录,2、获取某个板块的页面,然后顺序查找每一个主题,把题目、超链接等信息保存下来,3、通过比较最后回复者名称确定要发表回复的主题,进入该主题,通过计算并使用主键方法找到最后回复的内容,4、截取部分内容进行URL编码提交到google搜索页面,5、同样通过主键方法还有简单计算索引到第一个搜索结果,6、对结果进行URL编码后提交到论坛的相应主题即完成了回复。
使用VC的socket编程,网上能找到一大堆http的get和post方法程序,有了这些方法就可以实现程序自动获取和提交数据了。下面提一下这个项目的一些难点。要提交中文就必须对其进行编码,不同的网站可能使用不同的编码,主要有GBK和UTF-8,论坛是前者,google是后者,浏览器都有这些编码功能,那么我的程序实质是从一种编码数据到另一种编码数据,然后再返回原先编码数据的数据交换,编码的方法网上也可以搜索到,当要提交数据的时候,http头是需要给出提交内容的长度的,所以程序要根据所提交数据长度自动合成一个声明了长度的提交字符串。另外通过获取到的网页数据搜索到感兴趣主题等信息也是关键的,通过分析html源代码可以找出合适的算法解决。