移动端免 Wi-Fi 代理进行抓包调试

2024-03-06 13:30:06 +08:00
 MegatronKing

1. 前言

抓包调试是移动应用程序开发和调试中非常重要的一部分,无论是数据模拟还是恶意软件分析。我们最常见的方法是在手机上设置 Wi-Fi 代理,并将流量代理到桌面应用程序(例如 Charles 和 Fiddler )的 MITM 服务器。

但是这种工作方式不但操作繁琐,还存在一些技术障碍问题。

因此,给大家介绍一种新的移动端抓包调试方案。

2. 准备

本篇文章所讲的主要工具是 Reqable , 一款桌面端( Windows 、Mac 、Linux ) + 移动端( Android 、iOS )的全平台 API 调试工具。

下载地址: https://reqable.com/download

2.1 桌面端版本

安装完成后,启动 Reqable 桌面端应用。打开二维码页面,如下:

2.2 移动端版本

安装后,启动 Reqable 移动端应用。选择协作模式,并扫描上一步桌面端的二维码。

连接成功后,Reqable 会自动将桌面端的根证书同步到手机端。Reqable 移动端会记住远程设备(电脑)的 IP 地址和端口,下一次启动会自动进行连接。如果远程设备(电脑)的 IP 地址和端口发生变化,在侧边栏点击扫码图标重新扫描即可。

下一步,我们开始安装根证书,这可能是整个过程最复杂的一步。

由于 Reqable 桌面端的根证书已经被同步到了移动端,因此不需要打开浏览器输入 xxx 地址下载根证书了,直接在移动端保存根证书即可。打开侧边栏,点击证书管理页面,进行证书相关的操作。

Reqable 移动的会自动检查证书的安装状态,如果未安装成功,页面上出现红色提示:证书未安装。上图是 Android 的根证书安装指引,iOS 则简单很多,按照应用内的操作提示处理即可。

注意:如果 Android 的证书安装到用户证书目录,记得在项目中配置网络安全配置 xml 文件。

最后,点击右下角的调试按钮,允许通知和 VPN 服务,进入调试模式。

同时,Reqable 桌面端也会自动进入调试模式。

可以看到,手机端的流量已经显示在 Reqable 桌面端了,后续我们可以在桌面端进行断点、重写、脚本等功能的处理。

2.3 安装辅助服务( Android )

从上图可以看到,应用程序一栏显示的是手机的 IP 地址,而不是真实的应用程序信息。除此之外,可能部分应用的流量也无法被捕获。这种情况下,我们需要安装并启用Reqable 辅助服务

重新启动调试功能,可以看到流量应用信息已经显示出来了。

3. 调试

准备工作完成之后,我们开始正式的调试。为了更好的展示功能,写了一个简单的 Android 应用My Application,嵌套一个 WebView ,加载 Reqable 的首页。

val web = findViewById<WebView>(R.id.webview)
web.webViewClient = WebViewClient()
val settings = web.settings
settings.javaScriptEnabled = true
web.loadUrl("https://reqable.com")

由于在测试的 Android 设备上根证书安装到了用户目录,我们在My Application里面配置好 xml 文件信任用户证书。另一种方式是将My Application的 targetSDK 调低至 23 。

为了去除其他应用流量的干扰,我们点击右上角菜单,并添加当前的测试应用My Application(注意,选择应用的功能只在 Android 平台上可用,iOS 平台不可用)。

接下来启动调试,可以看到 Reqable 桌面端已经捕获了手机端的流量信息。

现在我们来假定一个测试场景,需要将My Application中所有网络请求数据中的Reqable文字改成Awesome,那该怎么做呢?

只需要写一行 Python 脚本即可:

response.body.replace('Reqable', 'Awesome')

然后,我们重新加载 WebView 测试下。

OK ,没什么问题。

4. 结束

感谢大家阅读,以上演示的功能只是 Reqable 这个项目的冰山一角,有更多的功能已经实现或者正在实现,也欢迎大家下载体验并提供建议: https://reqable.com/

7527 次点击
所在节点    推广
62 条回复
TechOrange
2024-03-07 11:54:07 +08:00
谢谢,先熟悉一下,前几天还在用着 httpcanary
Aurorataro
2024-03-07 12:04:05 +08:00
小黄鸟?
zzznow
2024-03-07 14:56:17 +08:00
有时候手机端抓的包和电脑不同步。感觉不够稳定
Ruhaii
2024-03-07 15:21:59 +08:00
Bigbelly
2024-03-07 16:05:50 +08:00
在 2.2 移动端扫码桌面端连接就一直连接失败了,手动输入也不行,这怎么解决呢
MegatronKing
2024-03-07 20:38:08 +08:00
@lemon6 iOS 都不麻烦,Android 是都麻烦,而 Reqable 麻烦则少一点。
MegatronKing
2024-03-07 20:41:38 +08:00
@eleba #40 安全问题。众所周知,证书私钥钥是不能泄漏的,万一泄漏了也要可以更换,固定就意味着违背这个原则。
MegatronKing
2024-03-07 20:44:36 +08:00
@neochen13 #48 虽然酷安很棒,但是不太喜欢酷安的一部分人,不是要拿来搞这个就是要拿来搞那个,唯恐避之不及。
MegatronKing
2024-03-07 20:45:54 +08:00
@orangutan92 #35 哈,你不提我都忘记修改官网文档的资料了。
dj721xHiAvbL11n0
2024-03-08 13:29:34 +08:00
真不错,转小程序的包现在就可以实现了,OP 棒棒哒
@waytodelay 我也想知道
dj721xHiAvbL11n0
2024-03-08 13:31:47 +08:00
@root71370 可以的,但是如果小程序作者设置了检测,可能就悬了
BaiLinfeng
2024-03-08 16:24:51 +08:00
httpcanary 是 OP 开发的吗?最近我发现 httpcanary 为什么在强制弹广告添加扣扣群,这是被劫持了吗,还是啥情况
xz410236056
2024-03-11 15:27:10 +08:00
你这跟用小飞机转发流量到 whistle 有啥区别。。。
MegatronKing
2024-03-12 18:43:49 +08:00
@BaiLinfeng #52 httpcanary 不维护了,你下的应该是被别人逆向工程后二次开发的,谨慎使用。
BaiLinfeng
2024-03-14 20:54:21 +08:00
@MegatronKing 哦那原版在哪里下载?各大应用商店?
KuiLei
2024-04-05 23:16:49 +08:00
能利用 root 权限一键安装证书或者一键生成 magisk 模块吗?
MegatronKing
2024-04-12 14:14:11 +08:00
@KuiLei 最新的版本已经实现一键生成 magisk 模块,但是还没发布。
lxml
2024-04-13 12:57:10 +08:00
偶然间刚看见这个 app ,感觉作者做的挺爽的,最近正好 rapidAPI 和 insomnia 都用的挺不习惯的,想换一个,proxyman 没什么意见,看见 五一半价 299 咬咬牙感觉也能支持

不过这个授权设备也太抠了吧,我个人用 两台 mac ,公司一台,家里一台,看见 授权 1 Mac + 1 Windows + 1 Linux 这个点开付款的手都松了下来,为啥不能整成授权 6 个设备干脆点,其实也用不到,你弄个 3 个桌面平台自己选都行,用这个是为了多平台用,但是 1Mac 1 Windows 1Linux 这谁家目标用户会这么搞啊。

🤩🤩🤩🤩
lxml
2024-04-13 13:00:29 +08:00
另外,这个付费版,可以同步不同设备的请求嘛,看了下文档,没看见有说这个的,不知道作者有没有搭建自己的服务器进行同步,insomnia 让我劝退的原因就是同步 git 麻烦的要死
MegatronKing
2024-04-17 01:18:50 +08:00
@lxml 你说的有道理的,但是目前是可以授权 2 台 Mac 设备的,或者两台 Windows 设备的等。这个设计主要是想让大家组团合用,互不干扰,固定设备位置,我用 mac ,他用 windows ,不然就会相互踢下线。另外云服务规划是在下半年的 3.x 版本上线,目前 2.x 还没做。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1021074

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX