学习一个工具,必须要先了解这个工具是干什么的,为什么可以这么用,应该怎么用,下面将会围绕着这三个问题对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,将修改后的信息进行请求,并将结果返回给客户端


Charles工具基本使用详解相关推荐

  1. 内存测试工具memtester使用详解

    memtester的下载地址:http://pyropus.ca/software/memtester/  有源码安装包.deb包.rpm包等. 源码已经编译好,在linux下只要make一下就好了. ...

  2. php把proto解析为文档,Protobuf 文件生成工具 Prototool 命令详解

    Protobuf 文件生成工具 Prototool 命令详解 简介 Prototool 是 Protobuf 文件的生成工具, 目前支持go, php, java, c#, object c 五种语言 ...

  3. 2021-02-07 接口测试工具-Postman使用详解

    接口测试工具-Postman使用详解 1.安装postman 官网下载地址:https://www.postman.com/downloads/ 选择好对应的版本下载,下载完后直接安装即可. 2.po ...

  4. 可视化数据库管理工具DataGrip使用详解

    参考链接:https://www.hangge.com/blog/cache/detail_2829.html 日常开发中少不了各种可视化数据库管理工具.如果需要同时能连接多种数据库,大家肯定都会想到 ...

  5. redis cluster管理工具redis-trib.rb详解

    redis cluster管理工具redis-trib.rb详解 redis-trib.rb是redis官方推出的管理redis集群的工具,集成在redis的源码src目录下,是基于redis提供的集 ...

  6. sqlmap工具使用用法详解

    2019独角兽企业重金招聘Python工程师标准>>> sqlmap工具使用用法详解 QLmap是一款用来检测与利用SQL注入漏洞的免费开源工具,有一个非常棒的特性,即对检测与利用的 ...

  7. swagger文档增强工具knife4j使用详解

    本文从本人博客搬运,原文格式更加美观,可以移步原文阅读:swagger文档增强工具knife4j使用详解 使用原生的swagger作为接口文档,功能不够强大,并且默认的ui比较简陋,不符合大众审美.所 ...

  8. 第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI

    第二篇supervisor集群管理工具cesi安装详解-如何安装supervisor-cesiwebUI 介绍 安装 解压 安装依赖 修改配置 注册为系统服务 启动 登录一下,发现报错了 解决方法 介 ...

  9. 第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor

    第一篇supervisor集群管理工具cesi安装详解-如何安装supervisor 环境 准备 安装python3.7.4 问题 解决方法 安装supervisor 配置supervisor服务 启 ...

  10. 黑苹果引导工具 Clover 配置详解及Clover Configurator使用

    黑苹果引导工具 Clover 配置详解及Clover Configurator使用 2017-03-11 14:01:40 by SemiconductorKING 转自:@三个表哥 简介: 可引导m ...

最新文章

  1. HashMap 的 7 种遍历方式与性能分析!(强烈推荐)
  2. 基于尺寸划分的RGB显著物体检测方法
  3. 银行启动开放战略,能否赢回金融科技下半场?
  4. HBase学习之路 (九)HBase phoenix的使用
  5. 在envi做随机森林_随机森林原理介绍与适用情况(综述篇)
  6. 如何将SAP UI5应用配置到SAP云平台Fiori Launchpad里
  7. cdn共振为什么要拍身份证_干货 | 拍婚纱照为什么要提前预约呢?
  8. Logit模型拟合实战案例(Biogeme)
  9. Ubuntu 16.04 利用Sakurafrp工具管理多节点多隧道ID 实现 ssh 内网穿透
  10. Python playsound 播放MP3
  11. C#抖音无水印视频地址解析
  12. java如何高效查询重复数据_java – jpa条件查询获取列表中的重复值
  13. IllustratorCS5初学者必读(7):透明度调板
  14. 南京工业大学计算机考研调剂,2020年南京工业大学考研调剂信息
  15. 2019年,北上广等一线城市的IT岗位饱和了么?
  16. Threejs动态箭头
  17. 利用Python提取函数图像数据并拟合曲线
  18. Mac上安装R语言运行环境及RStudio [超详细!~]
  19. return,return 0 ,return -1 , exit(-1),return 1
  20. Android加载长图,仿微博长图滚动查看

热门文章

  1. 主梁弹性模量计算_混凝土松弛系数的实用计算
  2. # 研究杂感 × VOSviewer(第一辑)
  3. 笔记———No.1 使用matlab画圆
  4. 计算机论文的字体要求,论文格式及字体大小要求(标准)
  5. 希沃集控系统流媒体服务器未开启,希沃集控,让教育信息化管理尽在“掌控”之中...
  6. VB2010网络通信服务器
  7. java gb28181网关_国标GB28181协议对接网关
  8. 基础算法(三)---二分排序(Java)
  9. java类 英文文献_java英文参考文献
  10. camtasia studio2022新版本高清录屏编辑无水印