AnyProxy 是一个开放式的 HTTP 代理服务器,也可以像 Charles 一样用来抓包。
最初看到这个项目是在 这个 微信小游戏外挂项目中,外挂的思路是,改变 HTTP/HTTPS/WebSocket 请求/响应的内容,使得在游戏中能够快速分辨答案。以 这个 为例,AnyProxy 能够对 HTTP 请求和响应进行操纵,直接在响应的数据中,在正确的选项前加了个勾号,玩家就能轻松辨别了,因为正确答案本身就可以通过抓取 HTTP 请求的数据来得到。
本文主要讲解如何用 AnyProxy 抓取 iPhone 以及 Mac 电脑的 HTTP/HTTPS/WebSocket 请求数据。(项目中的 AnyProxy 作为一个 npm 模块来使用,本文的抓包基于 AnyProxy 是一个全局的命令行模块)
安装
首先是安装,非常简单:
npm install -g anyproxy
启动:(代理 HTTP/HTTPS/WebSocket)
anyproxy --intercept --ws-intercept
这个时候浏览器打开 localhost:8002
,所有请求便会显示在上面。
iOS
要代理 HTTPS,需要安装证书。参考 iOS 系统信任 CA 证书
iOS >= 10.3 还要增加一步,信任证书。参考 iOS >= 10.3 信任 CA 证书
然后在手机上打开 settings,找到连接的 wifi(和 PC 需一个网段),设置 HTTP PROXY,选择 Manual,Server 为 PC 的局域网 IP,Port 为 8001
Mac
要代理 HTTPS,需要安装证书。参考 OSX 系统信任 CA 证书
然后需要配置代理。参考 配置 OSX 系统代理
在配置代理的时候,如果要捕获 HTTPS 请求,需要把 HTTPS 的选项同时钩上(这一点官网并没有提到)