最近用积分换了一个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);