Charles 抓包从入门到精通

2022-01-14  本文已影响0人  弹吉他的少年

Charles 简介

Charles是目前最主流的网络调试工具,也有叫它 花瓶,对于一个开发者来说与网络打交道是日常需求,因此很多时候我们需要调试参数、返回的数据结构、查看网络请求的各种头信息、协议、响应时间等等
Charles 通过将自己设置为系统的网络访问代理服务器,这样所有的网络请求都会通过它,从而实现网路请求的截获和分析
Chareles不仅可以分析电脑本机的网络请求(HTTPHTTPS),还可以分析移动端设备的网络请求

安装 Charles

Charles 初始化设置

Charles工作原理是将自身设置为系统的代理服务器来捕获所有的网络请求,设置Charles为系统的代理服务器
打开Charles,设置为系统的代理服务器。选择菜单Proxy -> macOS Proxy
也可以使用快捷键 Shift + command + P

之后你的电脑上的任何网络请求都可以在 Charles 的请求面板中看到
看看 Charles 的主界面

[图片上传失败...(image-cd3474-1632447180919)]

过滤网络请求

可以将电脑或者设置过的手机的所有网络请求捕获到,而且我们分析网络传输应该是针对某个特定的网络下的抓包分析,为了清楚明显地看到需求网络请求

[图片上传失败...(image-cec616-1632447180919)]

截取HTTP/HTTPS数据

截取 HTTP 请求

Charles 的主要目的是抓取捕获网络请求

[图片上传失败...(image-22f202-1632447180919)]

截取 HTTPS 请求

如果你需要在Mac捕获 HTTPS 协议的网络请求,那么则需要安装 Charles 的 CA 证书

如果你需要捕获移动设备的 HTTPS 网络请求,则需要在移动设备上安装证书并作简单的设置

[图片上传失败...(image-dd90d0-1632447180919)]

*:代表通配符

模拟弱网环境

在平时开发的时候我们经常需要模拟弱网环境,并作弱网环境下的适配工作
菜单栏选择 Proxy -> Throttle Settings,在弹出的面板上设置网络请求的参数(上行,下行带宽、利用率、可靠性等等信息)

[图片上传失败...(image-d7ff1c-1632447180919)]

如果你想对指定主机进行弱网环境下的测试,可以点击上图的Add按钮,在弹出的面板上设置协议、主机、端口来对指定的主机进行弱网设置

修改网络请求

对于捕获的网络请求,需要修改网络请求的cookie、Headers、Url等信息
需要选中需要修改编辑的网络请求,在对应的右上角看到有一个“钢笔”的按钮,点击后就可以对选中的网络请求进行编辑,编辑好后可以在右下角看到 Execute 按钮

[图片上传失败...(image-e3832b-1632447180919)]

修改服务器返回内容

修改接口返回的数据节点或者内容、甚至是状态码,比如数据为空、数据异常、请求失败、多页数据的情况。

Charles有很多超实用的功能

Map 功能

菜单栏选择Tools -> Map RemoteMap Local 即可进入相应的功能模块

适合于切换线上到本地、测试服务到正式服务的场景

[图片上传失败...(image-c01e0f-1632447180919)]

保存某个网络数据,选中某个网络右键将接口的响应内容Save Response保存下来成为data.json文件

[图片上传失败...(image-1336ea-1632447180919)]

之后这个请求的内容都从网络变为返回我本地data.json数据

[图片上传失败...(image-f665aa-1632447180919)]

Breakpoints 功能

特点是只是针对当前的网络请求,Breakpoints 只存在于设置过的当前的网络请求,Charles 关闭后下次打开 Breakpoints 消失
对于我们设置 Breakpoints 的网络请求,下次继续访问该请求的时候停止掉,就跟 debug 一样

请求网络后Edit Response,点击execute后服务端返回的结果就是Text编辑的内容

[图片上传失败...(image-73dad1-1632447180919)]

服务器压力测试

Repeat功能地对服务器进行并发访问进行压力测试
选中某个网络请求 -> 右键 -> Repeat Advanced -> 设置迭代次数和并发数 -> 点击OK

[图片上传失败...(image-39cc4f-1632447180919)]

专业的压力测试工具:Load Runner

反向代理

反向代理功能允许将本地指定端口的请求映射到远程的另一个端口,点击顶部菜单栏 Proxy -> Reverse Proxies
将本地的 65407 端口映射到远程的 80 端口上,当继续访问本地的 65407 端口,实际返回的就是远程 80 端口的提供的内容

[图片上传失败...(image-a9eab3-1632447180919)]

解决与翻墙软件的冲突

Charles的工作原理是把自己设置为系统的代理服务器,开发者经常会利用 VPN 翻墙访问谷歌查找资料(翻墙软件的工作原理也是把自己设置成为系统的代理服务器)
解决两者共存可以在 Charles 的External Proxy Settings中将翻墙的代理端口等信息填写,同时我们需要关闭翻墙软件的自动设置,更改为手动模式,使其不主动修改系统代理

上一篇 下一篇

猜你喜欢

热点阅读