charles

charles中文名叫青花瓷,是一款基于HTTP协议的代理服务器。通过电脑或浏览器的代理来截取请求和请求结果,达到抓包并进行数据分析的目的。charles可以截取HTTP和HTTPS的网络封包,支持重发网络请求、修改网络请求参数、流量控制等场景

安装

由于本人的电脑win10系统,所以本章只在win10上进行练习,其他的系统不考虑
官网下载地址:https://www.charlesproxy.com/download/
下载后直接双击安装即可

界面介绍

常用功能

主界面

在这里插入图片描述

主导航栏中的图标

在这里插入图片描述

  • 清空:第一个图标,是一个扫把形状的,左键单击可以清空捕获到的所有请求
  • 开始/停止:第二个图标是个圆环,点击可以开始/停止捕获请求,显示灰色时,表示没有在捕获请求,点击开始捕获,如果显示的是红色,则表示再捕获请求中,点击可以停止捕获
  • SSL Proxying:第三个图标类似于锁,点击可关闭/打开SSL Proxying。
  • 慢速网络:第四个是个乌龟的图标,我们知道乌龟是比较慢的,这个代表开启或关闭慢速网络
  • 断点设置:第五个是个六角环,点击可开启或关闭断点
  • 修改数据:第六个是个笔的图标,点击可修改数据
  • 重发:第七个是个曲线箭头图标,点击可以重新发送请求
  • 校验:第八个是个绿色打勾的图标,校验返回的请求

在这里插入图片描述

HTTP/HTTPS抓包

如果想要抓取到客户端的HTTP请求,则需要运行Charles并配置代理,且客户端上也配置代理

charles配置代理

路径:主导航栏的Proxy -> Proxy Settings…

在这里插入图片描述

在这里插入图片描述

客户端代理配置

win10系统代理配置

本人只有win10系统,故展示win10下系统的代理配置
在这里插入图片描述

在这里插入图片描述
在win10系统配置代理之后,系统内的所有http/https请求都会发给charles代理,然后charles代理将请求发送出去并等待响应报文返回,然后将返回的响应返回给win10系统。

在这里插入图片描述

浏览器配置

有时候我们是电脑端的web页面,并不想抓取整个系统的请求,只想抓取浏览器访问目的网页的请求,可以在浏览器中设置代理
chrome浏览器默认使用了系统的代理,可以参照 win10系统代理配置 进行配置。firefox可以单独设置代理服务器,如下:
在这里插入图片描述
在这里插入图片描述
配置之后,如果Windows Proxy前有打勾,就单击去掉,不然还是会将整个windows的请求都抓取了
在这里插入图片描述

配置OK之后,系统中就只有firefox浏览器将自己的请求发送到了指定的代理(charles),所以charles只抓取了firefox浏览器的请求,其他应用的请求如果没有配置走charles代理,则都不会被抓取到。

访问控制 Access Control Settings

路径:主导航栏的Proxy -> Access Control Settings…
Access Control Settings是控制哪些IP可以访问charles代理。如果在配置的IP列表内,则对应的客户端的请求如果配置了走charles代理,则客户端请求可以直接正常请求。如果客户端所在设备IP并没有在IP列表中,则根据是否勾选Prompt to allow unauthorized connections的逻辑进行处理

  • 有勾选:
    • 客户端所在设备IP在IP Range中,请求正常;
    • 客户端所在设备IP不在IP Range中,charles会弹出弹窗,我们需要选择拒绝还是同意该设备IP的请求,如果我们选择Deny,则表示拒绝,客户端访问异常;如果我们Allow,即同意该设备IP的访问,Charles会将该IP自动添加到Access Control Settings的IP Range中,设备的请求正常发送。
  • 无勾选:
    • 客户端所在设备IP在IP Range中,请求正常;
    • 客户端所在设备IP不在IP Range中,charles拒绝该请求的访问,请求异常
      在这里插入图片描述
      在这里插入图片描述

当勾选了Prompt to allow unauthorized connections,且设备的IP不在IP Range中时,设备的请求访问charles代理时, charles会弹出如下弹窗,需要用户自行选择拒绝还是同意该设备的访问
在这里插入图片描述

windows证书配置

如果没有配置证书的话,客户端的https请求访问charles代理时,会显示类似于“该网站的安全证书有问题”的警告,如果客户端或服务器对证书有处理的话,会请求异常。
windows证书的配置步骤如下:
在这里插入图片描述

https代理设置

有时候我们要抓取https请求,这个需要进行配置,路径:Proxy -> SSL Proxying Settings… -> SSL Proxying -> 勾选Enable SSL Proxying
在这里插入图片描述
注意:如果弹窗中的Include没有数据,则手动添加上:Host和Port均为*,或者Host为*Port为443(https端口是443,http是80),
在这里插入图片描述

流量设置

charles提供了Throttle Settings配置,比如网速、稳定性、可靠性等字段,来模拟各种需要的网络环境
路径:Proxy -> Throttle Settings…
相关字段解释:

选项说明
Enable Throttling是否开启流量控制,勾选时表示开启流量控制,勾选后,其他流量控制参数是可编辑状态
Only for selected hosts勾选状态时,只对 添加的hosts做网速限制,未勾选时,对所有请求做网速限制
Throttle perset预设的网络模拟场景,选择某个之后,部分参数会随着变动
Bandwidth带宽,控制数据传输速度。Download指下载速度(从网络撒谎给你下载下来的速度),Upload是上传速度(把数据上传到网络上的速度)
Utilisation可用率,表示带宽的百分比,作为带宽的缩放因子,对于大多数现代互联网连接利用率始终是100%
Round-trip Latency往返延迟,网络请求发起时,延迟多长时间服务端才收到请求,单位是ms,比如如果是40,则客户端发起请求后,服务端至少40ms才能收到请求
MTU最大传输单位(字节byte),即TCP包的最大size,可以更真实模拟TCP层每次传输的分包情况
Reliability可靠性,指连接的可靠性,衡量连接完全失败的可能性。,模拟网络不稳定,即丢包的场景;可靠性是指定为成功发射10kib消息的可能性,所以,值为50%意味着所有10kib传输,有50%的概率会全部传输成功
Stability连接稳定性, 连接的质量会在不稳定的质量范围内随机下降,作为另一个缩放因子的可用带宽参数,主要用于模拟移动网络或其他设备的网络抖动情况
Unstable quality range不稳定质量范围,针对于Stability中设置中的范围

在这里插入图片描述
注意:

  • 不要相信测速软件的检测,还是需要自己去真实的访问并查看才行
  • 在主导航栏中,有个乌龟的图标,点击可以直接打开或关闭流量控制功能

断点并修改数据

charles作为一个“中间商”,可以对请求数据和响应数据进行修改;修改数据的前提是要设置断点,设置断点的方法有2个:

  • 直接在请求中设置断点
    • 在窗口中选择某个请求或某个请求组织结构,鼠标右键,选择Breakpoints,则当前请求或请求组织结构的后续请求的请求和响应都会被截断
    • 在这里插入图片描述
  • Breakpoint Settings设置
    • 路径:Proxy -> Breakpoint Settings…
    • 其实前一个方式设置的断点也会在Breakpoint Settings设置显示
    • Edit Breakpoint中中的字段是对接口进行过滤:
      • Scheme:我也不知道,就没设置,弄成空的
      • Protocol:有空、https、http可选,即根据协议对对应的请求进行过滤,比如只断点https请求等
      • Host:对接口域名进行过滤来设置断点,可以使用正则表达式进行匹配,比如https://httpbin.org/get?name=温小八&age=18的域名就是httpbin.org
      • Port:根据端口过滤来设置断点
      • Path:根据接口路径过滤设置断点,可以使用正则表达式进行匹配,如https://httpbin.org/get?name=温小八&age=18的接口路径是/get
      • Query:对匹配的参数进行断点,可以使用正则表达式进行匹配
      • Request和Response:表示该断点配置是对请求生效还是响应生效
        在这里插入图片描述
        在这里插入图片描述

当前断点设置如下:
在这里插入图片描述
从配置中可以看出,当前断点匹配的是:https请求且接口域名是httpbin开头的,接口路径是et结尾,参数包含age=18的请求和响应
在这里插入图片描述
在这里插入图片描述
由于age改成了19,所以响应不符合Query字段的规则,就没有被断点,直接返回给浏览器了
在这里插入图片描述
我们可以验证下,比如在请求的时候不修改age字段,修改name字段
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

匹配请求并修改数据

除了设置断点来修改请求数据和响应数据,我们可以通过对接口的匹配来进行数据修改
路径:导航栏的Tools --> Rewrite
在Rewrite Settings添加/修改/删除规则
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

重定向

charles支持重定向,重定向功能分Map Remote和Map Local共2种,Map Remote是将匹配的网络请求重定向到另一个网址请求,Map Local 是将匹配的网络请求重定向到本地文件。

Map Remote

测试使用Map Remote一般是将生产环境重定向到测试环境或测试环境重定向到生产环境,用来定位问题等。我们以百度搜索和必应搜索为例,将百度搜索重定向到必应搜索

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

Map Local

有时候接口做了超时处理,使用断点修改会触发页面的超时处理逻辑,这个时候我们可以将请求重定向到本地文件。
在这里插入图片描述
将httpbin.org/get请求重定向到本地的D:\work\data.json文件(由于响应数据是Json格式,所以我们也重定向到json文件,即要保持与响应数据格式一致,避免因为格式问题导致的操作错误)
在这里插入图片描述

data.txt内容如下:
在这里插入图片描述
在这里插入图片描述

移动端抓包

移动端一般是指Android和IPhone这2大操作系统的手机,想要抓取移动端的请求,需要Charles进行https配置,移动端需要网络与Charles在同一局域网(比如连接同一个wifi),且网络需要配置代理,然后安装Charles证书。

Android

移动端的请求一般是https,所以Charles需要配置https代理在本章前面有讲,这里说下Android端的配置:

  • 步骤1:移动设备与Charles所在设备连接在同一个网;

  • 步骤2:移动端网络设置代理,让请求通过Charles代理;

    • 获取Charles所在设备的IP和Charles监听的端口
      在这里插入图片描述

    • 移动端网络手动设置代理
      在这里插入图片描述

  • 步骤3:移动端安装证书

    • 从charles中的弹窗可以看出,我们需要访问chls.pro/ssl下载证书,然后安装 在这里插入图片描述
    • 有些手机对证书下载做了限制导致手机下载证书失败,我们可以用charles所在设备打开chls.pro/ssl下载证书,然后传到移动端进行安装

IPhone

没有设备,以后补充图

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值