web爬虫之登录google paly 商店
我们先打开Google play 首页 ,点击右上角“登陆”button,即跳到登陆页面
每次我要用爬虫的方式来登陆某个站点的时候,我都会先随便输入一个账号password点击登陆一次,看看登陆之后会post出去的数据有哪些。那么,我认为最方便而又是最经常使用的方法就是:火狐浏览器--web开发人员工具--网络
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ2hTYURpTg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
火狐浏览器-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)
watermark/2/text/aHR0cDovL2Jsb2cuY3Nkbi5uZXQvQ2hTYURpTg==/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70/gravity/Center" alt="">
算法(图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,找到志同道合的人一起学习拼搏这也是写这篇文章的目的之中的一个!
web爬虫之登录google paly 商店的更多相关文章
- 第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码
第三百三十五节,web爬虫讲解2—Scrapy框架爬虫—豆瓣登录与利用打码接口实现自动识别验证码 打码接口文件 # -*- coding: cp936 -*- import sys import os ...
- 第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录—获取Scrapy框架Cookies
第三百三十三节,web爬虫讲解2—Scrapy框架爬虫—Scrapy模拟浏览器登录 模拟浏览器登录 start_requests()方法,可以返回一个请求给爬虫的起始网站,这个返回的请求相当于star ...
- 如何在Google Play商店发布多个版本apk
原文:http://android.eoe.cn/topic/android_sdk 多种apk的支持是一个特点在Google Play,它允许你发布不同的APKs为你的应用匹配不同尺寸的设备.每个A ...
- 第三百二十二节,web爬虫,requests请求
第三百二十二节,web爬虫,requests请求 requests请求,就是用yhthon的requests模块模拟浏览器请求,返回html源码 模拟浏览器请求有两种,一种是不需要用户登录或者验证的请 ...
- 识别User Agent屏蔽一些Web爬虫防采集
识别User Agent屏蔽一些Web爬虫防采集 from:https://jamesqi.com/%E5%8D%9A%E5%AE%A2/%E8%AF%86%E5%88%ABUser_Agent%E5 ...
- APP如何发布到Google play 商店
APP如何发布到Google play 商店?以及有哪些需要注意的点 2015-05-13 10:07 19773人阅读 评论(1) 收藏 举报 分类: iPhone游戏开发(330) 链接:ht ...
- Web爬虫入门
1.0示例学习:Web爬虫 public class WebCrawler { // 种子url private static String url = "http://www.cnblog ...
- 360 chrome不能登录Google账户
用过Google chrome,枫树,360 chrome国际版,今天还是回到Google chrome了. 因为除了Chrome自己,其他的都不能正常登录Google账户(偶尔偶尔一次可以,直到今天 ...
- android手机关于google play商店闪退的解决办法
部分android手机没有安装google play商店,这个可以通过类似“机锋”.“360手机助手”等应用市场下载. 安装google play商店后,点击打开却一闪而过:这个问题是因为手机没有安装 ...
随机推荐
- MYSQL:WARN: Establishing SSL connection without server's identity verification is not recommended.
WARN: Establishing SSL connection without server's identity verification is not recommended. Accordi ...
- nginx如何防止高负载造成服务器崩溃
nginx-http-sysguard模块 一.作用 防止因nginx并发访问量过高或者遭受攻击造成服务器宕机,可根据负载设置界面跳转. 二.安装配置 1.下载模块软件包 wget https:/ ...
- Java实现深拷贝和浅拷贝
1.类实现Cloneable才可以进行对象拷贝 2.Cloneable只实现浅拷贝,需要实现深拷贝的必须要重写clone()方法 3.利用反序列化也可以实现深拷贝,但是反序列化耗时较长 n.浅拷贝是指 ...
- day23 01 类的命名空间
day23 01 类的命名空间 一.初识面向对象复习 定义类: class 函数:方法 动态属性 变量:类属性 静态属性 过程: (1)_init_方法:初始化:def _init_(self,参数 ...
- 【HIHOCODER 1105】题外话·堆
描述 小Ho有一个糖果盒子,每过一段时间小Ho都会将新买来的糖果放进去,同时他也会不断的从其中挑选出最大的糖果出来吃掉,但是寻找最大的糖果不是一件非常简单的事情,所以小Ho希望能够用计算机来他帮忙计算 ...
- SQL Server 上关于同一张表里的三级联动
或许这并不能叫做三级联动,三级联动是很容易实现的东西,有明确的层级关系,一般分开三张表存储.我在公司的项目里遇到这样一个问题,同一张表里面,有分公司,客户,项目3种关系,他们的层级关系是这样:分公司- ...
- Android记录2013年10月20日
1. ailed to fectch URl https://dl-ssl.google.com/android/repository/addons_list.xml, reason: Connect ...
- Selenium加载Chrome/Firefox浏览器配置文件
Selenium启动浏览器时,默认是打开一个新用户,不会加载原有的配置以及插件.但有些时候我们可能需要加载默认配置. 一.Chrome浏览器 1.在Chrome浏览器的地址栏输入:chrome://v ...
- Halloween Costumes(区间DP)
Gappu has a very busy weekend ahead of him. Because, next weekend is Halloween, and he is planning t ...
- Python的3种格式化字符串方法
Python中有3种format字符串的方式: 传统C语言式 命名参数 位置参数 1. 传统C语言式 和c语言里面的 sprintf 类似,参数格式也一样 title = "world&qu ...