whistle(读音[ˈwɪsəl],拼音[wēisǒu])基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler,主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器使用,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系统hosts的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式,且可以通过Node模块扩展功能。
官网:http://wproxy.org/whistle/ GitHub:https://github.com/avwo/whistle whistle的所有操作都可以通过类似如下配置方式实现:
pattern operatorURI
常用的rules如下:
# hosts
# 127.0.0.1 www.ifeng.com
# 端口映射
# 127.0.0.1:8080 www.ifeng.com
# CNAME
# host://www.qq.com www.ifeng.com
# 本地替换
# www.ifeng.com file://D:/test/test.html
# 请求转发
# www.ifeng.com www.aliexpress.com
# 注入html、js、css
# www.ifeng.com js://D:/test/test.js
# 调试远程页面
# www.ifeng.com weinre://test
# log
# www.ifeng.com log://{test.js}
# resBody替换为values里面的内容
# www.ifeng.com resBody://{test.txt}
# 带模板解析
#www.ifeng.com resBody://`{test.json}`
# 内联多行操作值(带模板解析)
www.ifeng.com file://`{test.html}`
```test.html
Hello ${url}.
Hello world1.
Hello world2.
```
# 禁用请求的缓存,只要经过代理且匹配到的请求都不会使用缓存
# 跟 cache 协议的区别是,cache 只是用来设置响应的缓存头
wwww.test.com disable://cache
# 禁用请求和响应的cookie
wwww.test.com disable://cookie # 也可以写成复数形式cookies
# 只禁用请求的cookie
wwww.test.com disable://reqCookie # 也可以写成复数形式reqCookies
# 只禁用响应的cookie
wwww.test.com disable://resCookie # 也可以写成复数形式reqCookies
# 删除ua
wwww.test.com disable://ua
# 删除referer
wwww.test.com disable://referer
# 删除csp策略
wwww.test.com disable://csp
# 禁用timeout,默认情况下whistle对每个请求如果36s内没有发生数据传输,会认为请求超时
wwww.test.com disable://timeout
# 把301转成302,防止cache
wwww.test.com disable://301
# 禁用https拦截
wwww.test.com disable://intercept
# 不缓存远程的dns(通过whistle配置的host是不会缓存),主要用于测试网页的极端情况的加载速度
wwww.test.com disable://dnsCache
# 禁用代理服务器请求链接复用
wwww.test.com disable://keepAlive
# 删除请求头 `x-requested-with`
wwww.test.com disable://ajax
# 也可以同时禁用多个
www.example.com disable://cache|cookie|ua|referer|csp|timeout|301|intercept|dnsCache|keepAlive