Handy 发表了一个小记
如何用 Charles 抓包

起因是我每次在京东点外卖都要不停的领券,这项工作希望能被脚本接管。

然后就找起解决方案,主要有两个方案,一个是用软件模拟手点击(可以通过编程,也可以通过 AI),另一个是比较传统的抓包后进行 API 分析。

我选择第二种方案,在抓包工具上, macOS 上的 Charles 更为方便。WireShark 曾经也用过,感觉不是特别好用。

主要分为 HTTP 和 HTTPS 的抓包,HTTP 的比较简单(Proxy -> macOS Proxy,Proxy -> Proxy Settings -> Enable Transparent HTTP Proxy, 就可以抓电脑的包了),HTTPS 多了一步证书的安装。下面我们介绍如何抓手机的包,在下使用的是 Xiaomi 14。

  1. Proxy -> SSL Proxy Settings -> Enable SSL Proxying & Include Location like *:443 .
  2. Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser, then you can obtain the IP & port of the computer.
  3. On your phone, you should setup the network and SSL certificate:
    1. 设置 -> WiFi -> 代理 -> 手动,然后填写上述 IP 和端口号
    2. 手机首次访问网络时, Charles 会出来提示,需要你点击 Allow
    3. 手机浏览器访问 chls.pro/ssl 下载 CA 证书
    4. 设置 -> 隐私与安全 -> 安全 -> 更多安全设置 -> 加密与凭据 -> 安装证书 -> CA 证书
  4. 操作手机 App,就能在 Charles 上看到请求列表了,左侧面板按域名排列分类,右侧面板 Contents 标签页下面,上面是请求,下面是响应。

Charles 抓包演示

好巧不巧,试了几下,抓到的包的请求体中的载荷都是加密的,HTTPS 的加密被中间人破坏了,但本身只有客户端与服务器两个人知道的加密却还是没法破译。

那接下来的方案,肯定就是破解客户端的加密方法及密钥了,这就是逆向工程,更庞大的工作量了,今日止步于此。

comments powered by Disqus