对于Android开发来说,除了AS自带的
Profiler外,Charles是比较适合我们的抓包工具了,它可以让我们清晰的查看客户端使用的http协议、TLS协议、请求头等信息,还能显示我们的设备型号,并修改入参进行调试、模拟慢速网络环境、断电调试以及通过安装CA证书调试Https等实用技能,下面我做了个简单介绍,方便自己记录,没用过的同学也可以看下快速入门。
下载相应系统的 Charles 安装包,安装即可。
Charles的本质是一个HTTP和SOCKS的代理服务器。
代理请求和响应,使Charles能够在请求从客户端传递到服务器时检查和更改,服务器传递到客户端的响应也是如此。
Charles菜单含义
顶部菜单
比较常用的菜单是Proxy和Tools。
Proxy菜单
-
Start/Stop Recording:开始/停止记录会话。
-
Start/Stop Throttling:开始/停止节流。
-
Enable/Disable Breakpoints:开启/关闭断点模式。
-
Recording Settings:记录会话设置。
-
Throttle Settings:节流设置。
-
Breakpoint Settings:断点设置。
-
Reverse Proxies Settings:反向代理设置。
-
Port Forwarding Settings:端口转发。
-
Windows Proxy:记录计算机上的所有请求。
-
Proxy Settings:代理设置。
-
SSL Proxying Settings:SSL 代理设置。
-
Access Control Settings:访问控制设置。
-
External Proxy Settings:外部代理设置。
-
Web Interface Settings:Web 界面设置。
我在使用中认为比较常用的是Throttle Settings(节流设置)
Throttle Settings 和 Start/Stop Throttling 配合使用,在 Start Throttling 的状态下,可以通过 Throttle Settings 配置 Charles 的网速模拟配置。Throttle Settings 的视图如下图所示:
勾选 Enable Throttling 启用网速模拟配置,在 Throttle Preset 下选择网络类型即可,具体设置可以根据实际情况自行设置。如果只想模拟指定网站的慢速网络,可以再勾选上图中的 Only for selected hosts 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。
Throttle Settings 视图中的选项含义如下:
- Bandwidth:带宽
- Utilistation:利用百分比
- Round-trip:往返延迟
- MTU:字节
Tools菜单
-
No Caching Settings:禁用缓存设置。
-
Block Cookies Settings:禁用 Cookie设置。
-
Map Remote Settings:远程映射设置。
-
Map Local Settings:本地映射设置。
-
Rewrite Settings:重写设置。
-
Black List Settings:黑名单设置。
-
White List Settings:白名单设置。
-
DNS Spoofing Settings:DNS 欺骗设置。
-
Mirror Settings:镜像设置。
-
Auto Save Settings:自动保存设置。
-
Client Process Settings:客户端进程设置。
-
Compose:编辑修改。
-
Repeat:重复发包。
-
Repeat Advanced:高级重复发包。
-
Validate:验证。
-
Publish Gist:发布要点。
-
Import/Export Settings:导入/导出设置。
-
Profiles:配置文件。
-
Publish Gist Settings:发布要点设置。
图标菜单
-
:清除捕获到的所有请求
-
:启用SSL代理
-
:红点状态说明正在捕获请求,灰色状态说明目前没有捕获请求。
-
:灰色状态说明是没有开启网速节流,绿色状态说明开启了网速节流。
-
:灰色状态说明是没有开启断点,红色状态说明开启了断点。
-
:编辑修改请求,点击之后可以修改请求的内容。
-
:重复发送请求,点击之后选中的请求会被再次发送。
-
:验证选中的请求的响应。
-
:常用功能,包含了 Tools 菜单中的常用功能。
-
:常用设置,包含了 Proxy 菜单中的常用设置。
抓取 Https
在Android设备上抓取https的数据时, 首先需要确保电脑和手机要在同一个路由器网络下。
PC端
-
需要关掉防火墙,或者将Charls允许通过防火墙。
-
打开 Charles 的代理功能:通过主菜单打开 Proxy | Proxy Settings 弹窗,填入代理端口(端口默认为
8888,不用修改),勾选Enable transparent HTTP proxying。 -
如果不需要抓取电脑上的请求,可以取消勾选 Proxy | Windows Proxy 和 Proxy | Mozilla FireFox Proxy。
-
安装 Charles 证书:通过 Charles 的主菜单 Help | SSL Proxying | Install Charles Root Certificate 安装证书。(需要将证书设置为信任可参考 Charles证书安装 )
-
打开SSL代理
Proxy->SSL Proxying Settings->SSL Proxying->Add
Host: 为需要过滤的域名地址,*表示不过滤
Port: 固定为443,*表示任意端口
手机端
-
通过 Charles 的主菜单 Help | Local IP Address 或者通过命令行工具输入
ipconfig查看本机的 IP 地址。 -
设置代理:打开手机端的 WIFI 代理设置,输入电脑 IP 和 Charles 的代理端口。
-
确保手机通过Charles设置的代理连接成功后,使用手机上原生的浏览器访问chls.pro/ssl,安装证书。(如果手机无法完成安装,可通过电脑下载下来并修改后缀为
.crt,复制到手机根目录进行安装)。 -
现在就可以正常抓取Https包了
文章参考: