用uchome做的sns社区,用户每天可以获取一些积分,比如登录、留言、评论等操作。如果没有验证码,我们可以用程序来实现。火狐扩展可以对浏览器窗口进行操作、同时可以在网页跳转过程中保留状态,这为我们开发一个“模拟点击”的程序提供了可能性!
下面是一些代码片段,具体扩展,附在文章后面。
模拟留言
doComment: function() { var done = false; var commentMessage = this.getDoc().getElementById('comment_message'); var commentsubmitBtn = this.getDoc().getElementById('commentsubmit_btn'); if(commentMessage!=null && commentsubmitBtn!=null) { commentMessage.value = this.messageExample.randItem(); if(this.lastUrl != this.getDoc().location.href) { commentsubmitBtn.click();//注释该行,可以屏蔽留言,便于调试 this.lastUrl = this.getDoc().location.href } done = true; } return done; },
获取感兴趣的链接
var allLinks = doc.getElementsByTagName("a"); for(var i=0,linkLen=allLinks.length; i<linkLen; i++) { var linkItem = allLinks[i].toString(); var tmpOffset = linkItem.indexOf('#'); if(tmpOffset != -1) { linkItem = linkItem.substr(0, tmpOffset); } var fullUrl; if(that.pageRegx.message.test(linkItem)) { fullUrl = Url.format(linkItem); if(!that.urlSpace.inArray(fullUrl)) { that.urlSpace.push(fullUrl); } } else if(that.pageRegx.blog.test(linkItem)) { fullUrl = Url.format(linkItem); if(!that.urlBlog.inArray(fullUrl)) { that.urlBlog.push(fullUrl); } } else if(that.pageRegx.album.test(linkItem)) { fullUrl = Url.format(linkItem); if(!that.urlAlbum.inArray(fullUrl)) { that.urlAlbum.push(fullUrl); } } else if(that.pageRegx.poll.test(linkItem)) { fullUrl = Url.format(linkItem); if(!that.urlPoll.inArray(fullUrl)) { that.urlPoll.push(fullUrl); } } }
自定义的数组方法
Array.prototype.randItem = function() { var item = 0; if(this.length > 0) { item = this[Math.floor(Math.random()*10000)%this.length]; } else { item = ''; } return item; }; Array.prototype.inArray = function(needle) { var hasExisted = false; for(var i=0,len=this.length; i<len; i++) { if(needle.toString() == this[i].toString()) { //一定要用toString(),this[i]是一个对象 hasExisted = true; break; } } return hasExisted; }; Tool = { notRepeatItem: function(arrStack, arrRepeat) { var result = ''; var goon = true; var hits = 100000; var tmpitem; do { tmpitem = arrStack.randItem(); if(!arrRepeat.inArray(tmpitem)) { result = tmpitem; goon = false; } hits--; } while (goon && hits); return result; } };
注:
把下载的xpi文件的后缀改为zip,就可以看到源代码了。
安装成功之后,在火狐状态栏右侧会有“homezilla”的框,鼠标点击开始执行,再次点击停止运行。