Skip to content

proxy

关于正向和反向,我总是很容易混乱。

正向代理 - node.http-proxy-middleware - 代理请求接口到另一个接口(所以这里发出的请求接口要写本地 localhost:8080/api/xxx 这样)

My situation: 浏览器请求打到 Charles >> Charles 发 http 请求 >> 如果是本地 host 打回本地 / 如果是线上 port 打到线上

反向代理 - nginx / charles - 代理访问的线上页面域名到另一个本地域名(所以请求接口就依然可以用线上接口)

charles

Mac

https

  1. 信任证书
  2. 打开 charles 的 SSL Proxying settings 并设置 *:*

微信开发者工具请求转发到本地

  1. 微信开发者工具手动设置代理
  2. 打开 charles 的 Tools > Map Remote 并设置 From https://api.xxx.com:443 To http://127.0.0.1:xxx, 截止目前为止,这里只有显著指定 https 到 http 才能被转换

Android

即便安装了证书,可以走 https 连接,但是 charles 还是不能解锁被加密的请求体。是因为从Android7.0以后,系统允许每个应用可以定义自己的可信CA集。有部分应用默认只会信任系统预装的CA证书,而不会信任用户安装的CA证书。对于这种情况,需要 root,把证书装到系统证书所在的文件夹下去。对于自定义了可信 CA 集的应用,比如微信 7.0 以上,只信任自己配置的证书列表了。

ref: - android微信小程序https抓包之路 - 部分APP无法代理抓包的原因及解决方法