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 延迟等参数后再进行执行,可以用于模拟压力测试
相关推荐
Exploring3 小时前
从零搭建使用 Open-AutoGML 搜索附近的美食
android·人工智能
ask_baidu4 小时前
Doris笔记
android·笔记
lc9991024 小时前
简洁高效的相机预览
android·linux
hqk5 小时前
鸿蒙ArkUI:状态管理、应用结构、路由全解析
android·前端·harmonyos
消失的旧时光-19435 小时前
从 C 链表到 Android Looper:MessageQueue 的底层原理一条线讲透
android·数据结构·链表
方白羽5 小时前
Android 中Flags从源码到实践
android·app·客户端
深蓝电商API5 小时前
从数据采集到商业变现:网络爬虫技术的实战与边界
android·爬虫
恋猫de小郭8 小时前
再次紧急修复,Flutter 针对 WebView 无法点击问题增加新的快速修复
android·前端·flutter
李慕婉学姐8 小时前
【开题答辩过程】以《基于Android的健康助手APP的设计与实现》为例,不知道这个选题怎么做的,不知道这个选题怎么开题答辩的可以进来看看
android·java·mysql