9.15号才开学,前几天闲的蛋疼,跟一朋友聊起了“超级课程表”。我一直以为他们是跟每个高校有合作,才能取得各高校的数据库数据。后来百度了一下发现原来他们不是通过这个方式,而是直接用学生输入的用户名和密码来访问各高校的教务网获取课程表之类的相关数据。这样就有一个问题让我很感兴趣,各教务网的验证码系统他们是如何攻破的。然后我又百度了一下验证码的破解与反破解原理,想拿QQ空间的留言板来对比着理解一下,结果意外发现不知道什么时候QQ空间的留言板不再需要输入验证码即可发表留言。。。然后我思绪突然一转就把验证码的事给抛到一边了,想能不能自己写个自动刷QQ空间留言的工具?
根据自身的知识储备我找到了一条思路,利用SeleniumIDE录制留言过程,然后把脚本转换成Java代码。接着就是一步步的调试和修改,当天晚上6点开始动手,到凌晨两点的时候程序基本跑通,可以实现自动留言,兴奋的一整夜没睡着。但是因为QQ空间留言板的CSS比较复杂,我当天只实现了通过点击表情按钮来实现留言,还无法直接输入任意字符串作为留言内容。
后来想起来以前见过有人提供刷空间留言服务来赚钱的,于是自己也想尝试一下。加了好多QQ群,像什么初中生群呀,00后群呀,00后富二代群呀。。。刚想到这个点子的那个晚上在群里问了一下,有个孩子跟我说市场很有需求,结果我信了。我想这么晚了,估计他们都睡了,明天再开始宣传吧~然后自己就躺在床上开始YY,心想如果真的有市场,一个孩子我给他刷个几千条赚一百块,一天可以赚好几百,那不是要发财了?越想越兴奋,然后这个晚上又一整夜没睡着。。。接下来的几天我天天给那些小阔少爷阔小姐私聊发广告,可是到头来要么不鸟我,要么问我想表达什么,要么“呵呵”,要么“傻X,我才不上你的当了!!”。。。
之后无奈放弃了这个念头,但是不想让这个程序就死在我的MyEclipse IDE里面。所以决定把它做成一款软件。想想之前也有过类似想法,但因为知识储备不足一直没能实现,现在何不尝试一下了。于是又开始码代码。
改善代码的过程中碰到最棘手的问题就是前文提到的,如何直接输入任意字符串作为留言内容,而不是单一的表情。本来这应该很简单的,用下面这行代码可以解决。
selenium.type(locator, value);
但是这个是针对输入框、复选框、下拉框等才有效的一个函数,QQ空间留言板的那个输入框不是一个input,而是放在一个<iframe>下面的可编辑的<body>下面的一个<div>.所以我尝试了N次都不能实现以字符串作为留言内容的功能,期间一度情绪暴躁。。。
后来到一个软件测试群里面去请教了一下,慢慢摸索慢慢尝试终于被我踩到狗屎了。
selenium.selectFrame("veditor1_Iframe");//进入一个iframe selenium.runScript(content);//留言内容
首先得进入那个iframe里面,然后使用selenium.runScript(String script)这个函数就可以达成目的。说实话我也不清楚为什么这个函数可以,也没谁告诉我用这个函数,只是真 的挑了个函数试一下,结果“留言成功”。意外欣喜之情难以言表。。。
再啰嗦一下这个iframe,按常理来讲Selenium IDE应该能录下我输入文字作为留言内容的这段代码,可是就是这个iframe捣蛋,搞得录出来的代码只有我“点击”发表按钮那一行。
selenium.click("id=btnPostMsg");
所以我才一步步摸索出,怎么调用Selenium RC的API才能实现以字符串作为留言内容的功能。
之后的路就相对平坦一点了,用SWING给这个程序套了个又丑又土的GUI壳子,然后整个项目打包成一个Jar文件。然后再用exe4j将其转化成一个.exe文件,但是这样还是不能让这个程序在没有安装JRE的机器上跑,所有又找了个瘦身过的JRE,加上那个Jar文件一起打包成一个.exe文件。这样就终于可以在没有安装的JRE或者JDK的机器上运行了。终于可以一次编译,满世界的跑。
可是当我把这个程序放到同学的电脑上测试的时候,一秒钟就被360这条狗当成木马病毒给删掉了。我去你大爷。国人的原创积极性就是这样被打消的,狗一样的360。没办法,正好我也想把这个软件搞的正式一点,于是就用Inno Setup给这个程序做了个安装包,这样再重新安装到有360的机器上面,它就一声都不叫了。这样的工作做下来,三天中秋假期基本没怎么休息,全是在操心这事。昨晚上弄好了,又兴奋地一夜睡不着。。。凌晨3点穿个裤衩坐在阳台上点支籣州,想一个魂淡妹子。。。
下面是本软件1.0.0版的下载地址,百度云盘下载下来如果文件名乱码重命名一下正常解压缩就好。好用的话帮忙转发支持一下,谢谢。
http://pan.baidu.com/s/1hqqtjW4
验证码的事,以后再说吧~~~