Charles-抓包使用手册

不管是移动开发者还是测试者,抓包工具对于我们的工作都是非常有帮助的,而 Charles 是一款非常优秀的抓包工具。Charles 不仅可以帮助我们抓取服务器返回的数据,还可以修改请求参数、修改响应体,基本上HTTP能修改的东西,Charles都能帮我们修改。所以当我们接口在 Mock 阶段时我们可以通过 Charles 设置我们本地的 JSON 数据,加速我们的开发。而且还能模拟弱网环境,帮助我们调试网络极端情况的用户体验,下面我们就一起来体验下Charles的功能吧。

1. 安装下载

首先到 Charles 官网下载,根据自己电脑的配置下载对应的版本,一直 Next 安装,打开之后提示需要注册,然后 XX 一下就可以愉快地玩耍了。

2. 初始设置

1. 打开之后进到初始化界面:
初始设置
  • 打开小红点代表开始抓包。
  • 打开旁边的小锁头表示允许抓取 SSL 网络 也就是允许允许抓取 Https。
2. 查看 Charles 代理监听的端口号,Proxy -> Proxy Settings , 一般机器上默认是 8888 端口, 如下图所示:
代理设置
3. 接下来是手机设置,以 Android 手机为例,进入我们已经连接的 WIFI(有些手机需要长按连接的 wifi 名称然后点击高级设置),设置该WIFI,代理改成手动,然后将主机名改成你电脑的 IP 地址,端口用上面的,然后点击保存。保存后最好重连 wifi 让刚才的设置生效。(电脑 IP 地址可通过 ipconfig 命令行查看)

手机设置
设置好之后,Charles 会弹出一个框,提示是否允许手机进行连接,接受即可,如下图所示:
手机提示
如果你不小心点击了 拒绝(Deny),也可以在这里: Proxy -> Access Control Settings 进行添加你的手机IP:
添加手机IP
当操作到这一步就可以抓取 Http 请求了。

2. 抓包 HTTPS

HTTPSHTTP 的一大区别就是 HTTPSHTTP 多了一个 CA 证书。因此当我们要抓取HTTPS 时需要电脑和手机安装证书 (Help -> SSL Proxying)。

安装证书
电脑上安装证书很方便,一直 Nex 就可以了,不用任何设置。这里讲下手机上安装证书,因为手机上安装证书可能会遇到问题:点击上图的第二个 , 会给我们安装提示:
手机安装证书提示
提示框意思是说,在手机设置好代理后,在手机浏览器中访问 chls.pro/ssl 下载证书。这里需要注意的是,有的手机可能会提示:无法安装该证书,因为无法读取证书文件。解决方法是不要使用系统的浏览器下载,使用第三方浏览器下载 UC 或者 Edge 浏览器。下载完成后,证书文件名可能是:charles-proxy-ssl-proxying-certificate.pem。证书下载完成后,在手机上安装该证书,流程如下(小米手机为例):

打开手机 设置 -> 更多设置 -> 系统安全 -> 从SD卡安装 , 然后输入你自定义的证书名称即可。

电脑和手机上证书都安装完毕后,在Charles上开启 SSL Proxy (Proxy -> SSL Proxying Settings ):也就是前面说到的那个小锁的标志

允许抓取HTTPS
一般经过以上步骤就可以抓取 HTTPS 请求了。

2.1 模拟慢网速

可以在 Proxy -> Throttle Settings(相当于初始界面上的小乌龟)设置网络速度,还可以自定义带宽 (Bandwidth):

模拟满网速启动
具体操作步骤是 点击下面的 Enable Throttling,然后在下面的 Throttle preset 中选择带宽。
慢网速

2.2 Map 映射功能

Map 映射包含两种一种是 Map RemoteMap Local。设置路径:Tools -> Map Local / Remote,如果这个URL已经请求过,可以对该请求单击右键,然后点击 Map Local/Remote

Map Remote 顾名思义就是把匹配的请求映射到另一个远程URL,Map Local 是将匹配的请求映射到本地文件。设置本地文件时注意要是 UTF-8 编码的,否则中文会出现乱码

map映射
然后就可以选择自己所需的映射文件:
image.png

2.3 Map 映射功能

可以使用 Charles 在某个网络请求的时候进行断点, Proxy -> BreakPoint Settings这样可以精确的定位某个网络请求:

断点设置

除了上面的手动添加需要断点的 URL,如果这个 URL 已经请求过,可以对该请求单击右键,然后点击 Breakpoints 添加断点。通过断点功能,下次请求时,可以修改 Request 参数 和 Response 返回值。需要注意的是修改完 Request 参数需要点击 Excute 按钮,请求成功后,才能修改 Response 返回值。

通过断点修改请求
获取修改请求后修改返回数据:
修改返回数据

2.4 Compose 功能修改 Request

还可以通过 Charles 修改请求的 URL、Method、Header、Parameter等,修改方式:对请求单击右键,然后点击 compose 按钮。
修改请求
2.4 Rewrite 重写功能

Rewrite重写功能是全局设置的,并不是对某个请求单击右键的方式临时操作下, Rewrite 可以

  • 修改请求头(Add/Modify/Remove Header)
  • 修改Host/Path/URL
  • 修改请求参数(Add/Modify/Remove Query-Parameter)
  • 修改响应状态(Response Status)
  • 修改Body

Rewrite设置路径: Tools -> Rewrite

Rewrite

2.5 Repeat 重试功能

Repeat 功能有两种:

  • 一种是简单的重试一次(Repeat)
  • 还有一种 Repeat advances 可以设置重试的次数和并发的数量。

重试一次主要用于是和服务端联调,如果接口有问题,服务端开发人员可能需要在后台代码打断点的方式来排查问题。这个时候,我们不需要在 app 中重新重复上次的请求(可能需要填写字段比较多或者界面链路比较长),只需要在Charles中对该请求单击右键,然后 Repeat 即可。Repeat advances 可以来对服务器进行压力测试,或者批量提交写数据等,如:
重试

当我们在抓包的时候,有时只需要抓取手机上的请求,这时可以设置不抓取 PC 上的请求:
Proxy -> Proxy Settings 在 Windows 面板设置不抓取 PC 请求即可:


设置不抓取PC请求

希望本文对你有所帮助~

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 162,825评论 4 377
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 68,887评论 2 308
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 112,425评论 0 255
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,801评论 0 224
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 53,252评论 3 299
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 41,089评论 1 226
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 32,216评论 2 322
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 31,005评论 0 215
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,747评论 1 250
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,883评论 2 255
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,354评论 1 265
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,694评论 3 265
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,406评论 3 246
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,222评论 0 9
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,996评论 0 201
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 36,242评论 2 287
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 36,017评论 2 281