Charles抓包时手机连不上代理怎么办?

程序猿松静 阅读 25

我按照教程在电脑上开了Charles代理,手机也连了同一个WiFi并设置了HTTP代理到电脑IP和8888端口,但手机浏览器打不开网页,Charles也没收到任何请求。防火墙已经关了,电脑IP也确认是对的,到底哪里出问题了?

页面代码很简单,就是一个普通的HTML请求:

<!DOCTYPE html>
<html>
<head>
  <title>Test Page</title>
</head>
<body>
  <h1>Hello Charles!</h1>
  <script>
    fetch('https://api.example.com/data')
      .then(res => res.json())
      .catch(err => console.error('Fetch failed:', err));
  </script>
</body>
</html>
我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
FSD-炜曦
直接用这个排查顺序来,别瞎猜了:

1. 先确认 Charles 代理是否真开了
打开 Charles → 选中菜单 Proxy → Proxy Settings → 确认端口是 8888,且「Enable Transparent HTTP Proxy」勾上了
再点 Help → Install Charles Root Certificate → 安装证书(手机要信任这个证书,后面细说)

2. 手机 WiFi 代理设置要对
手机连的 WiFi → 修改网络设置 → 高级选项 → 手动代理
代理主机名填你电脑的局域网 IP(不是 localhost,也不是 127.0.0.1)
端口填 8888
保存后别急着试,先 ping 一下电脑 IP 看通不通
在手机终端里执行:ping 192.168.x.x(替换成你电脑 IP)
如果连 ping 都不通,说明局域网没连好,检查路由器、防火墙、网卡共享这些

3. HTTPS 请求必须装证书 + 信任
你页面里用的是 https://api.example.com/data,Charles 默认只抓 HTTP,HTTPS 需要:
- Charles 上点 Help → SSL Proxying → Install Charles Root Certificate
- 安装完后在 Charles 里点 Proxy → SSL Proxying Settings → 加个规则,Host 写 *,Port 写 443
- 手机上打开 http://charlesproxy.com/getcert,下载证书
- 安装证书后,进入手机「设置 → 安全 → 加密与凭据 → 安装的证书」里把 Charles 的证书设为「受信任的凭据」(Android)或「信任此证书」(iOS)

4. 检查 Charles 是否屏蔽了某些请求
Charles → Proxy → Record Settings → 确认没把 api.example.com 或 HTTPS 给排除掉
也可以先清空记录(Ctrl+K),再刷新页面,看有没有新请求冒出来

5. 如果还是没动静,试试手机浏览器用 http://www.example.com(不是 https)先抓个水球
如果 HTTP 能抓到,说明是 HTTPS 证书问题
如果 HTTP 也不行,大概率是代理没生效或者网络不通

最后说个我踩过的坑:有些手机(尤其是国产机)会自动清理后台应用,Charles 一旦切到后台就断连,要么锁后台,要么开个「永不休眠」的 App 陪着它跑。

要是还搞不定,贴出你手机型号、系统版本、Charles 版本、抓包时 Charles 的日志(Help → View Charles Log),我帮你看看。
点赞 7
2026-02-25 19:16