Charles Proxy无法监控iOS到Mac本地服务器的流量?求解决办法
解决iOS访问.local域名时Charles无法捕获流量的问题
问题背景
已通过Charles正常监控iOS访问远程服务器的流量,但监控iPhone与同一Mac本地应用的流量时出现异常:
- 当iPhone使用
http://Username-MacBook-Pro.local:8000这类.local域名请求时,Charles无任何流量记录(但手机日志显示请求已成功到达本地服务器) - 改用IP地址
http://192.168.1.103:8000访问时,流量可被Charles正常捕获 - 尝试过Map Remote、DNS Spoofing、Rewrite及修改
/etc/hosts等方法均无效,确认iOS会直接绕过代理处理.local域名
可行解决方法
1. 修改iOS Wi-Fi的DNS配置
- 连接当前Wi-Fi,进入Wi-Fi详情页,手动设置DNS服务器为Mac的本地IP(如
192.168.1.103) - 此操作会让iOS通过Mac的DNS解析
.local域名,而非直接使用mDNS,流量将走Charles代理通道
2. 用自定义域名替代.local
- 在Mac的
/etc/hosts文件中添加记录:192.168.1.103 mylocaldev.test - 配置本地服务绑定该自定义域名,让iPhone通过
http://mylocaldev.test:8000访问 - 配合Charles的Rewrite或Map Remote规则,即可正常捕获流量
3. 强制Charles捕获本地环路流量(Mac端配置)
- 打开Charles,依次进入
Proxy > macOS Proxy并勾选该选项 - 进入
Proxy > Settings > Proxies,勾选Enable transparent HTTP proxying - 确认Mac系统偏好设置→网络→Wi-Fi→高级→代理中,HTTP/HTTPS代理指向Charles默认端口8888
- 此配置可强制本地服务流量走Charles代理,即使是
.local域名也能被捕获
4. 针对HTTPS请求配置SSL Proxying
- 若本地服务为HTTPS,在Charles的
SSL Proxying Settings中添加规则:*.local:8000 - 在iOS设备上安装并信任Charles根证书,避免证书验证导致流量绕过
内容的提问来源于stack exchange,提问作者MegaManX
相关产品推荐
相关产品推荐

