Whistle整理

Whistle是一款强大的代理工具,支持请求拦截、代理设置、文件替换、请求转发等功能。本文详细介绍Whistle的常见功能,包括如何设置host进行代理,调试端口的host域,替换本地json数据进行mock数据,以及请求转发、注入js文件和手机代理等高级功能。同时,深入解析Whistle的匹配模式,包括域名、路径、正则和精确匹配等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

Whistle是一个非常强大的拦截请求,代理工具。安装谷歌插件SwitchyOmega就可以愉快的切换代理模式了。

一.Whistle常见功能

  • 设置host进行代理www.ifeng.com 127.0.0.1:8080。可以将请求代理到本地的8080端口,这样在平时开发就可以去掉请求路径url的端口号。
    调试别的端口的host域同样也可以 www.ifeng.com host://www.qq.com:8080

  • 替换文件www.ifeng.com file://E:\xx\test 。我们可以这样替换本地的json数据进行mock数据。
    whistle自带了一个很好用的功能,在左侧的value目录下我们可以直接写json数据。

    ^www.ifeng.com/secretsales/show/ tpl://{secretsales.json}
    

    ctrl点击tpl,我们可以将json数据写进value中,这里其实有个小bug,我们写的json数据有时会是一个字符串的格式(string)。这是我们可以借助FeHelper,将字符串格式的数据转换成json格式的数据,就可以很方面利用whistle进行mock数据。

  • 请求转发

    例如将百度的所有请求转发到凤凰上。www.baidu.com www.ifeng.com

  • 注入js文件(html/css同理)
    我们想要将一个js文件注入到凤凰网上www.ifeng.com js://E:\xx\test\test.js

  • 手机代理
    我们可以通过扫描whistle上的二维码进行证书下载,就可以手机代理网站,开发中可以用来测试移动端页面的样式与方法。

二.Whistle的匹配模式

  • 域名匹配
    不仅支持匹配某个域名,也可以限定端口号、协议(http、https、ws、wss、tunnel)

    	# 匹配域名www.test.com下的所有请求,包括http、https、ws、wss,tunnel
    	www.test.com/url
    	
    	# 匹配域名www.test.com下的所有http请求
    	http://www.test.com/url
    	
    	# 匹配域名www.test.com下的所有https请求
    	https://www.test.com/url
    	
    	# 上述匹配也可以限定域名的端口号
    	www.test.com:8888/url # 8888端口
    	www.test.com/url # http为80端口,其它443端口
    
  • 路径匹配(与域名匹配的区别是指定了更加细致的路径)

    # 限定请求协议,只能匹配http请求
    http://www.test.com/xxx operatorURI
    http://www.test.com:8080/xxx operatorURI
    
    # 匹配指定路径下的所有请求
    www.test.com/xxx operatorURI
    www.test.com:8080/xxx operatorURI
    
  • 正则匹配

    #匹配所有请求
    /./ operatorURI
    
    # 最多支持10个子匹配 $0...9,其中$0表示整个请求url,其它跟正则的子匹配一样
    /[^?#]\/([^\/]+)\.html/ protocol://...$1...
    
  • 精确匹配(路径匹配不仅匹配指定路径,还会匹配该路径下的子路径。精确匹配只能匹配指定的路径,只要在路径前面加$即可变成精确匹配)

     $www.test.com/xxx operatorURI
     没有加请求协议就可以匹配四种请求协议
     
     http://www.test.com/xxx
     https://www.test.com/xxx
     ws://www.test.com/xxx
     wss://www.test.com/xxx
     
     
    
    
  • 通配符匹配
    匹配模式必须以 ^ 开头(如果需要限制结束位置可以用 $),* 为通配符,支持通过$0…9获取通配符匹配的字符串,其中$0表示整个请求url。

    # 以 ^ 开头
    ^www.example.com/test/*** referer://http://www.test.com/$1
    
    # 限定结束位置
    ^www.example.com/test/***test$ referer://http://www.test.com/$1
    

    这是两种通配符匹配,我们需要访问多个接口的时候通常使用通配符匹配。这两种的区别可以看一个例子。我们访问接口https://www.example.com/test/abc?123test。第一个的配置可以为$1 = abc?123&test,而第二个的配置只能为$1 = abc?123,所有只有第一种模式可以匹配。

    我们不仅可以对请求的路径使用*进行通配符匹配,还可以对协议,域名进行通配符匹配。

    # 匹配二级域名以 .com 结尾的所有url,如: test.com, abc.com,但不包含 *.xxx.com
    *.com file:///User/xxx/test
    
    # 如果要配置所有子域名生效,可以使用 **
    **.com file:///User/xxx/test
    
    # 限定协议,只对http生效
    http://*.com file:///User/xxx/test
    
    # 路径
    *.com/abc/efg file:///User/xxx/test
    

    对于我们的通配路径也可以进行匹配

    # 对所有域名对应的路径 protocol://a.b.c/xxx[/yyy]都生效
    */ 127.0.0.1
    
    http://*/ 127.0.0.1
    https://*/xxx 127.0.0.1
    ws://*/xxx 127.0.0.1
    wss://*/xxx 127.0.0.1
    

三.操作值

  • 如果字符串不包含空格,可以直接写到配置里面

    请求地址 opProtocol://(strValue)
    
  • 如果字符串里面包含空格,则可以把操作值先放到whistle界面的Values或本地文件

    # 在Values里面创建一个key为 test.txt 的 key-value 对
     pattern opProtocol://{test.txt}
    
     # 或者放到本地文件 /User/docs/test.txt
     pattern opProtocol:///User/docs/test.txt
     # windows
     pattern opProtocol://E:\docs\test.txt
    
  • 操作值为JSON对象

    {
           "key1": value1,
           "key2": value2,
           "keyN": valueN
    }
    

    行格式

    	{
    	       "key1": value1,
    	       "key2": value2,
    	       "keyN": valueN
    	}
    
  • whistle v1.12.12开始支持在Rules内联多行的Value

    www.test.com/index.html file://{test.html}
    ```test.html
    Hello world.
    Hello world1.
    Hello world2.
    

四.匹配规则

  1. 相同协议规则的默认优先级从上到下,即前面的规则优先级匹配高于后面
  2. 除rule及proxy对应规则除外,可以同时匹配不同协议的规则
  3. 一些属于不同协议,但功能有冲突的规则,如 rule、host、proxy,按常用优先级为 rule > host > proxy
    具体可见官网http://wproxy.org/whistle/principle.html

五.协议参数

我们可以对规则做很多额外的限制与操作。功能很多,需要时查官网对应的参数即可,这里就不多赘述。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值