微博批量点赞脚本
2017-06-22(四)
by chenjia.me
原理
利用js直接点击点赞按钮,简单快捷
第一版本
新浪微博没有jQuery,那么只能用原生的JS,简单的实现方式如下:
var list=document.getElementsByClassName('S_txt2');
var j=0
for(var i=0;i<list.length;i++){
if(list[i].tagName=="A"){
if(list[i].title=="赞"){
//var t=setTimeout(out(list[i]), 100*j);
//var r=self.setInterval(out(list[i]), 100*j);
setInterval(list[i].onclick=(function(i){
return function(){
console.log(list[i])
}
})(i),1000*j)
j++
//list[i].click();
}
else if(list[i].title=="取消赞"){
//console.log("取消赞")
}
}
}
function out(a){
a.click();
}
但是这种方式,会触发新浪微博的限制,所以我们要考虑使用队列来进行中断。JS是单线程没有sleep()
功能的函数,所以我们使用一种新的方式来实现。
第二版本
使用队列来延迟:
class IntervalQueue{
constructor(ary){
this.list = ary;
}
queue(item){
this.list.push(item)
}
dequeue(cb){
cb(this.list.shift())
}
}
const oldlist = Array.prototype.slice.call(document.getElementsByClassName('S_txt2')).filter(a =>a.tagName ==="A");
const list = oldlist.filter(a =>(a.title ==="赞"||a.title ==="取消赞")&&a.title!=undefined);
const iq = new IntervalQueue(list);
setInterval(function () {
iq.dequeue(function (item) {
if(item==undefined)
return
if(item.title === "赞"){
item.click();
//console.log("zan")
}else {
console.log("cancel")
}
})
},10000)
最后的10000是毫秒,根据时间限制可以进行相应的调整。
使用公共CND进行加速
2014-10-07(二)
by chenjia.me