开始讲爬取 APP 的相关工作, 本文先将理论, 下一篇文章讲实战.
首先, 给出答案: APP 的数据肯定是可以爬取, 只是抓取 APP 数据和抓取网页数据时使用的工具和方法有一定的不同.
我在某网站看到一位作者分析研究了 300 个 APP 抓包, 得出如下结论:
50% 的 APP, 通过抓包软件就可以分析出抓取参数并抓取到信息, 这种往往比网站的要简单, 而且反爬也没有网站多.
30% 的 APP, 需要适当的反编译, 分析出加密算法并抓取到信息.
10% 的 APP, 已经加固, 需要脱壳, 然后反编译, 分析出加密算法并抓取到信息.
10% 的 APP, 通过各式各样的签名, 证书, 设备绑定等方法, 隐藏加密算法.
总的来说, 没有不能抓取的 APP, 只是时间成本的问题.
我们知道抓取网页数据可以直接在浏览器上查看它的 HTTP 请求, 通过解析 html 结构, 或者通过获取接口, 甚至需要通过模拟访问网页的方式获取动态的数据. 那么首先需要解决的问题就是如何获取 APP 的请求数据? 答案是 APP 的请求数据是需要通过截获数据传输包的形式进行抓取, 比如使用 Fiddler 截获 HTTP,HTTPS 的数据, 使用 Wireshark 获取更多的封包信息(Wireshark 是一个网络封包分析软件).
- 般来说, 使用 Wireshark+Fiddler 获取软件大部分的请求数据是没有多大问题的, 但是很难获取使用 SSL/TLS 等加密手段加密过的网络数据.
下面讲一下要抓取一个 APP 的数据的流程:
假设要抓简书 APP 的数据, 请求数据主要有 HTTP/HTTPS 两个协议类型. 这里使用 Fiddler 软件就可以, HTTP 请求的是比较容易获取, HTTPS 请求的数据需要在 Fiddler 上安装证书, 安装过程很简单(后面章节会讲如何安装).
操作完之后, 我们在手机上简书 APP 的所有操作 (请求) 的请求数据都会显示在 Fiddler 上. 包括 HTTPH/TTPS 协议数据都能获得到.
当然, 在必要的时候也可以使用 Wireshark 获得简书 APP 的 TCP 数据.
通过以上操作可以取得大部分的数据, 剩下的就是分析数据的工作.
拿到这些原始数据之后, 我们还需要进行大量的清洗工作, 把一些干扰的请求数据排除.
找出获取我们想要获取的数据的接口.
当我们拿到这个接口之后, 大部分的情况下通过这个接口就可以直接拿到数据, 但是也有很多 APP 也会对接口做一些加密, 主要也是在一个参数上做加密.
要做爬虫这个工作, 对于前后端都需要懂.
对于前端, 我们在爬取网站数据时已经知道了.
对于后端, 逆向分析, APP 脱壳, 通信协议等也是需要掌握的.
当然, 很多东西也不是一撮而就的, 需要在不断的实战中提升自己通关的技能(对于反爬虫的人来说就是设关卡的技能).
Wireshark 和 Fiddler 简单介绍:
Wireshark
Wireshark 的前身是 Ethereal,2006 年因为其创始人 Gerald Combs 的跳槽而改名为 Wireshark. 它是一个跨平台的软件, 可以在 unix 系列, linux,mac os,windows 等多个平台上面进行网络协议抓包工作. 同时他也是一个开源软件, 有兴趣的话可以下载源码深入了解. 更多内容可以进官网查看 https://www.wireshark.org
Fiddler
Fiddler 的定位是网页调试工具, 能记录所有客户端和服务器的 HTTP 和 HTTPS 请求, 允许你监视, 设置断点, 甚至修改输入输出数据. 我们还可以为 Fiddler 安装自己所需的插件, 从而更好的利用 Fiddler 的强大功能. 更多内容可以进官网查看 https://www.telerik.com/fiddler
来源: http://www.jianshu.com/p/907ec33c3716