Mac端Safari浏览器Charles Proxy无法捕获localhost流量问题求助
解决Mac Safari下Charles无法捕获localhost流量的问题
我之前也踩过这个坑,折腾了好半天才搞定,给你几个亲测有效的方案,按顺序试试:
检查系统代理的排除列表
Safari的代理设置是继承系统网络设置的,默认可能把localhost、127.0.0.1这类本地地址加入了「忽略代理」的名单:- 打开Safari偏好设置 → 高级 → 点击「代理」栏的「更改设置」(会跳转到系统偏好设置的网络面板)
- 选中你当前正在使用的网络(比如Wi-Fi),点击「高级」→ 切换到「代理」标签页
- 找到「忽略这些主机和域的代理」,如果里面有
localhost、127.0.0.1或者你的本地IP,全部删掉,然后保存设置
强制本地请求走网络代理(Charles Rewrite)
有时候即使改了系统设置,Safari还是会偷偷绕过代理抓本地请求,这时候可以用Charles的Rewrite功能强制转成非本地地址:- 打开Charles,顶部菜单选择「Tools」→「Rewrite」,点击「Add」新建一个规则集
- 在「Rules」标签页点击「Add」添加规则:
- 「Location」选择「URL」,匹配条件填「Contains」,值填
localhost(如果是127.0.0.1就填这个) - 切换到「Action」标签页,选择「Modify Host」,把值改成你的本地IP(比如
192.168.1.105,可以在终端用ifconfig或者ipconfig getifaddr en0查看)
- 「Location」选择「URL」,匹配条件填「Contains」,值填
- 确保你的本地服务是监听
0.0.0.0而不是仅127.0.0.1(比如Node.js服务启动加--host 0.0.0.0,Flask用app.run(host='0.0.0.0')),然后用本地IP访问服务,Charles就能正常捕获流量了
确认Charles的SSL代理配置(针对HTTPS请求)
如果是本地HTTPS请求抓不到,还要检查Charles的SSL代理设置:- 顶部菜单选择「Proxy」→「SSL Proxying Settings」
- 点击「Add」,在「Host」填
localhost,「Port」填443(或者直接填*匹配所有端口) - 确保你已经在Safari里安装了Charles的根证书并信任(其他浏览器能用的话这步应该已经做了,但可以再确认下)
终极方案:用Charles的「Map Remote」转发请求
要是上面的方法都不行,试试把localhost的请求转发到本地IP:- 打开Charles,顶部菜单选择「Tools」→「Map Remote」,点击「Add」
- 在「From」栏填
http://localhost:你的端口,「To」栏填http://你的本地IP:你的端口 - 启用这个规则后,访问
http://localhost:端口,Charles会自动转发到本地IP,流量就能被捕获了
内容的提问来源于stack exchange,提问作者Chas
相关产品推荐
相关产品推荐

