Charles抓包时为什么手机请求没显示?

极客东旭 阅读 3

我用Charles配置了手机代理,电脑和手机在同一个WiFi下,SSL证书也装了,但React Native App发的请求完全没出现在Charles里,是哪里漏了吗?

我试过重启Charles、重装证书、检查端口(8888),还是不行。App代码里是这么发请求的:

fetch('https://api.example.com/data', {
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ userId: 123 })
})
.then(res => res.json())
.then(data => console.log(data));
我来解答 赞 3 收藏
二维码
手机扫码查看
1 条解答
♫米阳
♫米阳 Lv1
抓包的时候手机请求没显示,这种情况挺常见的,可能是以下几个地方出了问题。首先确认一下手机的代理设置是不是真的生效了,有时候不小心改错了地址或者端口。还有就是确保手机和电脑是在同一个WiFi网络下,这点很重要。

接下来检查一下Charles的SSL设置,虽然你提到已经安装了SSL证书,但有时候证书的安装可能没有成功,可以尝试重新安装一下。在Charles里,Proxy菜单下有个SSL Proxy Settings,确保开启了Enable SSL Proxying,并且添加了你要抓包的域名。

另外,React Native App有可能会有一些额外的安全措施,比如只允许特定的证书或者域名进行通信。你可以尝试在App里临时禁用这些安全检查(仅限开发环境),看看是否能抓到数据。不过这种方法不推荐长期使用,毕竟会影响到App的安全性。

如果以上都检查过了还是抓不到数据,可以考虑在App的网络请求代码里手动设置一些代理信息,比如这样:

fetch('https://api.example.com/data', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
},
body: JSON.stringify({ userId: 123 }),
agent: new HttpsProxyAgent('http://你的电脑IP:8888')
})
.then(res => res.json())
.then(data => console.log(data));


这里的HttpsProxyAgent你需要先通过npm安装一下。这段代码的作用就是在发送请求时手动指定代理服务器,有时候这样能解决一些奇怪的问题。

希望这些建议能帮到你,抓包调试真是个让人头秃的工作。
点赞
2026-03-22 17:00