如果你不知道CasperJS是什么请看下面的链接
casperJS安装
casperJS API
使用CasperJS模拟登陆,模拟输入账号密码,点击登陆按钮登陆网站,而不是使用保存cookie,提交cookie的方式登陆。
大多数网站的username和password会放在一个form里面,然后submit,人人也不例外,但是有些网站并不会使用上述的方式,such as sina。在新浪的登陆首页没有一个form,所以常规的使用CasperJS的fill()填充提交表单是不行的。原以为使用sendKeys()输入账号密码,然后模拟click会成功登陆新浪微博,但是最后还是失败了(原因应该是微博的防护措施做得比较好吧),但是使用同样的方法模拟登陆人人最后还是成功了!
代码如下
var casper=require('casper').create(); phantom.outputEncoding="GBK"; casper.start('http://www.renren.com',function(){ this.echo(this.getTitle()); this.echo('I am waitting.....'); }); casper.wait(5000,function(){ this.capture('1.jpg'); this.echo('capture is done'); this.echo('input username and password....'); }); casper.then(function(){ this.sendKeys('form#loginForm input[name="email"]','username',{reset:true}); this.sendKeys('form#loginForm input[name="password"]','password',{reset:true}); this.echo('input down'); this.echo('wait for 5s'); }); casper.wait(5000,function(){ this.capture('2.jpg'); this.click('form#loginForm input[type="submit"]'); this.echo('click is done'); }); casper.wait(5000,function(){ this.capture('3.jpg'); this.echo('Over'); }); casper.run();登陆过程中分别截取了三张图片,分别是登陆首页,输入账号密码,点击登陆成功后的图片,因为网速的原因,让casper等一等~
使用sendkeys()比较啰嗦,像人人这种网站也可以直接使用fill()进行模拟登陆
代码如下:
var casper=require('casper').create(); phantom.outputEncoding="GBK"; casper.start('http://www.renren.com',function(){ this.echo(this.getTitle()); this.echo('I am waitting.....'); }); casper.wait(5000,function(){ this.capture('1.jpg'); this.echo('capture is done'); this.echo('input username and password....submit'); }); casper.then(function(){ this.fill('form#loginForm',{ 'email':'username', 'password':'password' },true) this.echo('input down'); this.echo('wait for 5s'); }); casper.wait(5000,function(){ this.capture('2.jpg'); this.echo('over'); }); casper.run();同样是截取了图片,分别是登陆前和登陆后的页面。
尝试了很多次都没能成功登陆微博,革命尚未成功,同志仍需努力!
(以上代码运行时间2015/8/7,以后人人改了页面,也许也就不能登录了~~~)