whistle使用指南

  • 一、whistle 简介
  • 二、安装、启动、配置
    • 2.1 安装 Node.js
    • 2.2 安装 whistle
    • 2.3 启动 whistle
    • 2.4 配置代理 (推荐)
    • 2.5 抓取 HTTPS 请求(可选)
    • 2.5.2 信任 whistle 证书
    • 2.5.3 验证抓取 HTTPS 请求
  • 三、修改请求实例演示
    • 3.1 修改请求
      • 3.1.1 修改请求方法
      • 3.1.2 修改请求头
      • 3.1.3 修改请求体
    • 3.2 修改响应
      • 3.2.1 修改响应状态码
      • 3.2.2 修改响应头部
      • 3.2.3 修改响应体
  • 四、总结

一、whistle 简介

whistle 是一款基于 Node.js 实现的,类似 Fiddler、Charles 的代理工具,可用于 HTTP、Websocket 等请求的抓取、编辑、重放等功能。

利用 whistle 的改包功能,在进行 HTTP(S) 请求时,可以轻松完成某些不具备测试条件或不易构造真实场景的测试工作,如异常场景、边界场景的测试等。

二、安装、启动、配置

2.1 安装 Node.js

由于 whistle 是基于 Node 实现的,因此需要预先安装 Node.js

Node.js官网( https://nodejs.org/zh-cn/ )

2.2 安装 whistle

通过 npm 包管理工具进行安装

npm install -g whistle

2.3 启动 whistle

安装好 whistle 后,打开命令行工具,执行如下启动命令

w2 start

启动成功后,会显示如下信息

​ 【 whistle 成功启动状态 】

可通过访问本地端口访问 whistle 控制台

​ 【 访问 whistle 页面 】

whistle 查看运行状态和停止命令分别如下

w2 status  # 查看运行状态
w2 stop    # 停止运行

2.4 配置代理 (推荐)

由于 whistle 是通过代理服务来进行工作的,因此需要给请求客户端配置 whistle 的代理,代理地址即 whistle 的监听地址(默认为 http://127.0.0.1:8899/ )。

在进行 Web 测试时,推荐结合 SwitchyOmega 等浏览器(适用Chrome、Firefox)代理插件来进行使用。如下图,在 Chrome 浏览器安装好扩展后,配置代理服务器为 whistle 地址,并将浏览器请求切换为 whistle 代理

​ 【 SwitchyOmega 设置 whistle 代理情景模式 】

​ 【 浏览器访问切换为 whistle 情景模式 】

此时浏览器发送的请求即可被 whistle 抓取

#

​ 【 whistle 抓取浏览器请求记录 】

2.5 抓取 HTTPS 请求(可选)

抓取 HTTPS 请求仅需要进行证书配置,其余步骤与抓取 HTTP 相同。以下介绍 HTTPS 配置方法

2.5.1 下载 whistle 证书 & 开启抓取 HTTPS 请求

在 whistle 控制台点击 【Network】-【 HTTPS 】选项,点击下载 CA 证书,并且勾选抓取 TUNNEL 请求(部分版本为 HTTPS 请求),如下图

​ 【 whistle 配置开启抓取HTTPS请求 】

2.5.2 信任 whistle 证书

由于 whistle 证书为自签证书,因此需要配置本地机器信任证书,否则浏览器会因为证书不安全而拦截 whistle 代理的 HTTPS 请求。

Mac 配置:

打开【钥匙串】(或默认打开下载的证书),右上角搜索 whistle 证书,然后右键证书弹出框中选择【显示简介】,在【信任】-【使用此证书时】选择 “始终信任” 即可,如下图

​ 【 Mac 信任 whistle 证书 】

Windows 配置:

下载完证书后,双击打开,在对话框中点击【安装证书】,并将证书存储到 “受信任的根证书颁发机构”,确认完成即可,(Win10 配置)如下图

​ 【 Windows10 信任 whistle 证书 】

2.5.3 验证抓取 HTTPS 请求

完成上述两个步骤后,浏览器发起 HTTPS 请求,查看 whistle 控制台,可以看到正常抓取到 HTTPS 请求

​ 【 抓取 HTTPS 请求 】

三、修改请求实例演示

修改请求内容通常需要经过如下过程:

Values:

values 中允许自定义变量,以供在定义修改包内容时进行引用。

Rules:

Rules 即定义修改包内容规则。

根据上面修改请求、响应的过程,下面简单演示几种常用修改包内容(完整的修改内容支持请参考 whistle 文档)。

3.1 修改请求

3.1.1 修改请求方法

修改请求方法模式如下

pattern method://newMethod

kyfw.12306.cn method://post

​ 【 修改请求方法 】

如下在浏览器发起请求时,通过开发者工具抓包发现原始请求方法为 GET

​ 【 浏览器原始请求方法 】

请求经过 whistle 修改后,查看请求包内容,发现请求匹配模式站点的请求方法由 GET 改为 POST,如下图

​ 【 请求方法经过 whistle 修改 】

3.1.2 修改请求头

修改请求头模式如下

pattern reqHeaders://{values}

kyfw.12306.cn reqHeaders://{new_headers}

其中引用到的 values 变量 new_headers 定义如下

test-header1: value1
upgrade-insecure-requests: 10

​ 【 头部引用变量 new_headers 定义 】

​ 【 浏览器原始请求头部 】

发起请求后,查看 whistle 抓包内容,对应头部发生改变,如下图

​ 【 请求头部经过 whistle 修改 】

3.1.3 修改请求体

修改请求体模式如下

pattern reqBody://{values}

kyfw.12306.cn reqBody://{new_reqBody}

引用变量 new_reqBody 定义如下

my new reqbody

发起请求后,抓起浏览器原始请求如下

​ 【 浏览器原始无 body 请求包 】

whistle 抓取经修改后请求包内容如下

​ 【 body 经过 whistle 修改请求包 】

3.2 修改响应

3.2.1 修改响应状态码

修改响应状态码模式如下

pattern statusCode://code

pattern replaceStatus://code

两者区别为,设置 statusCode 后不再发送请求,直接返回设置的状态码;而 replaceStatus 继续进行请求,并对响应的状态码进行替换。下面以 statusCode 为例,如

kyfw.12306.cn statusCode://500

修改状态码后,查看 whistle 及浏览器包内容均显示为修改的状态码

​ 【 whistle 抓取修改响应状态码请求包 】

​ 【 浏览器抓取原始请求包 】

3.2.2 修改响应头部

修改请求体模式如下

pattern resHeaders://{values}

kyfw.12306.cn resHeaders://{new_resHeaders}

引用变量 new_resHeaders 定义如下

test-res-header: felix-test

​ 【 自定义响应头部引用变量 new_resHeaders 定义 】

抓取请求内容,响应头部中包含 whistle 修改的内容

​ 【 响应头部包含 whistle 修改内容 】

3.2.3 修改响应体

修改请求体模式如下

pattern resBody://{values}

kyfw.12306.cn resBody://{new_resBody}

引用变量 new_resBody 定义如下

my response body

​ 【 自定义响应体引用变量 new_resBody 定义 】

发起请求后抓取请求包内容,发现接口到响应 body 为修改后的内容

​ 【 请求响应体为 whistle 修改内容 】

四、总结

  • 跨平台性

得益于 Node.js 的跨平台性,whistle 在 Windows、Mac、Linux 均可以运行,相比于 Fiddler、Charles 等客户端工具而言,有更好的系统兼容性,降低了使用者在不同系统间的学习和使用成本,满足用户一个工具打天下的需求。

  • 使用简单

whistle 所有安装配置工作可在5分钟之内完成(不考虑网络下载等因素影响),同时 whistle 具备详细的帮助说明文档,极大降低了用户上手的门槛,对初学者非常友好。

whistle使用指南相关推荐

  1. Whistle安装及使用指南

    一.Whistle安装.配置及启动 1.安装Node.js Whistle是基于Node实现的,Node.js官网:Node.js 2.安装Whistle 不同用户安装详情:安装启动 · GitBoo ...

  2. ux设计_声音建议:设计UX声音的快速指南

    ux设计 Mating calls, warning grunts, and supportive coos are some of the sounds heard throughout the a ...

  3. 超详细中文预训练模型ERNIE使用指南-源码

    作者 | 高开远,上海交通大学,自然语言处理研究方向 最近在工作上处理的都是中文语料,也尝试了一些最近放出来的预训练模型(ERNIE,BERT-CHINESE,WWM-BERT-CHINESE),比对 ...

  4. 入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集-深度学习问题

    入门指南目录页 -PaddlePaddle 飞桨 入门指南 FAQ合集 GT_Zhang关注 0.1012019.08.01 18:43:34字数 1,874阅读 795 Hi,欢迎各位来自Paddl ...

  5. ASIC设计-终极指南

    ASIC设计-终极指南 ASIC Design – The Ultimate Guide ASIC设计-终极指南 ASICs代表特定于应用的集成电路,指的是针对特定应用而设计的半导体解决方案,与其他解 ...

  6. Python神经网络集成技术Guide指南

    Python神经网络集成技术Guide指南 本指南将介绍如何加载一个神经网络集成系统并从Python运行推断. 提示 所有框架的神经网络集成系统运行时接口都是相同的,因此本指南适用于所有受支持框架(包 ...

  7. 深度学习框架集成平台C++ Guide指南

    深度学习框架集成平台C++ Guide指南 这个指南详细地介绍了神经网络C++的API,并介绍了许多不同的方法来处理模型. 提示 所有框架运行时接口都是相同的,因此本指南适用于所有受支持框架(包括Te ...

  8. HTML5与CSS3权威指南之CSS3学习记录

    title: HTML5与CSS3权威指南之CSS3学习记录 toc: true date: 2018-10-14 00:06:09 学习资料--<HTML5与CSS3权威指南>(第3版) ...

  9. Maven入门指南⑦:Maven的生命周期和插件

    Maven入门指南⑦:Maven的生命周期和插件 一个完整的项目构建过程通常包括清理.编译.测试.打包.集成测试.验证.部署等步骤,Maven从中抽取了一套完善的.易扩展的生命周期.Maven的生命周 ...

最新文章

  1. ubuntu11.04下CUDA4.0的安装与配置
  2. Python自动化运维之高级函数
  3. 重磅!Yolo v4横空出世!刚刚开源!
  4. uban系统如何安装java_Ubuntu系统下安装Java并配置环境
  5. Integer转BigDecimal
  6. (个人备忘)多人开发 no file directory.....的问题
  7. 除了写代码,程序员还能做哪些副业呢?
  8. java后端面试经验(自用收藏)
  9. cs231n学习笔记 CNN 目标检测 定位 分割
  10. ArcGIS中地理配准与空间校正的不同
  11. RK3588 实现温控风扇之获取cpu温度(一)
  12. MapGuide 初步
  13. vue实现带样式的textarea输入框,contenteditable属性应用
  14. Win7/Win10双系统安装方法图文教程
  15. c++的内存管理(raii->shart_ptr->垃圾回收)
  16. scipy butter 滤波器实现
  17. java学习第6天,今天是循环结构
  18. 解决Connections could not be acquired from the underlying database!
  19. 电脑如何一键安装win10系统?
  20. Oracle数据库学习笔记(九)--scott用户

热门文章

  1. DevOps峰会 | 研发效能实践助力互联网行业项目管理“行之有效”
  2. 服务器2008 r2开启远程桌面连接不上,windows server 2008 R2怎么开启远程桌面_windows server 2008 R2开启远程桌面的步骤...
  3. ZigBee技术简介 -- ZigBee技术优势
  4. NVDIA CUDA安装失败解决方案最新版(2021.10.8)
  5. 牌型种数 ----蓝桥杯(暴力方法)
  6. 《惢客创业日记》2019.03.30(周六)遗留工作进入收尾阶段
  7. 汽车二自由度相关数学表达式(持续更新)
  8. OA无纸化政府办公原笔迹电子签名解决方案
  9. Matlab:绘制琼斯矩阵的偏振图像
  10. SAP_销售发票VF01开放可人工修改定价金额