• 【抓包工具】Charles


    Charles是一款常用的网络封包截取工具,在测试与服务器端的网络通讯时,常常需要截取网络封包来分析。Charles通过将自己设置成系统的网络访问代理服务器,所有的网络访问请求都通过它来完成,从而实现了网络封包的截取和分析。

    一.Charles的下载安装

    (1)下载地址:https://www.charlesproxy.com/download/
    (2)注册账号(任意版本的Charles都可用)
    Registered Name: https://zhile.io
    License Key: 48891cf209c6d32bf4

    二.Charles的基本功能介绍

    1:主界面

    在这里插入图片描述

    在这里插入图片描述

    2:菜单

    Charles 的主菜单包括:File、Edit、View、Proxy、Tools、Window、Help。用的最多的主菜单分别是 Proxy 和 Tools。
    在这里插入图片描述

    (1) Proxy菜单

    Proxy 菜单包含以下功能:
    Start/Stop Recording:开始/停止记录会话。
    Start/Stop Throttling:开始/停止节流。
    Enable/Disable Breakpoints:开启/关闭断点模式。
    Recording Settings:记录会话设置。
    Throttle Settings:模拟网速设置。
    Breakpoint Settings:断点设置。
    Reverse Proxies Settings:反向代理设置。
    Port Forwarding Settings:端口转发。
    MacOS Proxy:记录计算机上的所有请求。
    Proxy Settings:代理设置。
    SSL Proxying Settings:SSL 代理设置。
    Access Control Settings:访问控制设置。
    External Proxy Settings:外部代理设置。
    Web Interface Settings:Web 界面设置。

    (2)Tools菜单

    Tools 菜单包含以下功能:
    No Caching Settings:禁用缓存设置。
    Block Cookies Settings:禁用 Cookie设置。
    Map Remote Settings:远程映射设置。
    Map Local Settings:本地映射设置。
    Rewrite Settings:重写设置。
    Black List Settings:黑名单设置。
    White List Settings:白名单设置。
    DNS Spoofing Settings:DNS 欺骗设置。
    Mirror Settings:镜像设置。
    Auto Save Settings:自动保存设置。
    Client Process Settings:客户端进程设置。
    Compose:编辑修改。
    Repeat:重复发包。
    Repeat Advanced:高级重复发包。
    Validate:验证。
    Publish Gist:发布要点。
    Import/Export Settings:导入/导出设置。
    Profiles:配置文件。
    Publish Gist Settings:发布要点设置。
    在后续的内容中会介绍常用的功能。

    三.Charles的基本功能

    (1)Session

    Session有两种展示结构:structure和sequence
    Structure:按照不同hosts域名分组展示请求(如下图3.1):
    在这里插入图片描述

    图3.1

    Sequence:按照请求顺序来展示请求(如下图3.2):
    在这里插入图片描述

    图3.2
    如果请求太多看起来比较麻烦,Charles有一个Filter功能,可以输入关键字来快速筛选出URL中带有关键字的网络请求。

    (2)使用Structure结构在session上右键查看支持的功能:

    ① Repeat、Repeat Advanced…:重复执行请求,Repeat Advanced可以指定重复的遍数。这样可以选中多会话,在右侧的chart查看请求的时间等性能
    ② Focus:在某个域名下点击Focus,会将当前域名放到顶部,没有Focus的域名统一放到下面的Other Hosts下(可以在View->Focused Hosts中统一编辑)
    ③ 黑白名单(可以在Toos->Black List/Write List下统一更改)
    Black List:黑名单中的域名不能联网
    Write List:白名单开启后,只有白名单中的网络可以访问网络,不在白名单中的不能访问网络
    (如果一个域名既在Black List中也在Write List中,则也不能访问网络)
    ④ Export:导出会话Session保存到本地,然后下次可以通过File->Open Session打开本地的Session
    ⑤ Compare:左侧列表选择两个Session,右键时会出现该项,可以比对两个请求的入参和出参
    ⑥ Compose:即工具栏上的钢笔的图标,编辑请求然后执行

    四.手机通过Charles抓取https包

    (1)配置Charles,允许抓取https的包

    ① :Proxy->SSL Proxying Settings…,勾选Enable SSL Proxying,Add一个locations,通过通配符* 抓取所有域名的https。

    在这里插入图片描述

    Host可以使用通配符或?进行匹配,如果想抓取所有域名的,直接用即可(Add一个新的Location,然后直接点OK就创建了),如果特定想抓取某个域名的,可以直接在Host那里写具体Host。
    ② :Charles设置Port值,Charles按照下图方式配置Port
    路径:Proxy->Proxy Settings…
    在这里插入图片描述

    (2)手机端配置PC代理

    ① 在手机的WIFI设置里,修改网络,手动添加代理
    代理服务器主机名:使用PC的本机IP地址(help-Local IP Address可查到)
    代理服务器端口:使用上一步设置的Port值
    在这里插入图片描述

    ② 第一次配置完代理,需要在PC端进行允许操作,详见下图的Allow(如果不小心关了下面的弹框,可以重新配置一下手机代理或在Charles里手动添加)
    在这里插入图片描述

    Charles里添加允许访问的IP的方法:
    在这里插入图片描述
    在这里插入图片描述

    ③ PC端Charles安装https证书
    Help->SSL Proxying ->Install Charles Root Certificate,然后在钥匙串中信任证书即可

    ④ 手机端下载Charles的证书(两种方式)
    1:根据Help->SSL Proxying ->Install Charles Root Certificate on Mobile Device or Remote Browser…获得下载证书的地址,操作如下图:
    在这里插入图片描述

    将下载到PC端证书放到手机中,在设置中信任即可。
    2:手机浏览器打开此网址下载证书:chls.pro/ssl
    特殊机型说明如下:
    A:小米安装比较特殊,需要在设置->其他高级设置->安全和隐私->凭据存储->从存储设备安装->选择下载的证书安装
    B:ios10以上系统,需要在设置->通用->关于本机,信任安装的证书
    证书安装好了之后就可以抓包了
    抓取包注意事项:如果要抓取Safari等浏览器的包,必须勾选Proxy->macOS Proxy,否则没进行抓包

    五.模拟请求做mock,使用断点,Map和Rewrite

    (1)验证server端的请求和结果
    直接选中请求,点击控制栏上的编辑,然后修改请求后执行。
    在这里插入图片描述

    (2)APP或者PC端等待server的数据返回
    这种可以使用打断点的方式,或者通过Map Remote /Map Local重定向来获得结果。
    ① 打断点
    Session上右键选择Breakpoints,或者通过顶部工具栏的Proxy->Breakpoints Settings来编辑断点的请求,需要点开导航栏上的开启断点(Disable Breakpoints)才可以生效断点
    在这里插入图片描述

    添加断点后的内容如下图所示:
    在这里插入图片描述

    当再有符合断点规则(Host、Path、Query)的请求过来时,会自动进入断点页面,断点分为两部分:
    1:请求发到服务器前,此时可以修改request的入参等信息
    2:服务器返回的数据返回给终端(APP或PC)之前,此时可以修改response的内容
    在这里插入图片描述

    ② 通过Map Remote:是将某个网络请求重定向到另一个网络请求
    可以在Session上右键Map Remote设定规则,或Tools->Map Remote来管理所有Map Remote(勾选Enable Map Remote才会启用)
    在这里插入图片描述

    请求可以使用通配符*等来匹配,Map To可以是一个接口请求,可以是一个远程文件(js或html文件等)
    ③ 使用Map Local:使用本地一个文件的内容作为返回值
    可以在Session上右键Map Local设定规则,或Tools->Map Local来管理所有Map Local(勾选Enable Map Local才会启用)
    在这里插入图片描述

    ④ mock的方法,Rewrite
    在Tools->Rewrite中添加规则,Enable Rewrite勾选才会去走重写
    Rewrite:可以添加规则修改请求的header、参数等各种信息,比Map更灵活,而且针对同一个请求可以添加多个规则,但如果出问题不容易调试
    比如下面的例子,添加了一个叫做测试的规则,右侧Location上面添加要匹配的请求,下面填写重写规则(右面的弹框,Type可以选择 header rules, URL rules, query parameter rules, and body rules)
    在这里插入图片描述

    (3)指定Hosts
    有时候要把域名指向某一个固定的IP地址,除了修改PC本机的hosts文件外,也可以在Charles中设置
    Tools->DNS Spoofing Settings中设置hosts
    在这里插入图片描述

    六.模拟网速

    有时测试需要限制网速,在Proxy->Throttle Settings中配置,然后再Proxy->Strat Throttling或工具栏上小乌龟的图标开启或停止限流
    在这里插入图片描述

    勾选 Enable Throttling 启用网速模拟配置,在 Throttle Preset 下选择网络类型即可,具体设置可以根据实际情况自行设置。如果只想模拟指定网站的慢速网络,可以再勾选上图中的 Only for selected hosts 项,然后在对话框的下半部分设置中增加指定的 hosts 项即可。
    Throttle Settings 视图中的选项含义如下:
    Bandwidth:带宽
    Utilistation:利用百分比
    Round-trip:往返延迟
    MTU:字节

     
     
    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
    本文链接:https://blog.csdn.net/qq_38961788/article/details/108618058
    作者:gtea 博客地址:https://www.cnblogs.com/gtea
  • 相关阅读:
    MyBatis框架——MyBatis update标签(转载)
    关“.NET研究”于代码规范 狼人:
    go并发写入文件的几种姿势
    go切片默认初始化len为0,既元素无法直接赋值为[0]=xx
    js对象
    go sync.WaitGroup
    go微服务学习
    修改 Kubeadm 源码中的 Kubernetes 证书过期时间为100年
    go的形参
    go 循环切片得到重复移除成别名
  • 原文地址:https://www.cnblogs.com/gtea/p/15227888.html
Copyright © 2020-2023  润新知