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 延迟等参数后再进行执行,可以用于模拟压力测试
相关推荐
千里马学框架2 天前
一起学 Android 14:ShellTransition 屏幕旋转过程深度剖析
android·智能手机·性能优化·framework·性能·屏幕旋转·rotation
美狐美颜SDK开放平台2 天前
开发直播APP时如何接入视频美颜SDK?开发流程与注意事项
android·人工智能·计算机视觉·音视频·直播美颜sdk
AFinalStone2 天前
Android7 SystemUI源码解析(七)Keyguard锁屏模块深度解析
android·systemui
致远ccc2 天前
Google Play 上架前如何测试 App?多国家 Android 环境测试
android·app测试·googleplay·多国家应用测试
ttyyttemo2 天前
Kotlin 协程中的 Job 结构化并发与取消
android
sun0077002 天前
tbox 4g/5g切换,导致wan ip 改变,导致车机旧网络不可用。需要重启车机才行
android
其实防守也摸鱼2 天前
内网穿透与反向代理:原理、工具与实战指南
android·大数据·运维·安全·网络安全·自动化·渗透
AFinalStone2 天前
Android7 SystemUI 源码解析(四)NavigationBar 导航栏与 SystemBars
android·systemui
JMchen2 天前
属性动画原理与高级动画实现
android·kotlin·canvas
AFinalStone2 天前
Android7 SystemUI 源码解析(二)启动流程深度解析
android·systemui