Charles抓包时为什么手机请求没显示?
我用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));
接下来检查一下Charles的SSL设置,虽然你提到已经安装了SSL证书,但有时候证书的安装可能没有成功,可以尝试重新安装一下。在Charles里,Proxy菜单下有个SSL Proxy Settings,确保开启了Enable SSL Proxying,并且添加了你要抓包的域名。
另外,React Native App有可能会有一些额外的安全措施,比如只允许特定的证书或者域名进行通信。你可以尝试在App里临时禁用这些安全检查(仅限开发环境),看看是否能抓到数据。不过这种方法不推荐长期使用,毕竟会影响到App的安全性。
如果以上都检查过了还是抓不到数据,可以考虑在App的网络请求代码里手动设置一些代理信息,比如这样:
这里的HttpsProxyAgent你需要先通过npm安装一下。这段代码的作用就是在发送请求时手动指定代理服务器,有时候这样能解决一些奇怪的问题。
希望这些建议能帮到你,抓包调试真是个让人头秃的工作。