Charles工具基本使用详解

news/2024/7/20 20:15:51 标签: 软件测试, android, ios

学习一个工具,必须要先了解这个工具是干什么的,为什么可以这么用,应该怎么用,下面将会围绕着这三个问题对Charles进行介绍:

Charles功能

Charles是一种pc端常用的网络封包截取工具,在做移动端开发时,可以利用它进行网络封包截取,更好地调试与服务器之间的通信协议,也可以利用它分析第三方应用通信协议,可以抓取HTTP协议、HTTPS协议,以及WebSocket协议等

Charles工作原理

Charles将自己设置为系统的网络访问代理服务器,使客户端将原来发送给服务器的请求先发送给Charles,再由charles转发给服务器,服务器将响应结果返回给Charles,Charles再将结果返回给客户端,从而实现了网络封包信息的截取与分析
在这里插入图片描述

Charles的安装

官网下载网址:点击前往下载
下载后如下,进行安装,只需要傻瓜式地点next:
在这里插入图片描述
在这里插入图片描述
安装完成后,在桌面会有个瓷花瓶的快捷小图标:
在这里插入图片描述
点击小图标出现以下界面就表示安装成功了:
在这里插入图片描述
注意:Charles属于半免费,安装使用30天后,每次打开使用30min就会强制性关闭,非正版点开后还会有10s的等待时间。所以为了能够使用得更加流畅,可以购买正版哦!

Charles组件介绍

charles界面包括四大部分内容:主导航栏(设置栏)、抓取到的请求、请求内容、响应内容
在这里插入图片描述

设置栏

File:可在发现问题时,利用导入导出传递当时抓取到的接口信息进行沟通,排查问题

在这里插入图片描述

Edit:编辑

在这里插入图片描述

Find:查询

在这里插入图片描述

Charles Preferences:偏好设置

User Interface:用户界面设置

在这里插入图片描述

View:视图选项

在这里插入图片描述
在这里插入图片描述

Launch: 启动设置

在这里插入图片描述

Warnings:警告设置

在这里插入图片描述

View 视图菜单:主要是设置查看的视图结构

Highlight Rules:高亮显示设置的请求

在这里插入图片描述

Focused Hosts:设置访问焦点,设置后,抓包列表结果只展示设置的关注接口

在这里插入图片描述

        抓包结果不在Focused Hosts中设置的,将会全部显示在Other Hosts中:
        在这里插入图片描述

Viewer Mapping:设置需要重写服务器返回内容的请求接口,对接口可能返回的各种结果数据进行快速验证

    在这里插入图片描述

Protobuf Settings:添加由ProtoBuf生成的对应.desc文件,为了解析ProtoBuf数据流

在这里插入图片描述

    在这里插入图片描述
在这里插入图片描述

Proxy

在这里插入图片描述

Start/Stop Recording:按照记录设置中的规则开始/暂停记录

    此暂停只是不将请求展示在界面上,但是仍然通过Charles进行请求响应
    Recording Setting:设置记录规则
        Options:设置可记录文件的大小,以及请求个数
        Include:只展示记录列表中的请求
        Exclude:不展示记录列表中的请求

在这里插入图片描述

SSL Proxying Settings:设置需要捕获的ssl信息,必须填写,不填写则无法捕获到相关信息

在这里插入图片描述

stop/start throttling:按照Throtting Settings设置的规则开始/暂停模拟慢网速

    Throtting Settings:设置网速、带宽、稳定性等
Brandwidth:带宽
Utilisation:带宽可用率
Round-trip latency:第一个请求的时延
MTU:最大可传输单元
Reliability:连接的可靠性,指10KB的可靠率
Stability:连接稳定性
Unstable quality range:不稳定范围
在这里插入图片描述

Enable/Disable Breakpoints:按照Breakpoints Settings中设置的规则启动/禁用断点

              启动断点后返回到Charles的响应信息不会立刻传给客户端,通过设置断点在Charles中观察或者修改请求或者返回的内容

Breakpoints Settings:断点规则设置

           设置需要进行断点的请求host
在这里插入图片描述

Reverse Proxies:反向代理

正向代理:帮助客户端进行发送请求,接收响应,代理端是客户端,正常使用Charles进行抓包
反向代理:帮助服务器发送请求,接收响应,代理端是服务器,多用于请求发送到多台服务器的负载均衡
设置:Local Port 本地端口,会随机生成一个可用的端口号,在此端口上进行反向代理
   Remote host/Remote port 作为代理目的地的远程主机和端口号,默认为HTTP的端口号80
   Rewrite redirects:重写重定向,将客户端重定向到远程服务器的地址,重写为由客户端将响应信
           息直接发送给反向代理的本地地址,如果不选择,则重定向后的响应会直接发
           送给远程服务器,Charles将抓取不到响应信息
   Preserve host in header fields:保留主机头
   Listen on a specific address:监听特定的地址

在这里插入图片描述

Port Forwarding:端口转发

端口转发是转发一个网络端口从一个网络节点到另一个网络节点的行为,其使一个外部用户从外部经过一个被激活的NAT路由器到达一个在私有内部IP地址(局域网内部)上的一个端口
在这里插入图片描述

Windows Proxy:电脑使用Charles作为代理

Proxy Settings:设置代理端口

在这里插入图片描述
在这里插入图片描述

DNS Settings:通过将您自己的主机名指定给远程地址映射来欺骗DNS查找

引用:一般的开发流程中,在上线之前都需要在测试环境中先行进行验证,而此时手机客户端请求的域名是不太容易改变的,可以通过设置dns方式把域名转发到测试机上,具体设置Tools->DNS Spoofing Settings
官方文档上的介绍:

  • 当请求通过Charles时,您的DNS映射将优先。
  • 在DNS更改之前,DNS Spoofing可用于测试虚拟托管网站,因为您的浏览器将会像DNS更改一样运行。
  • DNS更改通常需要长达24小时才能生效,并且没有DNS欺骗,DNS变更生效后,网站将会变得非常困难。
  • 可以将主机名映射到IP地址或另一个主机名,这些名称将由Charles在DNS中查找以查找其IP地址

Access Control Settings:访问账户设置,限制访问Charles的请求,本地默认可直接访问

Prompt to alow unauthorized connections:勾选该设置,则未在列表中的ip访问Charles时,charles会弹出是否允许访问的提示信息,不勾选,则不会弹框提示,将直接屏蔽除列表内的ip访问
在这里插入图片描述

External Proxy Settings:外部代理设置

用于需要使用网络上的代理服务器访问网络的场景,比如通过VPN访问外网,如果在一台服务器上同时打开VPN和Charles,Charles是无法生效的,此时需要配置该处
Web Proxy Server 设置VPN的Host和Port
Proxy server requires a password:配置身份验证和外部代理请求认证,如果没有配置,则Charles直接向服务器发送验证请求
Bypass external proxies for the following hosts:设置绕过外部代理直接进行请求的hosts
在这里插入图片描述

External DNS Resolver Settings:外部DNS解析程序设置

Web Interface Settings:Charles web界面设置

Web界面可以让您使用Web浏览器控制查询,您可以访问http://control.charles的Web界面,当查询运行时,您可以启用此功能并配置下面的访问控制;
在这里插入图片描述
在这里插入图片描述

Tools

在这里插入图片描述

No caching Settings:无缓存设置

   通过操纵控制缓存响应的HTTP头来防止缓存;只选择Enable No Caching,则禁止缓存所有,同时
   选择Enable No Caching和Only for selected locations,则只禁止缓存列表中的请求Header
    从请求中删除If-Modified-Since和If-None-Match头,添加Pragma:no-cache和Cache-control:
    no-cache。
    从响应中删除Expires,Last-Modified和ETag标头,添加Expires:0和Cache-Control: no-cache
在这里插入图片描述

Block Cookies:禁止Cookies设置

   禁用Cookie工具阻止发送和接收Cookie,只选中enable block cookies时,则禁止接收和发送所有
   cookies值;当同时选中enable block cookies和only for selected locations时,只针对列表中的域
   名
    Cookie头部从请求中删除,防止将cookie值从客户端应用程序(例如Web浏览器)发送到远程
    服务器
    Set-Cookie头将从响应中移除,从而防止客户端应用程序从远程服务器接收cookie的请求
在这里插入图片描述

Map Remote:远程映射到URL地址,将某个网络请求进行重定向到另一个网络请求,然后用重定向后的内容来响应请求的内容

在这里插入图片描述
在这里插入图片描述

Map Local:映射到本地,将某个网络请求进行重定向到本地的某个文件,然后用重定向后的内容来响应请求的内容

在这里插入图片描述
在这里插入图片描述

Rewrite:重写工具,修改请求和响应的rule

eg:访问所有http://www.baidu.com成功的接口,原本返回的status为200,目前通过重写返回的status,导致访问成功的status由200变成了401
在这里插入图片描述
在这里插入图片描述

Block List:黑名单,阻止对匹配HOST的请求;可以直接把请求丢掉,也可以直接返回403状态码;如果一个请求与“黑名单”和“白名单”同时匹配成功,则会被阻止

在这里插入图片描述

Allow List:白名单,阻止对没有匹配到的HOST的请求;可以直接把请求丢掉,也可以直接返回403状态码;如果一个请求与“黑名单”和“白名单”同时匹配成功,则会被阻止

在这里插入图片描述

DNS Spoofing:DNS欺骗

通过将您自己的主机名指定给远程地址映射来欺骗DNS查找,一般的开发流程中,在上线之前都需要在测试环境中先行进行验证,而此时手机客户端请求的域名是不太容易改变的,可以通过设置dns方式把域名转发到测试机上
在这里插入图片描述

Mirror:镜像工具

浏览指定网站时,把抓取到的文件克隆一份,并保存在指定的路径下,适合抓取少量文件,且只存储
该文件下的资源,不会存储该文件引用的外部文件,传送到客户端的压缩或者编码的响应会被解码
在这里插入图片描述

Auto Save:自动存储

设定时间间隔后,自动保存并清除抓取到的内容,适用于离开Charles监视长时间的网络活动,第一个保存间隔将缩短以满足自然小时内可间隔数为整数,比如您在10:02设置的间隔时间为5min,则第一次自动保存并清除抓取到的内容的时间为10:05,之后每隔5min保存并清除一次
在这里插入图片描述

Client Process:客户端进程,在每个请求的“备注”区域中显示负责进行每个请求的本地客户端进程的名称,可以帮助发现许多可能未知的HTTP客户端,仅适用于在运行Charles的计算机上发出的请求

Compose:在原有的请求基础上修改请求

Compose New:创建一个和原来一样的新的请求进行修改修改请求值

在这里插入图片描述

Repeat:批量重复请求,将请求重新发送到服务器,并将响应显示为新请求,此过程直接通过Charles

        向服务器目标进行请求,因此不能在客户端找到相应的接口及传参,对于需
        要传多参数的请求,这个功能大大简化了设置参数的过程

Advanced Repeat:高级重复批量请求,可用来测试短信轰炸漏洞或者后端性能等

在这里插入图片描述

Validate:验证工具

Publish Gist:发布代码段

Profiles:界面

Publish Gist Settings:Gist发布设置,可设置自己GitHub的账号,若是没有设置,则发布的代码段将会已匿名形式发布出去,并且无法进行删除;可设置发布的代码段的大小以及发布的形式是公开还是私密

Window

在这里插入图片描述

Help

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

工具栏

在这里插入图片描述

抓取到的请求导航栏

  • Structure :按访问的域名进行分类显示接口请求
  • Sequence :按接口请求时间显示数据
  • Filter:根据域名进行请求过滤
    在这里插入图片描述
    在这里插入图片描述

请求内容

Overview:记录请求的大致内容,包括请求的URL、返回的状态码、使用的协议、客户端地址、服务器地址、数据传递大小等

Content:具体的请求内容

Headers:数据返回的头部信息

Query String:查询条件

Raw:未经任何处理的请求数据

在这里插入图片描述

Summary:请求大致资源信息,包括请求数据大小、请求响应状态、请求消耗时间

Chart:以表格形式告诉我们一个响应时间的分布情况

Notes:备注信息,可点击填写备注信息

在这里插入图片描述

响应内容:

header:响应的头信息

Text:文本形式展示响应内容

Hex:16进制,一般不查看

JavaScript:脚本展示

JSON:以json格式查看响应内容

JSON Text:将json格式的内容展开书写

Raw:详情内容的详细情况

在这里插入图片描述

Charles代理设置

Window 代理设置

Charles默认代理本地服务器,如果抓取不到本地服务器,查看浏览器是否开启代理
本地默认代理设置时是这样的(针对Google):地址 http=127.0.0.1:8888;https=127.0.0.1:8888
在这里插入图片描述
代理远程服务器,则进行如下操作:
步骤一:Charles配置代理端口号
在这里插入图片描述
步骤二:Charles设置可通过代理的服务器地址
在这里插入图片描述
步骤三:为了能够抓取到Https数据包,下载Charles根证书,并存储在受信任证书列表中(一般存储选择的系统区域,是受信任区域)
在这里插入图片描述

步骤四:查看Charles本地服务器地址,将该ip地址与端口号填入浏览器代理ip和端口号中
在这里插入图片描述
如下,打开Google浏览器代理:chrome://settings/
Setting–>系统–>打开您计算机的代理设置
在这里插入图片描述
在这里插入图片描述

Android 代理设置

步骤一、步骤二同window代理设置
步骤三:手机端下载Charles证书
在这里插入图片描述
点击后提示操作步骤,此过程Charles必须一直处于启动状态
在这里插入图片描述
1、将手机与代理服务器置于同一网络,然后将手机设置代理:10.0.6.251:8888
在这里插入图片描述

2、浏览器输入:chls.pro/ssl ,进行下载证书,下载后进行安装,
real me 手机:安装后可进入手机 设置–>安全–>凭据存储–>信任的证书–>用户 查看是否安装成功且已设置为受信任
vivo 手机:安装后可进入手机 设置–>更多设置–>安全–>受信任的凭据–>用户 查看是否安装成功且已设置为受信任
注意:下载的证书可能与手机可安装证书类型不一致,这时候需要修改下证书名或者从存储设备中安装
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

IOS代理设置

步骤一、步骤二同Android代理设置
步骤三:前几个步骤同Android设置,安装证书,将证书设为可信任凭证如下:
    设置–>通用–>描述文件与设备管理–>找到下载的证书 Charles Proxy CA–>点击右上角的‘安装’
在这里插入图片描述

  安装完成后将证书设置为可信任:
    设置–>通用–>关于本机–>证书信任设置–>找到对应的证书,开启信任
在这里插入图片描述

Charles弱网测试

设置Proxy–>Throttle Settings,勾选Enable Throttling,如果不勾选Only for selected hosts,则默认限制所有通过Charles的请求网速,勾选Only for selected hosts,则只针对列表中的Host进行限速测试,网速设置的对应值可参考组件介绍
在这里插入图片描述

Charles断点测试

设置需要断点的接口信息:
在这里插入图片描述
重新请求所设置的接口,charles自动跳转到断点设置的接口,展示相关信息,可进行编辑,点击Execute,将修改后的信息进行请求,并将结果返回给客户端
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述


http://www.niftyadmin.cn/n/652908.html

相关文章

如何在CentOS 7中使用nmcli工具管理网络

nmcli是用于控制NetworkManager和报告网络状态的命令行工具。nmcli用于创建、显示、编辑、删除、激活和停用网络连接,以及控制和显示网络设备状态。 基本用法 nmcli [OPTIONS...] {help | general | networking | radio | connection | device | agent | monitor} …

协议详解-HTTP

http(Hyper Text Transfer Protocal)超文本传输协议,应用于Web浏览器与Web服务器之间的通信,即WWW应用或Web应用,规定了客户端与服务器的数据传输格式,是基于请求和响应模式的无状态(数据传递后不记录信息&…

HTTP请求常见字段cookie、session、token鉴权

上次介绍了HTTP的原理以及HTTPS的加密过程,本章将围绕HTTP请求常见的字段cookie、session、token进行详解! HTTP引入cookie和session的原因 我们知道,HTTP是一种无状态协议,一旦数据进行交易后,连接就会断开&#xf…

Ubuntu 18.04 LTS安装vncserver虚拟网络控制台

虚拟网络控制台(VNC)是一个图形桌面共享软件,允许您使用键盘和鼠标远程控制另一台计算机。 系统环境 服务端:Ubuntu 18.04 Server LTS客户端:Windows10客户端VNC-Viewer 6.20下载地址:https://www.realvnc…

实现kubernetes容器状态同步机制核心

在K8s中将Pod调度到某一台Node节点之后,后续的状态维护信息则是由对应机器上的kubelet进行维护,如何实时反馈本地运行状态,并通知apiserver则是设计的难点, 本节主要是通过感知Pod状态变化和探测状态改变两个流程来实际分析其核心…

Fiddler详解-Fiddler Classic

Fiddler和Charles一样,都是网络封包截取工具。可以利用Fiddler抓取web端、移动端与服务器之前的接口请求,测试人员可以根据请求数据快速地定位出软件出现bug的原因(是前端处理数据不当还是后端提供的接口数据有问题),研…

分享Linux系统快速入门法

相信看到这篇文章的你一定是想要学习Linux,或者已经在学习Linux的人了,那我们就可以一起探讨一下,学习Linux如何快速入门呢? 首先,希望大家弄清楚自己为什么要学习Linux,有的人是因为兴趣,有的…

解决 Windows8(RP)Metro IE10 打不开 或 闪退

Windows8(RP)Metro IE10 闪退在 控制面板 中找到 程序和功能,打开 启用或关闭 Windows功能卸载 Internet Explorer 10系统重启后重装 Internet Explorer 10Internet Explorer 10重装后,Metro IE10 闪退问题便解决了针对网友提供的…