Python爬虫120例之案例58,手机APP爬虫,“武器库”的准备and皮X虾APP的测试
【摘要】 本篇博客开始,我们将涉足手机 APP 采集领域,这部分的知识我们主要以分析核心接口,编写针对接口的突破代码为主。这里希望通过前面 57 篇爬虫系列博客的学习,你已经可以通过不同的“手段”,去采集数据。 抓包工具 Fiddler手机 APP 的采集与网页爬虫的采集一个最大的差异,就是需要抓取 APP 接口地址,因为我们没有谷歌浏览器开发者工具的支持,所以需要使用 Fiddler 工具,进行抓包...
本篇博客开始,我们将涉足手机 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 天。
可以关注我,点赞我、评论我、收藏我啦。
【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
作者其他文章
评论(0)