查尔斯移动设备抓包
Charles 移动设备抓包(转载)
除了最常见的网络爬虫,还有另一个客户端软件的爬虫。前者应用广泛,后者的数据采集需求不断增加。潜水多年的小白首次发帖。如果内容不恰当,请随意更正。
常见客户端:
个人电脑(视窗、苹果、Linux)、安卓、IOS
抓包工具:
支持的平台:Windows、macOS、Linux
以下内容基于本软件。
需求分析:
想批量或自动获取某平台客户端的一些数据。为了满足我们的需求,我们需要使用网络包捕获工具。众所周知,网络协议层的几乎每一层都有相应的数据包捕获工具。现在最常用的协议是https和http。
HTTP 协议抓包:
Http协议不包含SSL,只需要配置网络代理{filter}机制来捕获数据包,而https需要安装证书并信任证书来捕获数据包,否则红色显示的未知无法解析。
HTTPS 协议抓包:
https协议需要在配置网络代理{pass} {filter}原则的前提下安装证书,系统必须信任安装的证书才能捕获https协议。
Charles 快速上手:
主界面:
常用功能菜单:
常用功能菜单,顾名思义,这两个菜单是经常使用的。在这里,我们先做一些解释:
Proxy:
开始记录:开始捕获网络流量,对应主界面的红点图标。
Start Throttling :进入低速网络模式,对应主界面的乌龟图标。
检查macOS Porxy :时,Charles处理macOS的网络流量。
代理设置:配置HTTP代理{pass} {filter}端口,这是为同一局域网中的设备安装证书或设置代理{pass} {filter}端口时所需要的。常见的设置是8888。还有一些与HTTP和SOCKS相关的设置。
SSL端口设置:配置是否启用SSL。启用时,应配置HOST和PORT。选中时,它处于活动状态。当主机和端口未知时,可以将主机和端口设置为*(星号),这样可以捕获http和https的所有流量。
Help —— SSL Porxying:
安装Charles根证书:将证书安装到macOS系统中。
在移动设备或远程浏览器:上安装Charles根证书,为同一局域网中的其他设备安装Charles证书。
保存查尔斯根证书:在本地保存查尔斯证书。有两种类型的文件可用。建议选择。PEM,方便安卓设备以后导入证书。
安装 Charles 证书
macOS :
在Charles主界面点击帮助—— SSL porxying 3354安装Charles根证书,默认安装即可完成安装。
如前所述,安装后,系统需要信任该证书。具体来说,在所有程序中找到钥匙串,访问左栏底部的——,点击证书——,双击查尔斯代理CA3354进行信任。所有选项都可以设置为始终信任。您可以成功打开HTTPS协议的捕获。
IOS :
单击帮助—— SSL端口3354在移动设备或远程浏览器上安装Charles根证书,然后“配置您的设备”.将出现“http pro”。在192.168.1.6:8888上,然后浏览到chls.pro/ssl' 8888这里是在代理设置——中设置的。
或者手机的其他设备应该和抓包主机连接到同一个局域网(网络频段也有影响),打开设置——无线局域网3354,点击抓包主机所在局域网内的Wi-Fi,拉到底部—— HTTP代{over} {filter} 3354配置代{ over } { filter } 3354手动3354服务器填写之前的192.168。
回到主界面,打开Safari浏览器,在地址栏输入上一个chl。
s.pro/ssl 打开。Charles 会弹出是否允许连接,点击 Allow 。手机上允许下载一个配置描述文件,下载完成后关闭。
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 系统根目录内。
-
Charles 主界面点击help —— SSL Porxying ——Save Charles Root Certificate ,选择保存为 .pem 文件,以下只讲这种文件的转换方法。.cer 文件转换方法请自行寻找,欢迎交流。
-
保存好 .pem 文件后,macOS 需要安装 openssl ,然后打开 终端app —— 输入 openssl x509 -subject_hash_old -in Charles根证书文件.pem 回车结果如下,圈起来的这串字符很重要: d2479ff1
-
上一步完成后,将下载的 charles-proxy-ssl-proxying-certificate.pem 重命名为 d2479ff1.0 ,将 d2479ff1.0 文件放到手机内。
-
手机端安装 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 内刷入即可,验证方式如上。
内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/136283.html