Python爬虫120例之案例58,手机APP爬虫,“武器库”的准备and皮X虾APP的测试
本篇博客开始,我们将涉足手机 APP 采集领域,这部分的知识我们主要以分析核心接口,编写针对接口的突破代码为主。
这里希望通过前面 57 篇爬虫系列博客的学习,你已经可以通过不同的“手段”,去采集数据。
抓包工具 Fiddler
手机 APP 的采集与网页爬虫的采集一个最大的差异,就是需要抓取 APP 接口地址,因为我们没有谷歌浏览器开发者工具的支持,所以需要使用 Fiddler 工具,进行抓包。
对于任何一款软件,能让其正常运行起来,就完成了 90%的工作。
fiddler 是一款收费软件,官网:https://www.telerik.com/fiddler,有能力的建议购买,不想支付的可以选择其它路径,官方版本具备 30 天的试用期,我们就采用这个版本进行学习吧。
下载的时候,选择 Classic
版本即可,下载地址。
安装过程就比较简单了,基本遵循下一步原则即可,安装完毕会出现如下网页,注意这里先不要关闭,后续我们会用到里面的几个配置文档。
运行界面,呈现如下效果,一般不建议汉化了,因为没有多少复杂操作,多用用就习惯了。
这里有个细节需要注意,当你打开 Fiddler 的时候,它就已经把 HTTP 的代理给修改了,所以会碰到当打开 Fiddler 时,可能无法正常的访问网站,或者访问的速度变慢。
Fiddler 默认是直接抓包的
如果不想要抓包,可以在 File->Capture Traffic
和左下角按钮进行设置,快捷键是 F12。
默认能抓取的是 HTTP
请求的站点,稍后会说明 HTTPS
如何配置。
开启抓包请求之后,去访问网络,会得到如下页面,其中相关字段已经标注在下图中。
上述图片中的内容,一定要留下印象,方便后续的学习。
接下来双击上图任意一个请求,查看右侧窗口内容,下图为你标记一下右边窗口的内容都是什么。
在爬虫的编写过程中使用最多的是 Inspectors
,它表示查看请求和响应的数据内容。
其余功能简单描述如下:
Statistics
: 查看关于 HTTP 请求的性能以及数据分析;AutoResponder
:允许拦截指定规则的请求,可以基于字符串和正则表达式做拦截,大意是将指定请求劫持后,使用本地版本;Composer
: 自定义请求发送服务器,可以新建,也可以直接拖拽一个过去;Filters
:请求过滤规则;Timeline
: 请求响应时间。
这些内容在后续都会逐步使用到。
下面完成最重要的一步,配置 fiddler,使其可以抓取 HTTPS 请求。
选择开始菜单中的 Tool
->Options
-> HTTPS
,然后点击下图 Decrypt HTTPS Traffic
,就可以安装一个证书。
如果本步骤设置完毕了,还是不能获取 HTTPS
请求,可以参考下述 2 篇博客解决相应问题。
- https://www.cnblogs.com/wsy0202/p/12404715.html
- https://blog.csdn.net/baidu_28647571/article/details/107554126
通过共享热点实现 fiddler 对手机 APP 抓包
这个步骤需要电脑可以打开 Wifi,并实现共享网络,如果你使用的是台式机,它可能没有无线网卡,是不能共享网络的(安装外置网卡即可),笔记本电脑无该问题。
然后手机链接共享出去的 Wifi,接下来在 fiddler
中配置如下内容。
确定之后,需要在 fiddler
中找到下图所示的本地 IP,例如下图所示的 IP 地址为 172.24.203.1
,这个地址很重要,结合上述的端口 8888
,一会需要访问该地址去下载一个证书到手机端。
手机链接该 Wifi,并设置如下代理。
此时还不可以,还需要在手机端下载证书,通过手机端默认浏览器打开 http://172.24.203.1:8888
(确保 fiddler
是抓包状态),如果手机端无法打开,重启 fiddler
。
打开之后,如下图所示,点击下图红线位置进行证书下载。
浏览器下载的证书如果点击无法安装,去手机设置里面找到下图内容,每个手机的路径不太一致,基本参考路线是 设置->通用设置->安全和隐私->更多->加密和凭据,然后点击下面的从 SD 卡安装,应该在根目录下可以找到刚才下载的证书,点击安装即可。
安装证书时,需要设置的内容,如下所示。
此时已经完整大部分工作了,如果你的 安卓系统是 7.0 以下,那到此就可以结束了,但如果你的版本比 7.0 高,那还需要继续设置一些配置。
如果不确定是否可以,可以随机打开手机上的 APP,然后再 fiddler
中查看是否可以解开 HTTPS
请求。
环境构建过程中,可以不时重启 fiddler 确保配置生效。
使用 VirtualXposed+JustTrustMe 来绕过 SSL 验证,实现抓包需求
在 github 下载上述两款工具。
VirtualXposed
:https://github.com/android-hacker/VirtualXposed/JustTrustMe
:https://github.com/Fuzion24/JustTrustMe/
无法下载,可以直接在我提供的 地址下载,安装的时候发现 VirtualXposed
最新版本不支持 32 位 APP 了,如果需要抓取 32 位的 APP,需要安装 VirtualXposed_0.18.2.apk
包 。
文件传输到手机上之后,全部进行安装,然后打开 VirtualXposed
,点击下面的按钮之后选择添加应用,模块管理开启 JustTrustMe
,之后选择重启即可。
后续在 VirtualXposed
打开刚才加载的软件,例如本次案例打开的是 “皮皮虾 APP”,开启 fiddler
,成功捕获到如下请求,这个地方就是最终的接口了。
复制接口地址,在本地浏览器打开,得到皮皮虾的视频评论数据。
https://is-hl.snssdk.com/bds/cell/cell_comment/?offset=10&cell_type=1&api_version=1&cell_id=7023269838151751943……其余部分隐藏
拿到接口之后,剩余的逻辑处理部分就比较简单了,步骤依次如下:
- 分析接口参数
- 编写代码采集
精简参数之后得到如下接口格式:
https://is-hl.snssdk.com/bds/cell/cell_comment/?offset=10&cell_id=7023269838151751943&aid=1319&app_name=super
爬虫编码时间
APP 爬虫最难的地方是获取接口,获取到接口并分析之后,如果没有加密参数,那直接采用之前博客中提及的任意一个库或者框架,都可以完成爬虫代码的编写。
收尾时间
==从本篇博客开始,我们将正式进入手机APP爬虫部分,这部分内容大概会编写10篇左右的博客==
今天是持续写作的第 262 / 200 天。
可以关注我,点赞我、评论我、收藏我啦。
- 点赞
- 收藏
- 关注作者
评论(0)