时间会让我们更好。   

APP抓包神器 - Charles十式

花了一天,研究了Charles的使用,坐下记录,备忘。

1.将 Charles 设置成系统代理

Proxy -> Proxy Settings:默认8888端口,勾选 Enable transparent HTTP proxying

如果是https,Proxy -> SSL Proxy Settings:SSL Proxying选项:勾选 Enable SSL Proxying,下面的列表,填入需要监听的域名或IP地址

2.Charles 主界面介绍

两种模式:Structure和Sequence

  • Structure:请求按访问域名分类
  • Sequence:请求按访问时间排序

Filter中可以输入域名或者IP关键词过滤。

3.过滤网络请求

(1)在Filter中过滤

(2)Proxy -> Recording Settings:Include选项:点击 Add,新增需要监听的协议、主机、端口、路径等信息

(3)选择域名或者请求,右键 Focus

4.监听手机上的网络封包和Https通讯信息

Android设置:在WIFI中设置手动代理,填入电脑IP和Charles端口,然后在浏览器中输入 chls.pro/ssl。下载并安装ssl证书

5.模拟慢速网络

Proxy -> Throttle Settings:勾选 Enable Throttling,选择模拟的网络模式:3G、4G、光纤等

6.修改网络请求内容

选择 Sequence,找到目标请求,右键 Compose(旧版本是Edit),修改参数,点击 Execute 执行。

7.给服务器做压力测试

选择 Sequence,找到目标请求,右键 Repeat Advanced...,填入重复次数和并发次数。

8.修改服务器返回内容

(1)Map 功能

适合长期地将某一些请求重定向到另一个网络地址或本地文件。

a.Map Remote:将指定的网络请求重定向到另一个网址请求地址

需要填写网络重定向的源地址和目的地址,对于不需要限制的条件,可以留空。

b.Map Local:将指定的网络请求重定向到本地文件

需要填写的重定向的源地址和本地的目标文件。对于有一些复杂的网络请求结果,我们可以先使用 Charles 提供的 “Save Response…” 功能,将请求结果保存到本地,然后稍加修改,成为我们的目标映射文件。

(2)Rewrite 功能

适合对网络请求进行一些正则替换(v4.2.7中暂未发现此功能入口)。

(3)Breakpoints 功能

适合做一些临时性的修改。当指定的网络请求发生时,Charles 会截获该请求,我们可以在 Charles 中临时修改网络请求的请求和响应内容。需要注意,使用 Breakpoints 功能将网络请求截获并修改过程中,整个网络请求的计时并不会暂停,所以长时间的暂停可能导致客户端的请求超时。

9.反向代理

Charles 的反向代理功能允许我们将本地的端口映射到远程的另一个端口上。
Proxy -> Reverse Proxies Settings,勾选 Enable Reverse Proxies,点击 Add,新增端口和映射地址。
设置外部代理,解决与翻墙软件的冲突:以在 Charles 的 External Proxy Settings 中,设置翻墙的代理端口以及相关信息。同时,我们也要关闭相关翻墙软件的自动设置,使其不主动修改系统代理,避免 Charles 失效。

10.端口转发

Proxy -> Port Forwarding,勾选 Enable Port Forwarding,点击 Add,新增本地端口和目标地址端口。