最近用积分换了一个2345的抱枕,皮面比较脏,不过放在办公司还好。
因为SAE收费,所以之前的SAE上的Python签到也不能运行了,所以只能想起来才会去2345签到一次,有点影响本来就很少的收入啦,haha.
看到微信可以绑定2345账号,并且登录和签到根本不需要验证码,抓了下url,大概格式如下:
http://jifen.2345.com/m/guess.php?ctl=login&act=checkBind&openid=xxxxx&urlParam=xxxx&t=xxxx&s=xxxx
xxxx都是特定的内容,用于用户的验证,这样用户可以直接通过微信登录不需要用户名密码了
最近看到同事用phantomjs进行网页截图,很好很强大,简单研究了一下,想用它写个签到脚本。
于是有了下面的粗糙代码,写的不好。主要是phantomjs有自身的局限性,比如不能像java Python那样按照代码的顺序执行,而是像Javascript一样,是基于消息驱动的。代码的执行都是异步化的。所以有些痛苦,感觉用于自动化测试应该效果不很理想。
运行方式:./phantomjs 2345.js
//设置输出编码
phantom.outputEncoding = 'gb2312';
var page ;
//绑定微信号登录,防止验证码的问题
var myurl = "绑定2345微信后可从微信客户端获取";
var shoujiurl = "http://shouji.2345.com/index.php";
var renderPage = function (url) {
page = require('webpage').create();
page.onConsoleMessage = function(msg, lineNum, sourceId) {
console.log('CONSOLE: ' + msg + ' (from line #' + lineNum + ' in "' + sourceId + '")');
};
page.onNavigationRequested = function(url, type, willNavigate, main) {
if (main && url!=myurl && url!=shoujiurl) {
myurl = url;
console.log("redirect caught")
page.close()
setTimeout('renderPage(myurl)',1); //Note the setTimeout here
}
};
page.open(url, function(status) {
if (status==="success") {
console.log("The final url is :"+myurl);
//pc推广
page.evaluate(function() {
var href= $(".aSignBtn").attr("href");
console.log("href = "+href);
if($(".aSignBtn").attr("onclick")){
$(".aSignBtn").attr("onclick",href);
$(".aSignBtn").click();
}else{
console.log("pc already checked");
}
console.log("pc checked...");
});
//手机推广
page.open(shoujiurl, function(status) {
page.evaluate(function() {
console.log($(".signBtn").html());
$(".signBtn").click();
console.log("shouji checked...");
});
});
} else {
console.log("failed")
phantom.exit(1);
}
});
}
renderPage(myurl);
setTimeout(function(){
page.close;
page = require('webpage').create();
page.settings.userAgent = 'Mozilla/5.0 (Windows NT 6.2) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/27.0.1453.116 Safari/537.36 2345chrome v2.3.0.2200';
//console.log('The default user agent is ' + page.settings.userAgent);
page.open("http://www.2345.com/?k718881649",function(status){
//page.render('index.png');
console.log("visit index page...");
phantom.exit(1);
});
},15000);