[转]charles抓包,这一篇就够了,测试工程师基本功-菜单说明

发布时间 2023-11-24 11:00:54作者: 悟透

原文连接:

https://mp.weixin.qq.com/s?__biz=MzkwODIyMjAxMg==&mid=2247487797&idx=1&sn=20ab21d8e75c11a710e6aa64e4450512&source=41#wechat_redirect


一、介绍

Charles是一个HTTP代理服务器,HTTP监视器,反转代理服务器,其允许开发者查看所有连接互联网的HTTP通信,包括request,response和HTTP headers(包含cookies与caching信息)。

image

主要功能:

  • 支持SSL代理,可以截取分析SSL的请求/响应。
  • 支持流量控制,可以模拟慢速网络以及等待时间(latency)较长的请求。
  • 支持AJAX调试,可以自动将json或xml数据格式化,方便查看。
  • 支持AMF调试,可以将FlashRemoting或Flex Remoting信息格式化,方便查看。
  • 支持重发网络请求,方便后端调试。
  • 支持修改网络请求参数。
  • 支持网络请求的截获并动态修改。
  • 检查HTML,CSS和RSS内容是否符合W3C标准。

二、安装

官网下载地址:https://www.charlesproxy.com/download/

Charles是用java开发的,支持在Windows,Mac,Linux上安装使用。安装过程无序赘述。


三、视图界面说明

image

功能菜单

image

Charles

About Charles     ——  关于charles
Preferences       ——  偏好设置
Services          ——  服务
Hide Charles      ——  隐藏charles
Hide others       ——  隐藏其他
Show all          ——  显示所有
Quit Charles      ——  退出Charles




image

File 文件

New session         ——  新建会话
Open session        ——  打开会话
Clear session       ——  清除会话内容和??扫把图标功能一样
Close session       ——  关闭会话
Save session        ——  保存会话
Save session As     ——  会话另存为
Import...           ——  导入
Export session      ——  导出

image

Edit 编辑

Cut               —— 剪切
Copy              —— 复制
Paste             —— 粘贴
Select All        —— 选择全部
Find...           —— 查找
Find Next         —— 查找下一个
Find Previous     —— 查找上一个

image

View 视图

Structure          ——  结构视图
Sequence           ——  序列视图
Overview           ——  概观
Request            ——  请求
Response           ——  响应
Summary            ——  概括
Chart              ——  图标
Notes              ——  备注
View request as    ——  将请求视为
View response as   ——  将响应视为
Highlight rules    ——  突出显示规则
Focused hosts      ——  专注主机
Viewer mappings    ——  查看映射器
Protobuf settings  ——  序列化结构数据方法设置

image

Proxy 代理

Stop recording(session 1        ——   停止记录会话
Stop SSL Proxying                ——   停止SSL代理
Start throttling                 ——   开始节流
Enable breakpoints               ——   启用断点
Recording settings               ——   记录会话设置
SSL proxying settin              ——   SSL代理设置
Throttle settings                ——   节流设置
Breakpoint settings              ——   断点设置
Reverse proxyies settings        ——   反向代理设置
Port forwarding settings         ——   端口转发
macOS proxy                      ——   macOS代理
Proxy settings                   ——   代理设置
DNS settings                     ——   DNS设置
Access control settings          ——   访问控制设置
External proxy settings          ——   外部代理设置
External DNS resolver settings   ——   外部 DNS 解析器设置
Web interface settings           ——   网页界面设置

image

Tools 工具

No caching              ——  禁用缓存
Block cookies           ——  禁用cookie
Map remote              ——  本地映射
Map local               ——  远程映射
Rewrite                 ——  重写
Block list              ——  黑名单
Allow list              ——  白名单
DNS spoofing            ——  DNS欺骗
Mirror                  ——  镜像设置
Auto save               ——  自动保存
Client process          ——  客户端进程设置
Compose                 ——  编辑修改
Compose new             ——  编辑新的
Repeat                  ——  重复发包
Repeat advanced         ——  高级重复发包
Validate                ——  验证
Publish gist            ——  发布重点
Import/export settings  ——  导入/导出设置
Profiles                ——  配置文件
Publish gist settings   ——  发布重点设置

image

Window 窗口

Session                 ——  会话列表
Error log               ——  错误日志
Active connections      —— 正在进行访问的链接(可通过这里查看charles是否工作)
Toggle full screen      —— 切换全屏

image

Help 帮助

Registered to https://zhile.io         ——  登陆charles
Unregister charles                     ——  注销charles
About java                             ——  关于java
Local IP address                       ——  本地ip地址
SSL proxying                           ——  SSL代理
Install Charles root certificate       ——  安装Charles根证书
Install charles root certificate in IOS simulators       ——  在 IOS 模拟器中安装 charles 根证书
Install charles root certificate in java VMs             ——  在 java VM 中安装 charles 根证书
Install Charles root certificate on a mobile device or browser   —— 在移动设备或远程浏览器上安装Charles证书
Save charles root certificate                       —— 保存charles根证书
Export charles root certificate and private key     —— 导出Charles根证书和私钥
View generated SSL certificates keystore password   —— 查看生产的SSL证书密钥和存储密码
Check for updates                                   ——  检查更新
Visit website                                       —— 访问网站

界面

image

image


功能

1、点击Proxy——>选中macOsproxy,即可开始抓取浏览器请求。charles开启代理后,之前设置的代理会被强制修改成charles的。
2、charles安装根证书,点击Help——>SSL Proxying——>install Charles Root Certificate

如遇到无法导入证书,可先下载pem证书(http://chls.pro/ssl),点击安装,进入macOS系统的密钥串访问,双击刚安装的charles证书选择使用此证书时:始终信任。设置SSLProxying Settings——>Host:*|Port:443;这样抓取的https请求,contents就不存在乱码问题了。

3、Structure(结构视图),按访问域名分类;某个域名下有多个资源请求,所有此域名下的请求都会详细的分类。

Sequence(序列视图),按访问的时间分类,按照发送请求顺序。

过滤内容:

3.1、Filter功能,可输入关键字对URL进行过滤。
3.2、修改Include的域名和端口,点击Proxy——>Recording Settings,选择include,添加,填入要监控的通信协议,主机地址,端口号。这样就可以只截取添加的目标网址的包。
image

3.3、过滤焦点域名,在目标域名上右键选中focus,这就设置了一个焦点标记,其他域名请求在OtherHosts里,焦点域名在最上方展示,便于查看。设置的焦点域名在View——>Focused Hosts 管理;

image

4、在移动端安装ssl证书,Install Charles root certificate on a mobile device or browser

image

客户端需与charles服务端在同一网络环境,代理设置为charles服务端ip:8888

Ios:在浏览器里输入chls.pro/ssl,提示下载证书;在设置-通用-描述文件,点信任;再到设置-通用-关于本机-证书信任设置,选择打开。

Android:在浏览器里输入chls.pro/ssl,提示下载证书;在设置-安全-凭据存储-从存储设备安装证书-CA证书-选择下载的证书进行安装,安装成功后就可在信任的证书中看到用户安装已安装的证书。

5、map local(映射到本地文件)功能,目的是修改某个接口的返回信息。

可通过修改数据库中该接口的数据;

可通过maplocal功能映射本地文件。

首先确定接口返回的数据格式及内容,可通过接口文档获取或是抓包查看respones,保存到本地。

在接口上右键选择MapLocal,选择本地的映射文件。

image

6、Breakpoints功能,选中请求,右键,选中breakpoints,可以修改request或者response。
7、Repeat advanced功能,选中请求,右键,选中repeatadvanced,如图是设置4个并发请求,共请求20次。

image

8、慢网络设置,proxy-throttle setting。设置过慢网络,可通过小乌龟控制开关,可指定请求。

image

Bandwidth:带宽(k)带宽,指单位时间能通过链路的数据量。即每秒可传输之位数

Untilistion: 带宽利用率:带宽每秒收到、发送信息的效率

Round-trip latency: 请求往返延迟(ms),可以用来模拟网络延迟,即一个数据包从用户终端发送到服务器,然后再从服务器返回到终端的来回时间

MTU:最大传输单元,用来通知对方所能接受数据服务单元的最大尺寸,说明发送方能够接受的有效载荷大小。是包或帧的最大长度,一般以字节记。如果MTU过大,在碰到路由器时会被拒绝转发,因为它不能处理过大的包。如果太小,因为协议一定要在包(或帧)上加上包头,那实际传送的数据量就会过小,这样也划不来。

Reliability:可靠性,可以用来模拟丢包,指被传送的数据包无法通过网络传输到目标服务器或客户端

Stability:稳定性,可以用来模拟网络抖动,指分组延迟的变化程度。如果网络发生拥塞,排队延迟将影响端到端的延迟,并导致通过同一连接传输的分组延迟各不相同,而抖动,就是分组延迟的差值

Unstable quality range:不稳定质量范围,主要针对Stability设置的范围。