使用Charles对安卓手机抓包(不需要adb)

在互联网开发与测试中,接口抓包是一项非常重要的技能。通过抓包工具,我们可以捕获设备与服务器之间的通信数据,从而分析接口请求、响应内容以及排查问题。本文将详细介绍如何使用 Charles 抓包工具对安卓手机进行抓包操作。

一、什么是抓包工具?

抓包工具是一种用于捕获和分析网络流量的软件。它可以帮助开发者和测试人员查看 HTTP/HTTPS 请求和响应的具体内容,包括 URL、请求头、请求体、响应头和响应体等信息。常见的抓包工具有 CharlesFiddler,其中 Charles 因其界面友好、功能强大而受到广泛欢迎。

二、准备工作

1. 下载并安装 Charles

     

2. 安装安卓模拟器(可选)

如果没有实体安卓手机,可以使用安卓模拟器进行抓包测试。推荐使用网易 MuMu 模拟器,因为它兼容性好且支持 Windows 的 WSL 环境。


三、 Charles 证书

1. 安装证书

打开 Charles,在菜单栏中依次点击 "Help→SSL Proxying",点击 “Install Charles Root Certificate”,这时系统会弹出安装证书的提示,按照提示一步步完成证书安装,并确保在系统中信任该证书

2. 导出证书

打开 Charles,在菜单栏中依次点击 "Help→SSL Proxying",点击 “Save Charles Root Certificate”,将证书保存为.pem文件并放到目录

在 Android 6 之前, 手机系统既信任系统内置的证书, 也信任用户自己安装的证书, 但是在 Android 7 之后,却发生了变化, 手机系统只信任系统内置的根证书。所以需要借助 openssl 工具将其转换为系统根证书,执行命令:

openssl x509 -subject_hash_old -in 证书名

执行命令后将 Charles.pem 文件重命名为 54ece10c.0 (54ece10c需要根据自己生成的结果进行命名) 

四、手机抓包

1. 开启模拟器root及磁盘读写权限

2. 将证书导入安卓设备

转换后的54ece10c.0证书,需存放到安卓设备指定目录,这里我们借助模拟器自带 Root Explorer 工具(不需要使用adb)
首先,将证书文件复制到安卓设备可访问的存储位置(比如通过 USB 传输到手机存储根目录)
然后打开 Root Explorer,找到 “/system/etc/security/cacerts” 目录,将证书文件复制进去。要注意的是,此操作可能需要设备已获取 Root 权限,否则无法将文件复制到该系统目录。

复制证书

粘贴到“/system/etc/security/cacerts” 目录

3. 设置手机代理

为了让安卓设备的网络流量通过 Charles 进行代理,需要配置设备的网络代理。

步骤:

  1. 获取 Charles 的 IP 地址

    • 在 Charles 中点击菜单栏 Proxy -> Proxy Settings,记录下本地 IP 地址(如 192.168.1.100
    • 默认端口号为 8888
  2. 设置安卓设备代理

    • 打开安卓设备的 Wi-Fi 设置,选择当前连接的 Wi-Fi。
    • 长按 Wi-Fi 名称,选择“修改网络”。
    • 勾选“显示高级选项”,将代理设置为“手动”。
    • 输入 Charles 的 IP 地址和端口号(如 192.168.1.100:8888

4. 开始抓包

完成上述配置后,安卓设备的所有网络流量都会通过 Charles 进行代理。此时,你可以在 Charles 的界面中看到抓取到的请求和响应数据。

注意事项:

  • 如果需要抓取 HTTPS 数据,需确保 Charles 的 SSL 代理功能已启用:
    • 打开 Charles 菜单栏 Proxy -> SSL Proxying Settings
    • 添加需要抓包的域名(如 *.example.com)。


五、常见问题及解决方法

  1. 无法抓取 HTTPS 数据

    • 确保安卓设备已正确安装 Charles 证书。
    • 确保 Charles 的 SSL 代理功能已启用。
  2. 安卓设备无法连接到 Charles

    • 检查 Charles 的 IP 地址是否正确。
    • 确保安卓设备与电脑在同一局域网内。
    • Proxy -> Access Control Settings允许安卓IP访问
  3. 抓包数据不完整

    • 确保 Charles 的过滤规则未屏蔽目标域名。
    • 检查设备的网络代理设置是否正确。
  4. 其它

六、总结

通过本文的学习,你应该已经掌握了如何使用 Charles 对安卓手机进行抓包的基本流程。抓包工具是每一位开发者和测试人员的必备技能,希望这篇文章能帮助你更好地理解和使用 Charles!

参考文章

MuMu模拟器Charles抓包教程_MuMu模拟器_安卓模拟器

### Fiddler 手机抓包无网络问题解决方案 当使用Fiddler进行手机HTTPS报文抓取时,可能会遇到设备连接后无网络访问的情况。这通常是因为代理设置正确或证书未被信任所致。 #### 设置正确的Wi-Fi代理配置 为了使Fiddler能够正常工作,在手机上的Wi-Fi设置中需手动指定HTTP代理服务器地址为运行Fiddler计算机的局域网IP,并将端口号设为8888[^1]。 #### 安装并信任根证书 为了让移动端浏览器或其他应用程序接受通过Fiddler转发过来的数据流,必须先下载由该工具自动生成的中间人(MITM) CA证书至目标装置内,并按照操作系统指引完成安装过程使其成为受信实体之一。 对于Android平台而言,除了上述基本步骤外还可以借助第三方库`justtrustme`来简化流程——只需将其集成进APK项目里再重新打包部署即可实现自动跳过SSL验证环节从而顺利完成整个调试会话;过需要注意的是这种方法仅适用于开发环境而非生产环境中因为存在安全隐患[^2]。 ```bash pip install justtrustme==0.1.3 ``` 另外一种方式是在安卓模拟器或者真机上开启开发者选项中的“允许未知来源的应用”,接着从PC端打开Fiddler菜单栏里的“Tools -> Options...”找到HTTPS标签页勾选“Decrypt HTTPS traffic”。之后返回主界面点击“Actions”按钮选择“Trust Root Certificate”,这样就能确保所有经过此软件处理过的安全链接都能顺利解析而至于中断服务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值