一个是抓包利器Charles,一个是翻墙神器Shadowcocks,两个工具都是客户端开发必备的,但使用的时候有个尴尬的地方,就是二者不能同时使用。终于试出了二者同时使用(仅限全局模式下)的方法记录一下。
不能同时使用的原因是,二者都通过修改系统的代理来实现抓包或翻墙,打开任一应用的时候都可以观察到“系统偏好设置 - 网络 - 高级 - 代理栏”有修改。Shadowsocks覆盖了Charles的配置的话,使用Shadowsocks时自然用Charles抓不到包。
然而Charles是可以设置外部代理(External Proxy)的,解决方案就是将Charles的外部代理设置为Shadowsocks的Http代理。
步骤:
1. 查看Shadowsocks的Http代理。
Shadowsocks的Mac客户端推荐使用最新版本的 ShadowsocksX-NG (原ShadowsocksX的重写版本),Github上可直接下载最新版安装包。
启动ShadowsocksX-NG后,在菜单栏点击“Http代理设置”可查看代理的地址和端口:127.0.0.1:1087
_
2.将Shadowsocks设置成全局模式。
在ShadowsocksX-NG菜单“代理”下选择“全局模式”(使用"PAC自动模式"Charles同样抓不到包)
3. 设置Charles的外部代理。
启动Charles,点击菜单栏的“Proxy - External Proxy Settings”,
勾选“Use external proxy servers”,并填上刚才查到的代理地址和端口,保存。
4. 重启Charles,能正常抓包。
注意事项:
- 该方法仅对全局模式有效,自动代理模式抓不到包
- 设置完成后抓不到包,请依次检查:
- 是否打开了ShadowsocksX-NG,能否正常翻墙
- ShadowsocksX-NG是否勾选全局模式
- Charles的Proxy菜单下是否勾选External Proxy Settings
- External Proxy Settings里的地址和端口设置是否与ShadowsocksX-NG的“Http代理设置”里显示的一致
- 重启Charles
- 过段时间后上网不正常,报错“Failed to connect to external proxy”等,则可能是Charles设置打开了External Proxy Settings,却没有启动ShadowsocksX-NG。
解决方法:启动ShadowsocksX-NG,或者取消Charles的Proxy栏下“External Proxy Settings”选项
亲测把“全局模式”改为“手动模式”也可以抓到包,这样共存就不用翻墙那么慢了。