Python爬虫120例之案例58,手机APP爬虫,“武器库”的准备and皮X虾APP的测试

举报
梦想橡皮擦 发表于 2022/02/16 13:58:33 2022/02/16
【摘要】 本篇博客开始,我们将涉足手机 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 最新版本不支持 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……其余部分隐藏

拿到接口之后,剩余的逻辑处理部分就比较简单了,步骤依次如下:

  1. 分析接口参数
  2. 编写代码采集

精简参数之后得到如下接口格式:

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

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。