Advertisement

Whistle安装及使用指南

阅读量:

Whistle 是基于 Node.js 的工具,支持通过代理抓取网络请求。以下是其核心功能和使用步骤的摘要:
安装与启动
安装 Node.js:通过 Node.js 官网下载安装。
安装 Whistle:通过 npm 安装 whistle,可选择不同用户安装详情。
启动 Whistle:使用命令 npm install -g whistle 后,启动命令为 w2 start,重启为 w2 restart,关闭为 w2 stop。
配置浏览器代理
代理地址默认为 http://127.0.0.1:8899/。
推荐使用 SwitchyOmega 浏览器插件配置代理服务器。
抓取 HTTPS 请求
下载证书:通过 Whistle 控制台下载 HTTPS 根证书。
配置证书:安装证书并确保受信任的根证书颁发机构。
验证抓取:检查抓取的 HTTPS 请求。
实例演练
修改请求方法:使用规则 pattern method://newMethod,newMethod 不区分大小写。
修改请求头:使用规则 pattern reqHeaders://{newHeader},newHeader 可引用 values 变量。
修改请求体:使用规则 pattern reqBody://{reqbody},reqbody 引用 values 变量。
延迟请求:规则 pattern reqDelay://time。
请求速度:规则 pattern reqSpeed://kbs。
修改响应状态码:规则 replaceStatus 或 statusCode。
修改返回参数:使用 rawfile 模式,response 引用 values 变量。
请求替换:配置模式匹配多个 URL。
禁用缓存:规则 disable://cache。
绑定 host:配置 ip pattern。
转换 http 协议:配置 http://localhost:port。
mock 数据:通过插件生成数据,支持 HTML 模板语法。
Whistle 提供强大的抓包和调试功能,支持多种协议转换和数据模拟,适合网络协议分析和测试。

一、Whistle安装、配置及启动

1、安装Node.js

Whistle采用Node.js框架,Node.js官网:Node.js

2、安装Whistle

不同用户安装的详细信息:安装启动 · GitBook

在cmd.exe窗口中打开,然后通过npm工具进行安装,安装命令为:npm install -g whistle。

3、启动Whistle:w2 start

启动成功界面:

通过访问本地端口访问whistle Web控制台:http://127.0.0.1:8899/

Whistle常用命令:

启动:w2 start

重启:w2 restart

关闭:w2 stop

4、配置浏览器代理(推荐)

whistle 是通过代理服务来工作的,因此需要对请求客户端配置 whistle 的代理,代理地址即 whistle 的监听地址,后者默认设置为 http://127.0.0.1:8899/。

建议采用SwitchyOmega插件进行浏览器导航。安装扩展程序后,将代理服务器配置为whistle地址,并将浏览器请求切换至whistle代理服务器。

SwitchyOmega - 情景模式

在满足需求的情况下,可以新增所需模式。例如,whistle模式在使用时,可以选择一个单独的情景模式,也可以选择自动切换模式。

auto switch:可同时支持多个规则,编写完规则后点击【应用选项】,即可使用

采用whistle模式或默认采用whistle自动切换后,此时浏览器发出的请求将被whistle进行抓取。

5、抓取 HTTPS 请求

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

HTTPS

HTTPS

勾选【Capture TUNNEL CONNECTs】进行HTTPS 请求抓取

2)信任whistle配置

请完成以下步骤:首先获取whistle证书文件,随后完成证书安装步骤,最后将证书存储至...,其中...为受信任的根证书颁发机构。完成所有步骤后即可。

3)验证抓取 HTTPS 请求

6、移动端调试

在移动设备调试过程中,whistle和移动端必须确保两者位于同一局域网内,并且移动端需要配置whistle的代理服务器位置。

IOS:

whistle 控制台 —> 【HTTPS】扫描二维码,下载证书,

Android :

whistle 控制台 —> 【HTTPS】扫描二维码,下载证书,去设置中进行安装

二、实例演练:

修改请求方法

pattern:域名或者路径

Rules规则:

复制代码
    pattern method://newMethod

newMethod:不区分大小写

修改请求头Header

1)Rules规则:

复制代码
    pattern reqHeaders://{newHeader}

2)newHeader为引用的values 变量

3)发起请求后,查看whistle抓包请求对应的Header改变,如图所示:

改变前:

改变后:

修改请求体:

1)Rules规则:

复制代码
    pattern reqBody://{req_body}

2)req_body为引用的values 变量

延迟请求(ms)

Rules规则:

复制代码
 pattern reqDelay://time

    
  
    
 Example:
    
 baidu.com reqDelay://60000

请求速度(kb/s)

Rules规则:

复制代码
 pattern reqSpeed://kbs

    
  
    
 Example:
    
 baidu.com reqSpeed://256

修改响应状态码

两个方法:

1)Rules规则:

复制代码
    pattern replaceStatus://code

说明:使用 replaceStatus 继续进行请求,并对响应的状态码进行替换;

修改状态码后,whistle及浏览器均显示为修改后的状态码

2)Rules规则:

复制代码
    pattern statusCode://code

说明:使用 statusCode 后不再发送请求,直接返回设置的状态码。

修改返回参数

1)Rules规则:

复制代码
    /pattern/ rawfile://{response}

2)response为引用的values 变量

如果报文头出现:content-encoding: gzip,则需要去掉

请求替换

Rules规则中配置模式如下:

复制代码
 pattern http://host:port/xxx

    
  
    
 Example:
    
 https://jd.com  https://baidu.com/
    
 jd.com  baidu.com
    
 www.js   www.kk.js

禁用请求的缓存,只要经过代理且匹配到的请求都不会使用缓存

注:跟 cache 协议的区别是,cache 只是用来设置响应的缓存头

复制代码
    pattern disable://cache

绑定host

注:相当于浏览器层的host文件,如果找不到再去查找本机的host文件

复制代码
 ip pattern

    
  
    
 Example:
    
 127.0.0.1 baidu.com

转换http协议

注:采用转发协议及域名转发策略,使得本地环境能够轻松实现 https 通信。在线上的 https 域名实际上对应的是本地服务器上的 http 调试端口。

复制代码
 pattern http://localhost:port

    
  
    
 Example:
    
 https://baidu.com  http://localhost:8080

mock数据

whistle 配备了一个功能强大的 mock 数据插件,能够配合 js 语句和 mock 语法生成数据。

mock语法详解:https://github.com/nuysoft/Mock/wiki/Syntax-Specification

注释:在数据模板中,生成规则和属性值都需要使用双引号,"name|rule"。

1)安装插件:

复制代码
    npm i -g whistle.vase

2) Plugins 菜单:

打开 【vase】的界面,新建一个mock数据的配置,并选择模板Engine: mock

结果展示:

全部评论 (0)

还没有任何评论哟~