在 MacOS 下捕获模拟器中发出的网络请求

最近在做一个 React Native 项目遇到了一个小问题:安装 react-native-cookiemanager 后,如何测试 cookie 是否设置成功并随请求发送,同时不影响 React Native 本地编译服务的连接(即不影响远程 JS Debug、热刷新等功能)。

使用 Charles 全局代理捕获网络请求

单纯的使用 Charles 抓包,需要给模拟器或测试机指定代理到本机 IP 的 8888 端口。这样虽然可以捕获请求,但也导致热刷新无法连接本地开发服务器。之后我尝试使用 Charles 全局代理来抓包,结果发现依然不能捕获 Genymotion 里的请求。网上搜了一下,还是需要在模拟器系统里设置网络代理到 10.0.3.2:8888,这样一来就跟 Charles 本身代理无异了。

使用 Wireshark 捕获网络请求

后来同事建议直接用 Wireshark,虽然有点大炮打蚊子但还是轻松地解决了我的需求。

在 Wireshark 里设置想抓取的域名/IP 以及接口就可以了。

捕获到请求后,右键选择「追踪流」-「HTTP 流」。

然后就会弹一个新窗口展示了请求的完整信息。此时已经可以看到请求时的 cookie 等信息了。

这样我就可以一边开发一边测试了,而不需要频繁切代理。需要注意的是 Wireshark 如果在配置不佳的机器(如单位的 iMac)上使用,如果开启捕获后不关掉,时间久了可能会卡死。所以抓完包即时关掉,随用随开。

使用 Debookee 捕获网络请求

同样是同事推荐的应用,之前没用过。这个是付费的,但是界面简洁很多。打开后开启捕获,然后左边直接切换到 HTTP 请求就行了。

每条请求点箭头展开就能查看详细信息,非常方便。

遗憾的是免费版功能有限制,开一会儿捕获的数据就「打码」展示了,此时重开一下就好。舍不得花 $29.90 买,所以忍了。

相关下载

  • Charles($50):官网
  • Wireshark(免费):官网
  • Deebookee($29.90起):官网

-- EOF --

此条目发表在 前端开发 分类目录,贴了 , , , 标签。将固定链接加入收藏夹。

在 MacOS 下捕获模拟器中发出的网络请求》有 1 条评论