前言
我们知道爬虫爬取内容前要先获得数据进行分析, 也就是所谓的抓包. 如果我们爬取某个手机app也需要抓包. 今天我们来解决手机app在电脑抓包的问题.
正文
原理解析
我们手机的app会向远程服务器请求数据, 然后填充到我们的手机app里面, 这也就是为什么手机app每天会有不同的内容, 这些内容就是app实时去远程服务器请求的数据.
这些数据传输的协议基本上是使用http或者https, 格式一般都是json格式. 也就是说和我们电脑打开的网站使用的传输协议一致, 数据格式一致. 这时候我们就可以把app当作是网页端的一个网站.
很多人抓取网站数据时, 会使用大名鼎鼎的fiddler软件. 而我们也是利用这个软件进行抓包.
下图就是整个流程, 说白了就是让手机app被我们的电脑代理, 让数据先经过电脑再流转到服务器. 这样我们就能在电脑上抓包手机app的数据. 前提是电脑手机必须在同一个wifi下面
设置fiddler
找到电脑的ip地址
设置手机
也是就给我们的手机设置一个代理, 让手机访问代理, 这个代理ip就是我们的电脑ip(192.168.31.45), 代理的端口就是fiddler监听的端口(8889)
下载证书
完成上面的步骤后, 我们在手机浏览器访问 <电脑ip>:<fiddler端口>
就会弹出一个需要下载证书的页面
下载完成后, 手机的所有请求都会流经电脑, 然后发给服务器. 这样我们就完成了抓包的工作.
疑问: 为什么需要在手机下载一个fiddler的证书? 答: 因为现在大部分都是使用https协议, 也就是说有个ssl加密的过程. fiddler如果想抓取数据, 那么它必须能解密ssl. 所以让手机app使用fiddler的安全证书, 这样fiddler就能监控手机app数据. 对于远程服务器来说, fiddler把自己伪装成一个客户端, 使用从手机app获取的数据与远程服务器通信.
还原手机状态
抓包结束后, 需要手动还原手机状态, 方法如下:
- 把手动代理给去掉.
总结
经过以上几步, 我们就可以使用电脑抓包手机的所有app数据, 有利于我们编写爬虫. 总的来说就是把我们电脑当成了代理, 让数据先经过代理再去访问远程服务器.