Charles 移动设备抓包配置

Charles 移动设备抓包-支持 Android 7.0+

除了最常见的网页爬虫,还有一种是针对客户端软件的爬虫。前者使用范围广泛,对后者的数据采集需求越来越大。

常见客户端:

PC( Windows 、macOS 、Linux )、Android 、IOS

抓包工具:

支持平台:Windows 、 macOS 、 Linux

以下内容都是基于这款抓包软件。

需求分析:

想要批量或者自动获取某一平台客户端的某些数据。要做到我们的需求,需要使用网络抓包工具。据了解得知,网络协议层的每一层几乎都有对应的抓包工具。现如今最常用的协议是 https、http 这两种网络传输协议。

HTTP 协议抓包:

http 协议不包含 SSL ,抓包时只需要简单配置网络代理即可抓取,而 https 需要安装证书并且信任证书才能抓取,否则无法解析显示为红色的 unknown 。

HTTPS 协议抓包:

https 协议在配置网络代理的前提下还需要安装证书,并且必须让系统信任安装的证书才能实现对 https 协议进行抓包。

Charles 快速上手:

主界面:

在这里插入图片描述

常用功能菜单:

在这里插入图片描述

常用功能菜单,故名思义这两个菜单是经常会用到的,这里先做一些说明:

Proxy:
  • Start Recording : 开始捕获网络流量,对应主界面的红点图标。
  • Start Throttling : 进入低速网络模式,对应主界面的乌龟图标。
  • macOS Porxy : 勾选时 Charles 处理 macOS 的网络流量。
  • Proxy Settings : 配置 HTTP 代理端口,在给同一局域网内设备安装证书,或是设置代理时需用到,常见设置为 8888。这里还包含一些 HTTP 、SOCKS 相关的设置。
  • SSL Porxying Setting : 配置是否启用 SSL ,启用时需配置主机(HOST)与端口(PORT)勾选上即为激活状态,在不清楚主机和端口时,可将主机与端口都设置为 *(星号),这样做可以捕获 http 和 https 的所有流量。
Help —— SSL Porxying:
  • Install Charles Root Certificate : 安装证书到 macOS 系统内。
  • Install Charles Root Certificate on a Mobile Device or Remote Browser : 为同一局域网内的其它设备安装 Charles 证书.
  • Save Charles Root Certificate : 保存 Charles 证书到本地,可选 .pem .cer 两种类型的文件,推荐选择 .pem ,后续便于 Android 设备导入证书。

安装 Charles 证书

  • macOS :

    1. Charles 主界面点击 help —— SSL Porxying —— Install Charles Root Certificate ,默认安装即可完成安装。
    2. 正如前面所说,安装完以后还需要让系统信任这个证书,具体做法:在所有程序中找到 钥匙串访问 —— 左栏下方 —— 点击证书 —— 双击 Charles Proxy CA ——信任 ,可以将所有的选项都设置为 始终信任。即可成功开启对 HTTPS 协议的捕获。
  • IOS :

    1. Charles 主界面点击 help —— SSL Porxying —— Install Charles Root Certificate on a Mobile Device or Remote Browser 会出现 " Configure you device …… HTTP proxy on 192.168.1.6:8888 , then browse to chls.pro/ssl " 这里的 8888 在 Proxy —— Proxy Settings 内设置。
    2. 手机或者其它设备要和抓包主机连接到同一局域网(网络频段也有影响),打开 设置 —— 无线局域网 —— 点击与抓包主机同一个局域网的那个 Wi-Fi 拉到底部 —— HTTP 代理 —— 配置代理 —— 手动 —— 服务器填前面的 192.168.1.6 端口填 8888 —— 右上角存储 。
    3. 回到主界面,打开 Safari 浏览器,在地址栏输入前面的 chls.pro/ssl 打开。Charles 会弹出是否允许连接,点击 Allow 。手机上允许下载一个配置描述文件,下载完成后关闭。
    4. 手机打开设置 —— 通用 —— 拉到底部找到 描述文件 打开 —— 点击 Charles Proxy CA(……)—— 右上角安装 —— 输入密码再次安装 —— 完成后拉到上面找到 关于本机 进入 —— 拉到底部找到 证书信任设置 进入 —— 打开 针对根证书启用完全信任。
    5. 完成以上步骤后,即可抓取 IOS 客户端数据。
  • Android:

    自 Android 7.0 以后无法信任第三方根证书,抓取第三方 app 数据时,现有方法几乎都需要 Root 设备,自行考虑风险。还可以使用 Android 模拟器来抓取数据,但是模拟器的信息不是很完整,容易被客户端app后台所识别出来,比较费力不讨好。现有的几种 Root 后抓取 HPPTS 的方法我都尝试过:

    使用 Xposed & edxposed 模块,在安装了 Xposed & Edxposed 框架的前提下,再安装 TrustMeAlready 模块并激活(经测试,部分系统 Android 10 ,部分软件无法使用,比如X信小程序);

    安装 VirtualXposed ,再安装 TrustMeAlready 模块并激活,因为 VirtualXposed 较容易被第三方app识别,从而禁止使用,优势是不需要root ;

    Root 后将 Charles 根证书导入并信任根证书,这个办法其实是将 Charles 根证书转换后放到 Android 系统根目录内。

    1. Charles 主界面点击help —— SSL Porxying —— Save Charles Root Certificate ,选择保存为 .pem 文件,以下只讲这种文件的转换方法。.cer 文件转换方法请自行寻找,欢迎交流。

    2. 保存好 .pem 文件后,macOS 需要安装 openssl ,然后打开 终端app —— 输入 openssl x509 -subject_hash_old -in Charles根证书文件.pem 回车结果如下,圈起来的这串字符很重要: d2479ff1

    在这里插入图片描述

    1. 上一步完成后,将下载的 charles-proxy-ssl-proxying-certificate.pem 重命名为 d2479ff1.0 ,将 d2479ff1.0 文件放到手机内。

    2. 手机端安装 MT文件管理器 ,打开授予 root 权限,使用 MT文件管理器复制到 /system/etc/security/cacerts/ 文件夹内,重启手机,在设置内搜索 加密与凭据 —— 打开后找到 信任的凭据 打开 —— 在系统部分可以找到 详细信息为 Charles Proxy CA (……) 的证书,代表成功导入证书到系统中。 可使用 Charles 抓取 HTTPS 协议。

利用 Magisk 导入证书

自 Android O(8.0)以来,即使是获取了 root 权限,也很难修改系统分区文件,无法进行读写。且当下手机 root 方式都是利用 Magisk 修补 boot ,Magisk 还可以利用旁载的方式加载各种自定义模块,包括且不限于修改、替换系统文件。那么在这里我们可以根据上文所诉,创建一个 Magisk 补丁包,用以导入证书文件到根目录。
首先还是需要安装 Charles 以及 OpenSSL( Windows 推荐使用 choco install openssl 命令安装,需使用带管理员权限的 powershell )

导出证书文件

依次点击 charles -> help -> SSL Proxying -> Save Charles Root …… 选择位置导出 Charles 证书文件

转换证书文件

命令行切换到证书所在文件夹,运行:

openssl x509 -subject_hash_old -in 证书文件.pem

将证书文件改名为 d2479ff1.0 (以上文为例,后缀为 .0 )

创建 Magisk 模块

首先需要 Magisk 模块模板 magisk-module-template ,解压后文件列表为:

└─magisk-module-template-master
    │  customize.sh
    │  module.prop
    │  post-fs-data.sh
    │  README.md
    │  service.sh
    │  system.prop 
    │
    ├─META-INF 
    │  └─com
    │      └─google
    │          └─android
    │                  update-binary
    │                  updater-script
    │
    └─system #内部文件夹为自建
        └─etc
            └─security
                └─cacerts

上图详细文件说明详见 Developer Guides这里我们关注 system 文件夹及子文件夹即可。模板文件是仅有 system 而没有其子文件夹的,system/etc/security/cacerts/ 刚好对应着我们本来要放证书的地方,即系统证书所在目录.此时将我们的证书文件放到 cacerts 文件夹内,将整个文件夹压缩为 zip 文件,放入手机内,在 Magisk 内刷入即可,验证方式如上。

magisk 模板链接:https://wwaab.lanzout.com/iYvyS0ihaypa

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!对于Charles移动抓包配置代理无法使用网络的问题,可能有几个原因导致。以下是一些常见的解决方法: 1. 确保设备Charles所在的计算机在同一个局域网下,并且能够相互访问。您可以尝试通过在设备上访问Charles所在计算机的IP地址来验证网络连接是否正常。 2. 在设备网络设置中配置代理。在移动设备的Wi-Fi设置中,找到当前连接的Wi-Fi网络,点击进入高级设置(或代理设置),选择手动配置代理,并输入Charles所在计算机的IP地址和端口号(默认为8888)。 3. 在Charles中启用SSL代理功能。打开Charles软件,转到“Proxy”菜单,选择“SSL Proxying Settings”,确保“Enable SSL Proxying”选项已勾选,并添加需要抓包的域名或IP地址。 4. 在移动设备上安装Charles的SSL证书。在Charles软件中,转到“Help”菜单,选择“SSL Proxying”下的“Install Charles Root Certificate on a Mobile Device or Remote Browser”选项。根据提示,将证书发送到您的设备并安装。 5. 确保移动应用程序的网络请求正常。有些应用程序可能会使用自定义的网络请求库或者HTTPS证书固定功能,需要进行额外的配置才能与Charles正常通信。您可以尝试使用其他应用程序进行测试,或者查看应用程序的开发文档了解是否需要进行特殊配置。 如果以上方法仍然不能解决问题,可以尝试重启设备、重启Charles、更新Charles版本或者尝试其他抓包工具进行测试。希望这些解决方法能对您有所帮助!如果您还有其他问题,请随时提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值