Charles 抓取移动设备数据包基本使用教程

Charles抓取移动设备数据包基本使用教程

什么是 Charles

Charles是一个HTTP代理/ HTTP 监听器 /反向代理,它使开发人员能够查看他们的机器和Internet之间的所有HTTP和SSL / HTTPS通信。这包括请求、响应和HTTP头(其中包含cookie和缓存信息)。

使用Charles,我们可以抓取移动设备经由其代理的数据包,通过配置客户端证书,可以得到解密后的https数据包。

Charles is an HTTP proxy / HTTP monitor / Reverse Proxy that enables a developer to view all of the HTTP and SSL / HTTPS traffic between their machine and the Internet. This includes requests, responses and the HTTP headers (which contain the cookies and caching information).

注:Charles是一款跨平台的收费软件,安装后会获得30天的体验时间,在体验期间内,每次使用最长会话不能超过30分钟,会话结束后重新开启可继续使用。

安装

使用Homebrew安装

brew cask install charles

从官网下载安装

https://www.charlesproxy.com/

使用

HTTP

开启代理服务

在配置的Proxy -> Proxy Settings

设置代理服务器监听的端口号,一般我们使用8888端口。

手机网络使用代理

设置手机网络代理为前一步代理服务器的ip和端口,注意要在同一网段下。

查看网络请求

配置完成后我们可以看到Charles已经开始捕获网络请求了。但是这个时候捕获到的HTTPS数据包是乱码的,因为被加密过。如果想要得到解密后的内容,还需要对HTTPS做额外的配置。

Charles抓取移动设备数据包基本使用教程

HTTPS

本机安装Charles 证书

与网络上的教程直接 Help -> Install Charles Root Certificate不同

这一步我们先要保存证书到本地,因为Mac的安全策略不允许把证书安装到System Roots。

选择 Help -> Sava Charles Root Certificate

保存本地后,需要安装证书。
直接运行证书文件、Help -> Install Charles Root Certificate或者运行Key Chain Access都可以。
打开证书管理后,拖入到System下

Charles抓取移动设备数据包基本使用教程

此时证书并没有被信任,双击未被信任的证书。

选择总是信任

Charles抓取移动设备数据包基本使用教程

移动设备安装证书

确认移动设备已经使用Charles代理后,浏览器访问下面的地址,下载证书并安装。

chls.pro/ssl

一般浏览器打开后会默认提示安装,一些手机需要额外处理。

如小米手机默认浏览器无法自动安装,可以使用edge浏览器下载。

iphone安装后需要在配置中信任证书。

配置需要抓取的域名

打开 Help -> SSL Proxy Settings

添加需要抓包的域名,端口为443

全部配置完毕后,可以看到接口数据已经被解密。

疑难杂症

安卓可以抓取浏览器https,但无法抓取应用内https数据

由于安卓的安全设置,应用可以不使用系统提供的证书自行验证,这类应用如微信。

有人说可以替换系统根证书实现,懂安卓可以尝试下。

iphone强制app使用系统证书,所以可以抓取ipone app的数据作为替代。

其他问题待补充

本作品采用《CC 协议》,转载必须注明作者和本文链接
为码农摸鱼事业而奋斗
本帖由 Summer 于 4年前 加精
讨论数量: 2

Https而言

iPhone 设置抓取简单,Android 要看机器 和系统,菊花牌的基本没戏,小米的是部分可以。大部分Android基本很不好抓。

4年前 评论

安卓的不好抓,系统7以上就难了

3年前 评论

讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!