Charles-抓包使用手册
文章图片
不管是移动开发者还是测试者,抓包工具对于我们的工作都是非常有帮助的,而 Charles 是一款非常优秀的抓包工具。Charles 不仅可以帮助我们抓取服务器返回的数据,还可以修改请求参数、修改响应体,基本上HTTP能修改的东西,Charles都能帮我们修改。所以当我们接口在 Mock 阶段时我们可以通过 Charles 设置我们本地的 JSON 数据,加速我们的开发。而且还能模拟弱网环境,帮助我们调试网络极端情况的用户体验,下面我们就一起来体验下Charles的功能吧。
1. 安装下载
【Charles-抓包使用手册】首先到 Charles 官网下载,根据自己电脑的配置下载对应的版本,一直 Next 安装,打开之后提示需要注册,然后 XX 一下就可以愉快地玩耍了。
2. 初始设置
1. 打开之后进到初始化界面:
文章图片
初始设置
- 打开小红点代表开始抓包。
- 打开旁边的小锁头表示允许抓取 SSL 网络 也就是允许允许抓取 Https。
![Charles-抓包使用手册](https://img.it610.com/image/info10/b63c6c5513d04def91fe903b01c86de7.jpg)
文章图片
代理设置 3. 接下来是手机设置,以 Android 手机为例,进入我们已经连接的 WIFI(有些手机需要长按连接的 wifi 名称然后点击高级设置),设置该WIFI,代理改成手动,然后将主机名改成你电脑的 IP 地址,端口用上面的,然后点击保存。保存后最好重连 wifi 让刚才的设置生效。(电脑 IP 地址可通过 ipconfig 命令行查看)
![Charles-抓包使用手册](https://img.it610.com/image/info10/c65f3f633d114ce090c04d1910e4d2b3.jpg)
文章图片
手机设置 设置好之后,Charles 会弹出一个框,提示是否允许手机进行连接,接受即可,如下图所示:
![Charles-抓包使用手册](https://img.it610.com/image/info10/0e8dbd7ce41f4ddfa0f361c9855978b7.jpg)
文章图片
手机提示 如果你不小心点击了 拒绝(Deny),也可以在这里: Proxy -> Access Control Settings 进行添加你的手机IP:
![Charles-抓包使用手册](https://img.it610.com/image/info10/81b497a4dc8c44579916c94614dd2201.jpg)
文章图片
添加手机IP 当操作到这一步就可以抓取 Http 请求了。
2. 抓包 HTTPS HTTPS 与 HTTP 的一大区别就是 HTTPS 比 HTTP 多了一个 CA 证书。因此当我们要抓取HTTPS 时需要电脑和手机安装证书 (Help -> SSL Proxying)。
![Charles-抓包使用手册](https://img.it610.com/image/info10/a71be86b244340f5ac855b1df922f1aa.jpg)
文章图片
安装证书 电脑上安装证书很方便,一直 Nex 就可以了,不用任何设置。这里讲下手机上安装证书,因为手机上安装证书可能会遇到问题:点击上图的第二个 , 会给我们安装提示:
![Charles-抓包使用手册](https://img.it610.com/image/info10/376b73c3e0a34e6fbb3bad68e362c263.png)
文章图片
手机安装证书提示 提示框意思是说,在手机设置好代理后,在手机浏览器中访问 chls.pro/ssl 下载证书。这里需要注意的是,有的手机可能会提示:无法安装该证书,因为无法读取证书文件。解决方法是不要使用系统的浏览器下载,使用第三方浏览器下载 UC 或者 Edge 浏览器。下载完成后,证书文件名可能是:charles-proxy-ssl-proxying-certificate.pem。证书下载完成后,在手机上安装该证书,流程如下(小米手机为例):
打开手机 设置 -> 更多设置 -> 系统安全 -> 从SD卡安装 , 然后输入你自定义的证书名称即可。
电脑和手机上证书都安装完毕后,在Charles上开启 SSL Proxy (Proxy -> SSL Proxying Settings ):也就是前面说到的那个小锁的标志
![Charles-抓包使用手册](https://img.it610.com/image/info10/9a3d943d7f2b43fe99d3c80c47629563.png)
文章图片
允许抓取HTTPS 一般经过以上步骤就可以抓取 HTTPS 请求了。
2.1 模拟慢网速 可以在 Proxy -> Throttle Settings(相当于初始界面上的小乌龟)设置网络速度,还可以自定义带宽 (Bandwidth):
![Charles-抓包使用手册](https://img.it610.com/image/info10/c17b27ec3e9c411a877419b0b57e6098.jpg)
文章图片
模拟满网速启动 具体操作步骤是 点击下面的 Enable Throttling,然后在下面的 Throttle preset 中选择带宽。
![Charles-抓包使用手册](https://img.it610.com/image/info10/0b0c0fb055cb4148b03bc8621d3b7448.png)
文章图片
慢网速
2.2 Map 映射功能 Map 映射包含两种一种是 Map Remote 和 Map Local。设置路径:Tools -> Map Local / Remote,如果这个URL已经请求过,可以对该请求单击右键,然后点击 Map Local/Remote。
Map Remote 顾名思义就是把匹配的请求映射到另一个远程URL,Map Local 是将匹配的请求映射到本地文件。设置本地文件时注意要是 UTF-8 编码的,否则中文会出现乱码
![Charles-抓包使用手册](https://img.it610.com/image/info10/738f49d57ee6443398e1fbcc27af56c3.png)
文章图片
map映射 然后就可以选择自己所需的映射文件:
![Charles-抓包使用手册](https://img.it610.com/image/info10/c7a9673816d54defb5c19484fbc21642.png)
文章图片
image.png
2.3 Map 映射功能 可以使用 Charles 在某个网络请求的时候进行断点, Proxy -> BreakPoint Settings这样可以精确的定位某个网络请求:
![Charles-抓包使用手册](https://img.it610.com/image/info10/b852d2153d034f9693b355aa8ea461e2.png)
文章图片
断点设置
除了上面的手动添加需要断点的 URL,如果这个 URL 已经请求过,可以对该请求单击右键,然后点击 Breakpoints 添加断点。通过断点功能,下次请求时,可以修改 Request 参数 和 Response 返回值。需要注意的是修改完 Request 参数需要点击 Excute 按钮,请求成功后,才能修改 Response 返回值。
![Charles-抓包使用手册](https://img.it610.com/image/info10/93bfe094e2424e88bd85e08cf45c2ab1.jpg)
文章图片
通过断点修改请求 获取修改请求后修改返回数据:
![Charles-抓包使用手册](https://img.it610.com/image/info10/c7eb0a4acbe94e6aac54887716d957e7.jpg)
文章图片
修改返回数据
2.4 Compose 功能修改 Request
还可以通过 Charles 修改请求的 URL、Method、Header、Parameter等,修改方式:对请求单击右键,然后点击 compose 按钮。
![Charles-抓包使用手册](https://img.it610.com/image/info10/d8460e897ffd4ba786077a3f7e72e53d.jpg)
文章图片
修改请求 2.4 Rewrite 重写功能 Rewrite重写功能是全局设置的,并不是对某个请求单击右键的方式临时操作下, Rewrite 可以
- 修改请求头(Add/Modify/Remove Header)
- 修改Host/Path/URL
- 修改请求参数(Add/Modify/Remove Query-Parameter)
- 修改响应状态(Response Status)
- 修改Body
![Charles-抓包使用手册](https://img.it610.com/image/info10/fde2212f23224eec94c71fd2b41ba0b6.png)
文章图片
Rewrite
2.5 Repeat 重试功能 Repeat 功能有两种:
- 一种是简单的重试一次(Repeat)
- 还有一种 Repeat advances 可以设置重试的次数和并发的数量。
重试一次主要用于是和服务端联调,如果接口有问题,服务端开发人员可能需要在后台代码打断点的方式来排查问题。这个时候,我们不需要在 app 中重新重复上次的请求(可能需要填写字段比较多或者界面链路比较长),只需要在Charles中对该请求单击右键,然后 Repeat 即可。Repeat advances 可以来对服务器进行压力测试,或者批量提交写数据等,如:
![Charles-抓包使用手册](https://img.it610.com/image/info10/126656b115b9456fa1741faa409b25b8.png)
文章图片
重试 当我们在抓包的时候,有时只需要抓取手机上的请求,这时可以设置不抓取 PC 上的请求:
Proxy -> Proxy Settings 在 Windows 面板设置不抓取 PC 请求即可:
![Charles-抓包使用手册](https://img.it610.com/image/info10/13563fad6c0a4e17b782aaa1f5c1fcb6.png)
文章图片
设置不抓取PC请求 希望本文对你有所帮助~
推荐阅读
- 刘亦菲母女夜会金主(张柏芝爆想生4胎?baby被抓包买水军?)
- 工具|Wireshark抓包对其字TCP段理解
- 《人体24小时使用手册》,太好了,赶紧珍藏~
- Fiddler实现手机抓包——小白入门
- 抓包工具|抓包工具 charles
- 推荐八个高效测试工具
- 抓包就明白CoreDNS域名解析
- 网络抓包|网络抓包 tcpdump 使用指南
- App逆向思路
- https的抓包