我们先打开Google play 首页 ,点击右上角“登陆”button,即跳到登陆页面
每次我要用爬虫的方式来登陆某个站点的时候,我都会先随便输入一个账号password点击登陆一次,看看登陆之后会post出去的数据有哪些。那么,我认为最方便而又是最经常使用的方法就是:火狐浏览器--web开发人员工具--网络
火狐浏览器-web开发人员工具-网络
如今我们知道了google play登陆是要提交14个參数的,那么接下来我们就要找到这14个參数的值是怎么来的,然后组装成一个post请求。通过分析。事实上大部分的參数事实上在页面的上是能够找得到的!
看图
火狐浏览器-web开发人员工具-查看器(图1)
除了bgresponse这个值,其它全部的值都能够在页面源代码中找到。我就不具体说了。假设做过google 登陆的同学都知道。要实现登陆,关键是要获取到bgresponse这个值。
那么bgresponse这个东西有是什么意思呢?
bgresponse
是专门验证是不是bot的使用了google的botguard
技术,假设不能正确的发送这个值的话,google也会同意你登陆成功。you
wanna know why ? 由于,google 会对这个这个账号以及会话进行跟踪!能够參考stackoverflow的解释。
stackoverflow-botguard(图2)
接下来要做的就是怎样得到这个值了,在页面源代码中,我们能够看到一段js,这段js是在我们点击登陆button的时候调用,当中btresponse这个值就是在这段js中产生的!
!
接着跟踪这段js就能够知道bgresponse事实上是由一个初始化值(我们能够看做是key),和一段js算法。btresponse这个值就是通过这个算法和key得到的!
登陆button触发的js方法(图3)
以下是加密算法以及初始化值key,仅仅是贴出部分截图,代码太长这里就不贴了。
key(图4)
算法(图5)
看到这里,要得到response这个就就非常easy拉。对着图3的代码,我们能够略微改动一下就可以:
function getBgValue() { var bg=''; try { document.bg.invoke(function(response) { bg=response; }); }catch (err) { bg=''; } return bg; }; var bg=getBgValue();//这里就得到了bgresponse的值了。 console.log(bg); phantom.exit();
最后,是不是还有疑问,在python中怎样调用js代码来得到response的值?这里我推荐使用phantomjs!
比如在终端下,输入 ./phantomjs google.js 就可以执行js。所以,在python中相当于调用外部命令一样,调用phantomjs就可以!感谢大家阅读,欢迎大家评论!你们的评论和阅读就是我最大的动力!
源代码:点击下载
假设有兴趣一起学习网页爬虫的同学欢迎加QQ:335418265,找到志同道合的人一起学习拼搏这也是写这篇文章的目的之中的一个!