当你写爬虫抓不到APP请求包的时候该怎么办?【初级篇】

2019-12-04 15:43:07 浏览数 (1)

前言

文中均为 Android 环境下,实战中可以尝试降低 APP 版本或是尝试抓一下 iOS 版 APP 的包(如果有),但不建议太过依赖 iOS 版 APP

背景:

在逛v2ex的时候看到一个这样的求助帖:

最近在抓包一个 APP:淘最热点 一款新闻 APP 抓不到新闻列表内容 只抓到了新闻图片 其他同类型的 APP 也抓过 没出现这种问题 用的 charles 抓的,证书设置没问题 不知道是不是这个 APP 的新闻列表走了其他协议 有大佬帮忙抓下看看嘛。

分析:

看起来这位同学是遇到了一个APP的请求不走代理,以至于出现抓包时看不到关键的请求的问题,我们先来把这个APP装上,抓个包看看具体情况吧。

抓到的包里确实没有看到新闻列表的请求,除了图中的这些部分以外全都是图片以及CONNECT请求。

Tips:Fiddler在这个地方可以移除图片、CONNECT类型的请求等干扰项哦。

如果抓不到包的话就没法继续写爬虫了,那么这种情况应该怎么办呢?

不要慌,看完这篇文章后你就能轻松通杀90%以上无法通过直接设置系统代理就抓到包的APP。

这里说两种非常简单的方案吧:

1、使用强制全局代理

这里选用Proxy Droid这个工具来实现强制全局代理的效果。注意:需要有ROOT权限才能使用

Proxy Droid的原理是通过iptables将所有TCP连接重定向到代理服务器上,强制性地让APP的HTTP请求通过代理。

在安装Proxy Droid时可以选择clone一份GitHub仓库的代码然后自己编译安装,也可以选择直接在应用商店下载安装,推荐在GooglePlay上下载。

在其他应用商店比如UpToDown和ApkHere上也可以下载到。(安装完之后记得要给它ROOT权限)

使用方法很简单,设置好系统代理后打开Proxy Droid并设置好代理服务器的IP和端口,然后点击开启按钮。

此时再抓包就能抓到这个APP的列表页请求了。

2、使用V**抓包

如果使用强制全局代理方案的时候发现APP内请求速度明显变慢很多或是完全无效的话,可以尝试一下使用V**抓包,这里使用Packet Capture来实现。注意:这个APP不需要ROOT权限

Packet Capture的原理是在本地创建一个V**,使所有请求都从V**中流过,从而实现不适用代理抓包的效果。(这个APP不是开源的,且处理部分都是调用的so库,APP本身只是一个壳而已,想要看代码的话需要有一定的Android逆向知识和经验)

因为没有开源,所以这个APP只能在应用商店里下载,推荐在GooglePlay上下载,酷安也是有的。

界面展示:

Tips:使用Packet Capture抓包时可以只看某个APP的请求,设置方式如下:

点击图中画框的图标,会出现一个搜索界面,输入你要抓包的APP名并点击一下就会开始抓包了。

会过滤掉其他无关APP的请求,只保留你想要的这一个APP的。

那么我们来试试它的效果吧,打开抓包后,在淘最热点的新闻列表里随便翻几下页。

然后切回Packet Capture。

可以看到已经抓到很多请求包了。

找一个大小比平均值小的点进去看看(因为这里有图片,一般缩略图的大小和来源都比较相似,排除掉这些就是需要的那个API的请求了)。

轻松地抓到了它的列表页请求。

不过Packet Capture的缺点也很明显,因为只有手机上的APP,并且没有能从PC上连接的工具或接口。

所以如果被抓包的APP在短时间内发出的请求过多,想要找到需要的那一个就是一件很令人头疼的事情了。

好了,学会了这两招的你,现在可以通杀90%以上抓不到包的APP了。

作者:Loco 来源:知乎

0 人点赞