你好,我是征哥,今天分享如何解决部分 APP 通过代理无法抓包的问题。为了防止外部平台的爬取,设置为付费,你可以阅读 71%。

主要内容:

  • 背景

  • 代理是什么?

  • 为什么某些 APP 不走代理

  • 解决方案

  • IPhone 实操

  • 软件下载方法

背景

最近想做一个自动化任务,但是不太想使用 appium,太麻烦了,而且可移植性差,于是我决定模拟 HTTP 请求来实现自动化,于是在电脑开启了代理之后,然后手机 WiFi 上设置代理,发现很多 APP 都可以抓包,唯独我想自动化的那个 APP 无法抓包,更奇怪的是,刚打开的时候,一些请求可以抓到,后面的完全抓不到。

问题在脑子里停留了几天,今天终于有了解决方案。

代理是什么?

代理是一个中间人。

fa4968d30943871f8b1de534825e5321.png

没有代理的时候,客户端只接请求服务器,有了代理,客户端就请求代理,代理再去请求服务器。服务器返回时先返回给代理,代理,返回给客户端。

有了代理我们就可以看到客户端的请求数据,和服务器的返回数据。常见的代理软件:Fiddler 、Charles、Burp Suite Professional,我最常用的就是 Burp Suite Professional,它是 CTF 最常用的抓包工具,内部集成不少实用工具,Java 开发,轻量级,Windows 和 Mac 通用,文末提供下载。

现在电脑上启动 Burp(Fiddler、Charles 也可以),设置好代理,就启动了一个 HTTP 代理服务器,IP 为 XXXXXX 端口为 XX,你可以对某些应用单独设置代理,也可以设置全局代理,设置全局代理之后,很多应用就自动使用代理了。

如果是 Mac 或 Linux,在命令行使用代理的话,还需要执行export http_proxy=http://127.0.0.1:1087;export https_proxy=http://127.0.0.1:1087;

如果您使用的是手机等移动设备,可以在当前 Wi-Fi 设置处告诉系统你要使用 HTTP 代理。

设置好代理之后,客户端发起 HTTP 请求的时候,就不会再去进行 DNS 解析去连接目标服务器,而是直接连接代理,然后代理服务器会与客户端建立连接,再然后代理服务器根据请求信息再去连接真正的服务器。

为什么某些 APP 不走代理

一般情况下,只要我们在系统层面上设置了代理,客户端在进行 HTTP 请求时就会走系统代理。

但是有例外,有些 app 默认就是不走系统代理,或者某些关键的请求不走代理,实际情况还真不少,这种情况下,设置了代理也没用。

解决方案

知道了为什么不走代理,就有了解决方案。

有两种方案,推荐方案二,能简单高效解决问题。

方案一

适合在 PC 电脑上进行。通过修改 host 文件,让客户端认为代理服务器就是目标服务器。比如客户端请求 somedomain.com,我们的代理服务器是 192.168.3.9:80,那就在 host 里面添加 "192.168.3.9 somedomain.com" 然后代理服务器收到请求后在转发到 somedomain.com。

方案二

适合移动设备或 PC,简单来说就是使用 VPN 将终端设备的流量转发到代理服务器。VPN 软件上添加一个 HTTP 服务器,就是代理服务器的 IP 和 端口,然后设置全局代理,这样所有的请求都会走 VPN,也就是走代理服务器了。这样就可以抓包。亲测有效。

IPhone 实操

1、电脑上打开 Burp Suite,设置好代理,如下图所示:

f8574fdde3d56c96cae21405dc886db1.png

2、确保手机和电脑上的代理处于同一个网路,简单来说就是连同一个 Wi-Fi。

然后手机上浏览器打开 "http://192.168.31.72:8080",点击 CA Certificate 安装证书,如下图所示:fadb6182f38df4f9a7e7f583b8bf50cd.png

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐