Android Charles Proxy 抓包

Android Charles Proxy 抓包

  • 抓包工具 Charles Proxy,是一款跨平台的 HTTP/HTTPS 代理服务器与网络封包分析工具,核心是通过拦截转发网络请求实现抓包、调试与模拟,广泛用于移动开发、Web 开发与接口联调
  • 可以实现弱网模拟、Mock 数据、压力测试等场景
  • 可以通过安装 Charles 根证书来解决 HTTPS 抓包问题(HTTPS 请求显示 unknown)

启动代理服务​

  • Charles 启动后,会自动配置系统代理(默认端口:8888),此时电脑的所有网络请求访问都会经过 Charles 转发,可在 Charles 窗口查看请求记录(比如访问 api.example.com,由于 HTTPS 请求是加密的,默认无法查看内容,需要额外安装 Charles 根证书)
  • 可以通过菜单 Proxy -> Windows proxy 取消勾选来关闭这个系统代理

配置手机代理

  • 通过 Charles 菜单的 Help -> Local IP Addresses 功能可以查看电脑的 IP(选中后可以用 Ctrl + C 进行复制),或通过操作系统设置自行查看
  • 通过 Charles 菜单的 Proxy -> Proxy Settings 设置监听端口(默认端口:8888)
  • 手机上设置代理:设置 -> WLAN 设置 -> 连上指定的 Wifi(需要确保与电脑在同一局域网) -> 网络详情 -> 代理 -> 选择手动 -> 主机名填入电脑的 IP,端口填入 8888 后保存

HTTPS 请求抓包

  • 通过 Charles 菜单的 Proxy -> SSL Proxying Settings -> 勾选 Enable SSL Proxying 来开启 SSL 代理,选中对应标签页,在下方点击 + 号添加一条规则,Host 填写目标域名(比如输入通配符 *,代理所有 HTTPS 请求),Port 输入 443(HTTPS 默认端口),也可以根据需要添加特定域名(比如 *.example.com)
  • 如果抓包电脑端的请求,通过菜单的 Help -> SSL Proxying -> Install Charles Root Certificate,按照向导来安装根证书
  • 如果抓包手机端的请求,手机上通过浏览器访问 chls.pro/ssl 网址(Charles 提供的证书下载地址,可以通过 Charles 菜单的 Help -> SSL Proxying -> Install Charles Root Certificate on a Mobile Device or Remote Browser 查看信息),下载并安装 Charles 根证书,打开手机设置 -> 安全 -> 更多安全设置 -> 加密与凭据 -> 安装证书(从存储设备安装) -> CA 证书 -> 在本地 SD 存储中找到已下载的证书文件
  • 也可以通过 Charles 菜单的 Help -> SSL Proxying -> Save Charles Root Certificate,将证书保存为 .cer 文件(记得切换文件类型),自行进行手动导入。最终 Charles 里如果能看到请求的明文内容,就说明所有必需的配置都设置成功了
  • 安卓从 Android 7.0(API 24)开始,出于安全考虑引入了安全机制,系统默认不再信任用户安装的 CA 证书,这意味着像 Charles、Fiddler 等抓包工具的 HTTPS 证书,会被 App 拒绝,导致无法抓包,解决方案就是修改 App 的 AndroidManifest.xml 中配置的网络安全配置文件,指定在调试模式下信任用户证书
xml 复制代码
<application
    android:name=".MyApplication"
    android:networkSecurityConfig="@xml/network_security_config">
    <!-- 其他配置 -->
</application>

network_security_config.xml

xml 复制代码
<​?xml version="1.0" encoding="utf-8"?>
<network-security-config>
    <!-- debug 调试模式下信任证书(为了 Charles/Fiddler 抓包),此配置仅在 debug 版本生效(android:debuggable="true"),release 版本会自动失效,确保发布版本的安全性 -->
    <debug-overrides>
        <trust-anchors>
            <!-- 信任系统预装的证书 -->
            <certificates src="system" />
            <!-- 信任用户安装的证书 -->
            <certificates src="user" />
        </trust-anchors>
    </debug-overrides>
</network-security-config>

模拟弱网环境

  • 用于测试应用在恶劣网络下的表现,通过 Charles 菜单的 Proxy -> Throttling settings 勾选 Enable Throttling 启用限流(节流)功能,可精准模拟 3G、4G 等弱网环境,提供了常见的网络预设模板供快速选择

修改请求与响应

  • Mock 数据,右键点击请求,选择 Breakpoints 设置断点,当请求发送时,Charles 会暂停,可修改请求头或参数后点执行继续,当响应到来时,Charles 会暂停,修改返回的 JSON 等数据后点执行继续

重复发送请求

  • 右键点击请求,选择 Repeat 立即重复发送一次请求,选择 Repeat Advanced 可设置 Iterations 重复次数、Concurrency 并发量、Delay 延迟等参数后再进行执行,可以用于模拟压力测试
相关推荐
十幺卜入20 小时前
Unity3d C# 基于安卓真机调试日志抓取拓展包(Android Logcat)
android·c#·unity 安卓调试·unity 安卓模拟·unity排查问题
frontend_frank20 小时前
脱离 Electron autoUpdater:uni-app跨端更新:Windows+Android统一实现方案
android·前端·javascript·electron·uni-app
薛晓刚20 小时前
MySQL的replace使用分析
android·adb
DengDongQi21 小时前
Jetpack Compose 滚轮选择器
android
stevenzqzq21 小时前
Android Studio Logcat 基础认知
android·ide·android studio·日志
代码不停21 小时前
MySQL事务
android·数据库·mysql
朝花不迟暮21 小时前
使用Android Studio生成apk,卡在Running Gradle task ‘assembleDebug...解决方法
android·ide·android studio
yngsqq21 小时前
使用VS(.NET MAUI)开发第一个安卓APP
android·.net
Android-Flutter21 小时前
android compose LazyVerticalGrid上下滚动的网格布局 使用
android·kotlin
Android-Flutter21 小时前
android compose LazyHorizontalGrid水平滚动的网格布局 使用
android·kotlin