如何用Python爬取移动端数据


如何用Python爬取移动端数据

文章插图
 
一、解释一下App抓包原理
1.客户端向服务器启动https请求
2.Charles拦截客户端的请求 , 伪装成客户端向服务器进行请求
3.服务器将服务器的CA证书返回给客户端(实际上是捕获工具)
4.包捕获工具拦截服务器的响应 , 获取服务器证书的公钥 , 然后生成自己的证书 。
替换服务器证书并将其发送到客户端 。(在此步骤中 , 包抓取器获取服务器证书的公钥)
5.在客户端收到服务器的证书(实际上是抓取工具)之后 , 将生成对称密钥 。
使用包抓取工具的公钥加密 , 并将其发送到“server”(包抓取工具)
6.Charles拦截客户端的响应 , 用自己的私钥解密对称密钥 , 然后用服务器证书公钥加密 , 发送给服务器 。发送到服务器 。(在此步骤中 , 数据包捕获工具获取对称密钥) 。
7.服务器用自己的私钥解密对称密钥 , 向“客户端”(Charles)发送响应
8.Charles拦截服务器的响应 , 替换成自己的证书后发送给客户端
爬虫的本质是“欺骗”服务器 , 各种反爬虫手段都是增强信任的过程 , 不断地让服务器相信你是自己的人 。
就是说如果你被抓回来 , 你就是个不会撒谎的人 , 你会被发现的 。
二、App数据好抓吗?
应用程序数据既简单又困难 , 行家重点今天分享简单的部分 。
简单:应用程序的数据比Web端数据更容易抓取 , 基本上是http , https协议 , 返回的数据格式相对规则 。大多是json格式
困难:1.需要反编译知识 , 需要分析加密算法;2.需要脱壳+反编译;3.需要破解各种类型的签名、证书 。
所以一个爬虫类工程师慢慢需要掌握以下技能:JAVA编程基础、Android编程基础、
app逆向、app脱壳、破解加密
三、需要用到的抓包工具
fiddler
mitmproxy
Charles
四、Fiddler安装和使用
首先先下载Fiddler(下载路径关注我 , 私信FIddler,发给你们哦)
安装:一路Next
主要界面介绍:
如何用Python爬取移动端数据

文章插图
 
会话列表界面:
如何用Python爬取移动端数据

文章插图
 
单击会话列表接请求后 , 监视面板中将出现以下两个接口:
请求面板:
如何用Python爬取移动端数据

文章插图
 
响应面板:
如何用Python爬取移动端数据

文章插图
 
本地CA证书安装
切换到 HTTPS 选项卡 , 勾选 Capture HTTPS CONNECTs , 勾选 Decrypt HTTPS trafic , 会弹出安装证书的提示 。一直到点是确认安装就足够了 。
重启fiddler , 点击右侧Actions , 能看一个下拉菜单 , 点击 Export Root Certificate to Desktop , 此时证书会生成到桌面上 , 名为 FiddlerRoot.cer , 点OK保存 。
点击安装 。
连接手机以捕获数据包所需的配置:
先设置PC端fiddler:
如何用Python爬取移动端数据

文章插图
 
之后 , 手机需要访问本地主机ip+设置的端口 , 安装证书 , 并在证书安装成功后抓取 。
上面是关于小提琴的安装和简单使用 。在高级应用中有许多SAO操作 。
五、Mitmxy安装和使用:
Mitmproxy与linux和windows版本略有不同 。
linux下借助pip,可以一键安装:pip install mitmproxy
windows 下需要安装Microsoft Visual C++ V14.0以上,之后再使用pip install mitmproxy安装
Mitmproxy有三个主要组成部分:
mitmproxy - linux下的抓包组件
mitmdump - Python交互
在mitmweb窗口下可视化接口工具
Windows下只支持后两个组件 。
证书配置
您可以在安装目录中看到以下文件:
如何用Python爬取移动端数据

文章插图
 
其中:
如何用Python爬取移动端数据

文章插图
 
window安装证书:mitmproxy-ca.P12 , 一直到最后在此期间 , 将弹出警告并单击“确认” 。


推荐阅读