大众点评抓包问题汇总
新的工作任务是对大众点评进行一些技术操作(都懂的),打开charles进行抓包,结果发现可抓到的信息很少,还有很多奇奇怪怪的包格式。


在网上查找相关资料,得知美团系的平台,使用了一种叫 "移动长连接" 的技术导致抓不到包,接下来对移动长连接进行一番剖析。
根据查询的资料,所谓移动长连接,指的是在app运行之初,通过tcp连接打开的一个连接通道,在app使用中,后续访问都通过此通道,自定义出交互协议进行通讯。不过美团的技术团队也考虑了在特殊情况下,长连接无法使用的情况,在这种时候,他们会执行第二套连接方案,即使用UDP面向无连接的特性提供另一条请求通道,或者绕过代理长连服务器之间向业务服务器发起HTTP公网请求。
以下是移动长连接的实现图:

****换言之,就是在移动长连接无法使用的情况下,系统会接收来自http公网的请求,这便为我们抓包工作提供了可趁之机。
这样实现抓包就有了两种方式去实现,一个是通过hook手段,使长连接无法工作,继而只能通过http的方式发送,第二种就是tcp通道发生故障会切换到http请求。这个可以通过屏蔽ip来实现。
【屏蔽ip途径】
首先移动端长连接与服务器的通信肯定是TCP协议;然后由于是长连接,那么移动端肯定不会轻易的去断开这个连接,也就是不会发送fin包,有了这两个特征就可以开始筛选ip了。
pc端的话用 wireshark 就完事了;
首先打开模拟器,然后打开wireshark,选择网卡就开始抓包了,然后打开美团外卖App,搜索一个关键字;
首先你搜索一个关键字肯定会得到很多结果,那么就可以断定返回的数据包应该比较大,而且根据上图还可以知道是加密过的,那么就很好找了,我这里找到了。

linux命令如下:
iptable -A INPUT -s ..**.181 -j DROP #屏蔽
iptable -D INPUT -s ***.**.***.181 -j DROP #解除屏蔽
这命令可以在安卓上直接生效,linux可能需要 service iptables save 来生效。

接着就可以直接使用charles进行抓包了。
此种技术借鉴自https://blog.csdn.net/weixin_29614223/article/details/113043471,因工作环境问题,我们主要使用第二种hook长连接的方式来实现。
除此之外,还可以通过设置全局代理,只转发http请求的方式,来让app弃用tcp通道。
下载postern.apk(google pay商店),设置全局代理,只转发http请求,再用charles抓取请求,即可发现http请求就被抓到了。

浙公网安备 33010602011771号