whistle是基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler,它可以帮助开发人员分析和优化他们的应用程序性能。Whistle可以拦截和修改HTTP、HTTPS、WebSocket和其他类型的网络请求和响应,不同于Fiddler的是whistle采用类似配置系统hosts的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式,且可以通过Node模块扩展功能。
SwitchyOmega 是一款用于管理多个代理服务器设置的浏览器插件。它可以帮助用户在不同的网站和应用之间切换代理,实现网络访问的分流和优化
whistle官方地址:https://wproxy.org/whistle/
安装whistle
Node安装完成后,执行如下命令安装whistle:
$ npm install -g whistle
查看版本:
whisle -V
安装完成后启动whistle:
w2 start
重启whistle(也支持指定端口):
w2 restart
停止whistle:
w2 stop
启动后如图:
打开控制台http://127.0.0.1:8899/,显示如下界面即成功启动:
SwitchyOmega插件实现浏览器代理
在edge商店搜索并下载。
采用:情景模式: auto switch。比如我们只有域名带*.td.com才使用代理,否则直接使用全局代理会导致访问其他网站也会被代理。
whistle使用
whistle的所有操作都可以通过类似如下配置方式实现:
pattern operatorURI
规则示例:
# 域名匹配
www.abount.com
# 带端口的域名
www.abount.com:6666
# 带协议的域名,支持:http、https、ws、wss、tunnel
http://www.abount.com
# 路径匹配,同样支持带协议、端口
www.abount.com/test
https:/www.abount.com/test
https:/www.abount.com:6666/test
# 正则匹配
/^https?://www\.abount\.com\/test/(.*)/ referer://http://www.test.com/$1
# 通配符匹配
^www.abount.com/test/*** referer://http://www.test.com/$1
域名,路径匹配
匹配指定路径下的所有请求
www.test.com operatorURI
# 路径匹配
www.test.com/xxx operatorURI
www.test.com:8080/xxx operatorURI
通配符匹配
匹配二级域名以 .com 结尾的所有url,如: test.com, abc.com,但不包含 *.xxx.com
*.com file:///User/xxx/test
//*.com file:///User/xxx/test
因为域名匹配不能满足我们的基本要求(专门带有路径比如/service):比如我们的服务启动部署在本地端口,但前端页面访问的地址是专门带有路径的。这时我们就可以用匹配*.td.com/service下的所有请求到本地80端口:
http://*.td.com/service localhost
正则匹配
正则的语法及写法跟js的正则表达式一致,最多支持10个子匹配。
比如上面的http://*.td.com/service localhost匹配可以改为如下匹配:
/^(?!www\.).+?\.td\.com/service/(.*)/ http://localhost/$1
解释:
.td.com 表示匹配 “.td.com” 字符串。
/service/ 表示匹配 “/service/” 字符串。
(.*) 表示捕获任意字符(除换行符)零次或多次,并将其作为第一个分组,最多支持10个子匹配 $0…9,其中$0表示整个请求url,其它跟正则的子匹配一样
调试
当我们请求时,我们就可以在network里看到原始地址(URL)和实际转发地址(Final Url)。