Skip to content

Latest commit

 

History

History
2475 lines (1941 loc) · 126 KB

CHANGELOG.md

File metadata and controls

2475 lines (1941 loc) · 126 KB

v2.9.72

  1. fix: socks 代理无法获取 clientIp 及 IPv6 转发问题

v2.9.71

  1. feat: 自动更新 Rules & Values
  2. feat: Mock 对话框新增 Create 按钮

v2.9.70

  1. feat: 插件列表添加自定义右键菜单
  2. feat: 支持通过 pattern jsAppend://[value|file|url] linePropslineProps://nomodule lineProps://module lineProps://defer lineProps://async lineProps://crossorigin 设置标签属性

v2.9.69

  1. fix: #1064
  2. feat: 支持通过 http://local.whistlejs.com/?dataUrl=encodeURIComponent(dataUrl) 导入 dataUrl 返回的数据

v2.9.68

  1. feat: 新增 enable://abortRes 在响应阶段中断请求
  2. feat: 优化界面展示

v2.9.67

  1. feat: 新增 enable://requestWithMatchedRulesenable://responseWithMatchedRules 支持在请求头或响应头带上当前匹配的规则
  2. feat: 调整 Tools/Console 日志的缓存大小
  3. feat: Values 的编辑器添加快捷键 Shift + Ctrl[Command] + FShift + Ctrl[Command] + I 分别用来格式化和通过 JSONView 查看 JSON 数据
  4. feat: Whistle 默认会对 WebSocket 压缩包进行解压,有[用户反馈存在解压bug][#1048 wss://xxx disable://wsDecompress 禁止解压数据包
  5. feat: WebSocket Frames 列表添加右键功能

v2.9.66

  1. feat: 支持通过正则表达式搜索日志
  2. feat: 支持通过 disable://captureHttp disable://captureHttps 关闭 http 或 https 的 TUNNEL 请求

v2.9.65

  1. feat: 支持 Rules 里面的 Values 和临时文件通过 Ctrl[Command] + 鼠标点击快速修改
  2. feat: 新增默认临时空白文件 temp/blank(支持自定义后缀 temp/blank.xxx

    可以通过在 Rules 新建文件 protocol://temp/blank.xxx 再通过Ctrl[Command] + 鼠标点击快速修改生成新的临时文件

  3. feat: Values 右键菜单新增 JSON / Inspect 查看 JSON 数据对象

v2.9.64

  1. feat: Mock 功能支持对临时文件添加注释
  2. feat: 优化 Rules & Values 的拖拽功能
  3. fix: #1040

v2.9.63

  1. feat: 支持 Cookie 的 Partitioned 属性(该属性需要跟 SecureSameSite=None 一起使用)
  2. feat: Composer 添加 CopyAsCURL 按钮
  3. feat: Composer 添加 ProxyRules 选项,去选后可以禁用 Proxy (Whistle) 设置的所有规则(Proxy 里面的规则优先级高于 Composer Rules)

v2.9.62

  1. chore: 更新 CodeMirror 版本
  2. feat: Network Settings 支持导入导出
  3. feat: Rules & Values 支持通过 b:keyword 搜索内容
  4. feat: Composer 支持导入导出
  5. feat: 插件 Option 支持设置 openInModal 以对话框形式打开
  6. feat: Network 列表新增 Back to the bottom 按钮

v2.9.61

  1. fix: 在新版本 Node 可能存在 pipe 功能失效问题
  2. fix: #1017

v2.9.60

  1. fix: #1012

v2.9.59

  1. feat: 支持 #978
  2. feat: 客户端支持直接使用 WebView 预览抓包内容

v2.9.58

  1. feat: Network 右键菜单 Mock > Export,通过插件或拖拽导入 Mock 数据
  2. feat: 插件支持 window.whistleBridge.download({name, value[, base64]}) 下载指定数据
  3. feat: 新增特殊路径 /_WHISTLE_5b6af7b9884e1165_/,Whistle 会自动将url 里面第一个此路径片段替换成 /

v2.9.57

  1. feat: Composer 添加修改请求参数按钮 Params
  2. feat: Composer 面板优化
  3. feat: Composer 添加 Cookies 按钮方便获取当前抓包记录里面对应域名的 Cookie
  4. feat: 支持通过启动参数 uiExt 往页面注入 js 或 html (把 Whistle 作为第三方 npm 包使用时可用)
    uiExt?: {
    required?: boolean;
    htmlPrepend?: string;
    htmlAppend?: string;
    jsPrepend?: string;
    jsAppend?: string;

}; ```

v2.9.56

  1. feat: 支持通过 Online / IPv6-only network 强制 dns 获取 ipv6(命令行版本还可以通过 -M ipv6Only 开启)
  2. feat: w2 add 命令支持 type: module

v2.9.55

  1. feat: 显示 captureError,且可以通过插件获取到这类型错误的抓包数据
  2. fix: 完善 refreshPlugins 方法(内部方法)

v2.9.54

  1. fix: 修复 Dark Mode 模式下图片显示问题
  2. fix: JSON 过滤搜索时保留数组的 index

v2.9.53

  1. feat: 支持通过 enable://forHttp|forHttps 设置 enable://capture 只对 http 或 https 生效
  2. feat: 支持通过请求参数设置登录态
  3. feat: 支持 Dark Mode,且可以通过界面 Online -> 打开对话框 -> Disable dark mode 关闭自动切换 Dark Mode

v2.9.52

  1. feat: 跨域请求本地替换自动设置 cors,可以通过 disable://autoCorslineProps://disableAutoCors 关闭

v2.9.51

  1. fix: #912

v2.9.50

  1. fix: Node 20.1.0 版本 http.request 只支持通过 options.search 设置参数问题
  2. feat: 支持通过 --uiport "127.0.0.1:8080" 限制 WebUI 只能通过指定网卡和端口访问

v2.9.49

  1. fix: headerReplace://req.host:pattern=value 无效问题
  2. feat: 插件添加 sharedStorage 方便插件在不同实例中共享存储数据
  3. style: #898

v2.9.48

  1. feat: 插件扩展的右键菜单和 Tab 添加 exportSessions(sessions, type, name) 方法
  2. feat: 插件 server 的 options 添加 generateSaz(sessions): Bufferextract(saz: Buffer, cb(sessions)) 方法
  3. refactor: 兼容 saz 的 comment,需要配合插件使用:https://github.com/whistle-plugins/whistle.comment.git
  4. fix: 修复访问 socks 代理可能出现 pending 的问题
  5. style: 界面优化

v2.9.47

  1. refactor: 解决安装时依赖包安全警告问题
  2. feat: 支持自定义右键菜单获取树结点下的所有抓包数据

v2.9.46

  1. feat: 扩展 Tab 支持 copyText 方法
  2. feat: tpl 协议支持模板字符串语法

v2.9.45

  1. feat: 插件界面提供 copyText 方法
  2. feat: 支持 lineProps://strictHtmllineProsy://safeHtml 只对当前行的规则生效
  3. style: Mock Dialog 支持直接保存 Value

v2.9.44

  1. fix: 解决 qs 模块不存在问题

v2.9.43

  1. feat: 允许通过 enable://capture 解析 socks 代理的 HTTPS 请求
  2. feat: 支持通过 Network 右键菜单 Mock 按钮快速创建规则:http://wproxy.org/whistle/webui/mock.html

v2.9.42

  1. style: 支持自动提示 Values 的 Key
  2. style: Composer 的 History 选项改成箭头按钮
  3. feat: 支持批量删除 Rules & Values

v2.9.41

  1. fix: Network Settings 列设置刷新失效问题
  2. style: WebForm 支持显示 JSON 对象
  3. style: Preview 优先显示 JSON View

v2.9.40

  1. refactor: Network / Tools / Console & Server 支持捕获 unhandledrejection 的错误信息,且Console & Server 最大缓存日志条数调整为 230
  2. feat: 支持 earlyHints
  3. feat: JSONView 右键支持 Expand AllCollapse All

v2.9.39

  1. feat: JSON View 支持搜索
  2. feat: 自动记录用过的 npm registry
  3. feat: 模板字符串支持 ${env.xxx} 获取环境变量 xxx 对应的值
  4. feat: 支持通过环境变量 excludeFilter://env.xxx=pattern
  5. style: 匹配 map local 的抓包字体颜色显示成黑色

v2.9.38

  1. refactor: req.passThrough(handleReq?, handleRes?) 提供更多功能
    req.passThrough(function(rawBuffer, next, ctx) {
    	ctx.getText((err, text) => {
    		console.log(err, text);
    	}, encoding?); // 自动 unzip 并转成字符串,字符编码 encoding 可选
    	ctx.getJson((err, text) => {
    		console.log(err, text);
    		next({
    			body: rawBuffer,
    			rules: '* file://(abc)'
    		});
    	}, encoding?); // 自动 unzip 并转成json
    }, function(rawBuffer, next, ctx) {
    	ctx.getText((err, text) => {
    		console.log(err, text);
    	}, encoding?); // 自动 unzip 并转成字符串,字符编码 encoding 可选
    	ctx.getJson((err, text) => {
    		console.log(err, text);
    		next({
    			body: rawBuffer,
    			rules: '* file://(abc)'
    		});
    	}, encoding?); // 自动 unzip 并转成json
    });

v2.9.37

  1. fix: resCookies:// 设置失败问题

v2.9.36

  1. feat: 支持通过插件的配置 whistleConfig.networkColumn: { title: 'xxx', key: 'xxx', width: 90 } 扩展 Network 表格的列
  2. feat: 支持通过插件的配置 whistleConfig.webWorker: path 自定义脚本在界面中执行,可以结合自定义列的功能实现查看接口返回错误码(后续补例子)
  3. feat: 插件处理非 WebSocket 及 Socket 请求的 req.passThrough(handleReq?, handleRes?) 支持传人两个方法(可选)获取请求或响应内容并返回请求内容及规则
    req.passThrough(function(buffer, next) {
    	next({
    		body: buffer,
    		rules: '* file://(abc)'
    	});
    }, function(buffer, next) {
    	next({
    		body: buffer,
    		rules: '* resCookies://x-test=123'
    	});
    });
  4. refactor: delete://resCookie.xxxdelete://cookie.xxx 可以删除浏览器中的 cookie(只支持 path: /Domain=父代 或本域名)
  5. style: Network 右键菜单支持 Copy Cell Text

v2.9.35

  1. feat: Netwok 的 table 表头支持通过右键调整列宽度
  2. feat: Network / Settings 自定义列支持设置关联的 Data Key,可以在界面获取抓包数据,无需配置 style > 可以通过 Network 抓包列表右键菜单 / Open / Source 获取想要的 Data Key
  3. fix: 复制 curl 命令是请求内容换行符处理有误的问题

v2.9.34

  1. fix: Network / Tools / Console 的 Filter 问题,及 Console 采用浏览器的时间
  2. refactor: 远程 rulesValue 加载异常记录日志
  3. feat: 支持通过 delete://urlParams.xxx 删除名称为 xxx 的请求参数
  4. feat: 支持通过 delete://reqCookie.xxx 删除名称为 xxx 的请求 cookie
  5. feat: 支持通过 delete://resCookie.xxx 删除名称为 xxx 的响应 cookie
  6. feat: 支持通过 delete://cookie.xxx 删除名称为 xxx 的请求及响应 cookie

    上述删除 cookie 操作只会上述请求或响应阶段的 cookie,不会影响已存在浏览器的 cookie

v2.9.33

  1. fix: 路径有特殊字符的域名通配规则可能导致启动失败

v2.9.32

  1. refactor: 彻底删除 Files 菜单
  2. style: 添加删除整个分组的按钮
  3. style: 优化 Composer 交互及修复界面的一些问题

v2.9.31

  1. fix: #789
  2. refactor: 优化插件的环境变量,支持通过 hintSuffix 自定义提示信息

v2.9.30

  1. feat: 支持通过插件设置规则模板,详见:https://wproxy.org/whistle/plugins.html
  2. fix: 修复代理响应 407 问题:#776

v2.9.29

  1. fix: 导出 har 后再导入改 har 时请求内容可能发生变化问题
  2. feat: headless 模式支持加载插件及抓包数据
  3. feat: 支持通过 -M agent 启动复用连接模式

v2.9.28

  1. fix: #759

v2.9.27

  1. style: 支持在 Request / WebForms 显示上传表单数据
  2. style: 弱化有新版本时的界面提醒
  3. refactor: 减少安装包体积

v2.9.26

  1. fix: 分组状态下保留数据发送两次请求导致无法一直启用规则问题
  2. fix: 导出 saz 后原始 url 可能无法正常显示问题

v2.9.25

  1. refactor: 优化插件开发调试,参见:https://github.com/avwo/lack

v2.9.24

为跟 Homebrew 版本保持一致,跳过此版本

v2.9.23

  1. refactor: 设置代理只需输入一次 root 密码:#746
  2. fix: M1 Pro 上执行 brew install whistle 安装 Whistle 失败问题

v2.9.22

  1. fix: 修复部分插件规则优先级问题
  2. feat: 支持通过 pattern operation lineProps://important 提升规则的优先级

v2.9.21

  1. feat: Rules 与 Values 支持分组
  2. fix: resCors://origin=xxx 失效问题

v2.9.20

  1. fix: resCors://* 失效问题

v2.9.19

  1. feat: 支持自定义 Upgrade 请求协议
  2. fix: enable://proxyFirst 可能出现重复请求问题

v2.9.18

  1. fix: 请求经过代理后 x-whistle-client-id 丢失问题
  2. feat: 支持在 Network / Tools 里面自定义 Tab,详见:https://github.com/whistle-plugins/examples/tree/master/whistle.view-md5

v2.9.17

  1. fix: 规则列表无法拖动排序问题
  2. refactor: enable://clientId 对所有请求生效(之前只对批评设置代理规则的请求生效)
  3. docs: 调整 README

v2.9.16

  1. style: 添加 Replay TimesRepeat Times 菜单,最多可以重放请求 100 次
  2. refactor: compose cgi 支持设置 repeatTimes(不能超过 100 次)
  3. feat: 新增 CGI /rules /values /rules?name=xxx /values?name=xxx 获取 Whistle 的当前启用的规则和指定规则

v2.9.15

  1. feat: 支持通过 w2 ca [host:port] 安装对应 Whistle 代理的根证书(不填参数,默认加载当前本机运行版本)
  2. feat: 支持通过 w2 start[restart|run] --init [bypass] 启动时同时设置代理和安装根证书,利用此特性可以实现通过 npm i -g whistle && w2 restart --init 一键安装 Whistle
  3. feat: 支持上传 .cer.pem 证书
  4. feat: 支持通过 process.env.WHISTLE_MODE 定义启动参数 -M xxx
  5. fix: utf8 编码不支持 0x7f 字符问题

v2.9.14

  1. feat: 支持通过命令行 w2 proxy [off] [port] [host:port] [-x bypass] 设置系统的全局代理
    • w2 proxy: 设置全局代理 127.0.0.1:port,port 为运行的默认实例的端口(storage 为空),如果没有默认实例则为 8899
    • w2 proxy -x "<local>, domain1, domain2": 设置全局代理 127.0.0.1:port,port 为运行的默认实例的端口(storage 为空),如果没有默认实例则为 8899并设置不代理域名白名单
    • w2 proxy 8899: 设置指定端口的代理,host 默认为 127.0.0.1
    • w2 proxy www.test.com:8080w2 proxy www.test.com:auto: 指定代理的 host 和 port
    • w2 proxy www.test.com:8080 -x "<local>, domain1, domain2": 组合应用
    • w2 proxy off: 关闭全局代理

v2.9.13

  1. refactor: 内联规则 protocol://(key1=value1&key2=value2...) 不再自动 decodeURIComponent
  2. refactor: 如果内联规则 protocol://key1=value1&key2=value2...(),会先检测下对应文件是否存在,不存在就当成 protocol://(key1=value1&key2=value2...) 处理

v2.9.12

  1. fix: #726
  2. refactor: 优化 excludeFilter://host=pattern

v2.9.11

  1. fix: 使用 https2http-proxy://host:port 时,某些 post 请求无法正常发送问题
  2. fix: 确保模板字符串的 clientId 优先获取传过来的请求 clientId(需要用本地的 clientId 可以使用 localClientId

v2.9.10

  1. feat: 添加 skip 协议, skip 与 ignore 的区别,ignore 是将匹配的规则删除掉,skip 是跳过指定的规则不做匹配
  2. fix: nodejs/node#42787

v2.9.9

  1. feat: 支持通过 w2 i 任意url 安装插件
  2. feat: 支持插件通过 options.getPlugins(cb) 获取当前 Whistle 安装的插件信息
  3. feat: 支持通过 ignore://matcher=xxx (等价于 ignore://operator=xxx)、ignore://pattern=xxx 删除指定匹配的规则
  4. style: 插件 Sync 功能支持获取历史记录列表

v2.9.8

  1. fix: TUNNEL 代理的 HTTP 请求被拦截后一些代理请求头的透传问题
  2. feat: 支持通过 w2 i git-url 安装插件

v2.9.7

  1. style: 下次打开 Plugins 页面自动打开之前已打开的插件 Tab
  2. refactor: w2 add 可以设置的规则大小由 16k 改成 256k
  3. fix: TUNNEL 请求帧数据可能显示不全问题

v2.9.6

  1. fix: 长连接里面的帧数据可能展示补全问题
  2. fix: 经过插件转发后的请求 client id 丢失问题

v2.9.5

  1. refactor: 如果启动绑定网卡,将网卡显示到 Online 里面
  2. style: Tunnel 代理,支持通过请求头或响应头的 x-whistle-transport-protocol 自定义 Protocol 显示,响应头优先

v2.9.4

  1. fix: auth 插件钩子可能对被拦截的 tunnel 请求不生效问题
  2. style: 支持导出的数据自带 Node 和 Whistle 的版本号
  3. feat: 插件支持通过 package.whistleConfig.peerPluginList 配置安装插件式自动加载的关联插件列表(最多不超过 15 个插件)

v2.9.3

  1. feat: redirect 归类为 rulefilestatusCode 等协议同级别
  2. refactor: 添加 ts 描述文件
  3. refactor:w2 i plugin 支持 w2 i plugin@version
  4. fix: Node 16 引入 req.filter 方法引发的问题

v2.9.2

  1. feat: 支持启动参数设置 options.server 方便第三方服务集成

    server 可以为 http.Serverevents.EventEmitter 对象,在第三方应用中可以通过 server.emit('request'| 'upgrade' | 'connect', req, res) 将请求交给 Whistle 处理

  2. feat: 支持通过插件引入远程 Value:protocol://$plugin/xxx,这种配置会自动从插件 whistle.plugin uiServer 的 /api/key/value?key=xxx 获取对应的值
  3. refactor: 优化错误日志路径 & w2 status --all 显示进程 id
  4. refactor: 支持 HTTP2 的 Node 最低版本有 12 调整为 14(低版本的 HTTP2 模块存在一些 bug)
  5. fix: #697

v2.9.1

  1. feat: 支持通过 pattern enable://clientIp 让 Whistle 自动设置 x-forwarded-for 请求头
  2. style: Values 编辑器支持 JSON 对象折叠,详见:#683
  3. refactor: Whistle 的日志统一放 $WHISTLE_PATH/whistle.log 文件,默认为 ~/.WhistleAppData/whistle.log

v2.9.0

  1. style: 修复禁用所有插件编辑器对应插件规则无法显示插件已失效的问题
  2. style: Frames 移入 Inspectors
  3. feat: 将请求匹配的 pattern 传给插件,可以通过 req.originalReq.isRegExpreq.originalReq.pattern 获取
  4. feat: 支持自定义 Inspectors tab,详见:https://github.com/whistle-plugins/examples/tree/master/whistle.view-md5
  5. feat: 支持自定义 Composer tab,详见:https://github.com/whistle-plugins/examples/tree/master/whistle.view-md5
  6. refactor: 插件全局异常也会写入启动目录的日志文件 whistle.log,且支持插件通过 process.handleUncaughtPluginErrorMessage = (errMsg) => {} 获取全局异常信息,且可以通过 return false 来禁止插件自动退出

v2.8.10

  1. fix: 插件的 sniCallback 返回 false 请求没有重新走 TUNNEL 代理问题
  2. refactor: 如果插件接收到的请求是 https,则 req.url 将为完整的路径

v2.8.9

  1. feat: 支持自定义 inspectors tab,详见:https://github.com/whistle-plugins/examples/tree/master/whistle.view-md5
  2. feat: 支持通过 disable://abort 禁用 enable://abort
  3. feat: Whistle 默认显示的抓包数据不超过 1.5m,可以通过 enable://bigData 扩大到 2.5m

v2.8.8

  1. feat: 支持通过 enable://useLocalHostenable://useSafePort 修改 log 和 weinre 请求 URL 的域名或端口
  2. style: 界面提供 api.selectIndex 选中指定下标的抓包数据
  3. feat: 支持插件获取 originalReq.remoteAddressoriginalReq.remotePort

v2.8.7

  1. feat: --httpsPort 启动的 HTTPS Server 支持从插件获取证书
  2. feat: 支持通过 excludeFilter://from=httpServerincludeFilter://from=httpsServerexcludeFilter://from=httpServerincludeFilter://from=httpsServer 过滤请求

v2.8.6

  1. refactor: 禁止通过页面上传根证书 root.key & root.crt
  2. refactor: Whistle 自动生成的证书过期时自动续期(有效期一年)

v2.8.5

  1. feat: 支持通过 ignore://-* 过滤 ignore://*
  2. feat: 支持 proxypac 配置 lineProps://proxyHostOnly,当用户配置了 host 代理才会生效
  3. feat: 非 SNI 请求也支持通过插件自定义证书,且支持直接上传和删除用户自定义证书

v2.8.4

  1. fix: 可能无法导入 saz 文件问题

v2.8.3

  1. fix: #657
  2. feat: 插件 server 钩子支持通过 req.setReqRules & req.setResRules 设置动态规则
  3. feat: 支持通过 enable://forceReqWriteenable://forceResWrite 强制 reqWritereqWriteRawresWriteresWriteRaw
  4. feat: reqWrite:///path/to/reqWrite:///path/to 加以区别,前者会自动把根路径补成 index.html
  5. feat: 插件的 auth hook 默认情况下如果开启了捕获 https,则对这部分请求只会对解析后的 https 请求生效,如果需要对隧道代理生效可以设置 enable://authCapture
  6. feat: 默认不启用 x-forwarded-hostx-forwarded-proto 直接放过,可以通过以下方式启用:
    • 启动参数 -M x-forwarded-host|x-forwarded-proto
    • 请求进入 Whistle 之前设置请求头 x-whistle-forwarded-props: host,proto,for,clientIp,ip

v2.8.2

  1. feat: resMerge://json1 resMerge://json2 默认采用 extend({}, json1, json2),新版支持通过 resMerge://json1 resMerge://json2 resMerge://true 开启 extend(true, {}, json1, json2)
  2. refactor: 插件规则里面的 req 和 res rules 分开执行

v2.8.1

  1. refactor: 优化获取证书逻辑,合并多次相同请求
  2. refactor: 处理 unhandledRejection 事件
  3. feat: 支持通过请求头设置响应规则
  4. fix: sniCallback 内存泄露问题

v2.8.0

  1. feat: 支持启动 --cluster [workers] 模式,通过该方式可以启动多进程模式(worker 为 Whistle headless)
  2. fix: 启动时绑定非 127.0.0.1 网卡,插件远程规则访问失败问题

v2.7.29

  1. fix: #643

v2.7.28

  1. fix: WebSocket 无法抓包问题

v2.7.27

  1. fix: 插件用到 storage.setProperties 失效问题
  2. feat: 插件 whistleConfig 支持配置 inheritAuth 复用 Whistle 的登录账号

v2.7.26

  1. feat: 支持通过插件 sniCallback(req, options) hook 获取远程证书
  2. feat: 支持通过 --config localFile 加载启动配置,优先级高于命令行

v2.7.25

  1. fix: 某些情况下响应 stream pause 问题
  2. refactor: 优化 w2 stop,找不到指定实例时自动显示当前所有运行的实例
  3. style: 支持将 Rules 添加到最前面

v2.7.24

  1. refactor: 优化 lineProps://proxyHost|proxyTunnel|proxyFirst

v2.7.23

  1. style: 优化显示 Composer 历史记录列表
  2. style: 禁用 Rules、Plugins 显示小黄条提醒

v2.7.22

  1. feat: 插件 auth 方法支持 req.setRedirect(url);
  2. perf: 优化启动速度
  3. fix: 修复第三方集成时,一些内部请求转发问题

v2.7.21

  1. fix: 清除搜索框历史记录 js 报错问题
  2. feat: 普通 HTTP 请求也支持 customParser(或 customFrames):https://github.com/whistle-plugins/whistle.custom-parser

v2.7.20

  1. fix: Cannot read property 'headers' of undefined

v2.7.19

  1. feat: HTTP2 支持非 HTTPS 请求
  2. feat: 插件支持通过 options.getCert(domain, (cert || '') => {}) 获取指定域名证书
  3. refactor: 优化 reqDelayresDelay 实现

v2.7.18

  1. feat: 支持插件设置 tunnelKey 将指定的隧道代理请求头带到解开后的 http/https/ws 请求头
  2. feat: 插件 auth 方法支持处理 Whistle 的内部请求
  3. feat: 插件 auth 支持设置 req.showLoginBox 弹出登录框
  4. style: 显示 UI 请求情况
  5. refactor: 优化内部请求转发逻辑的实现方式

v2.7.17

  1. feat: WebSocket 和 Tunnel 请求支持 replaceStatus

v2.7.16

  1. fix: Maximum call stack size exceeded

v2.7.15

  1. perf: 去掉 Empty Request,减少内存及 CPU 占用
  2. style: Network 的 Body 支持显示请求内容大小

v2.7.14

  1. feat: 插件支持通过 options.require 直接引用 Whistle 里面的第三方模块或文件
  2. refacto: 插件在不同实例使用不同的存储目录

v2.7.13

  1. fix: 特殊情况下 Whistle 无法展示 WebSocket 前几个请求帧问题
  2. feat: 支持在模板字符串里面通过 clientPortserverPort 分别获取客户端和服务端端口
  3. refactor: alertconfirmprompt 等浏览器内置的窗口改用自定义实现,防止 https://www.chromestatus.com/feature/5148698084376576

v2.7.12

  1. fix: reqReplaceresReplace 可能因为拆包导致匹配不准确问题
  2. fix: Rules 编辑器行首字母输入 ! 报错问题

v2.7.11

  1. feat: 插件 hook 支持 async-await

     ``` js
     module.exports = async (server, options) => {
     	// ... do sth
     };
     ```
    
  2. feat: pipe://xxx 支持插件内部通过 req.originalReq.ruleValue 获取 xxx://valuevalue

v2.7.10

  1. feat: 支持通过 -M disableForwardedHost 禁止 Whistle 使用 x-forwarded-host 请求头,默认 Whistle 会用该请求头作为请求 URL 的域名
  2. feat: 支持通过 -M disableForwardedProto 禁止 Whistle 使用 x-forwarded-proto 请求头,默认当该请求头值为 https 时, Whistle 会把请求当成 HTTPS 处理
  3. feat: 第三方通过 const proxy = startWhistle(options); 启动 Whistle 时,可以通过 proxy.on('perfDataChange', (perfData) => {}) 获取 cpu、内存、请求量等数据
  4. refactor: 第三方通过 const proxy = startWhistle(options); 启动 Whistle 时,可以通过 proxy.on('pluginLoad', child, name, moduleName);proxy.on('pluginLoadError', err, name, moduleName); 监听插件启动信息

v2.7.9

  1. feat: 支持 pattern %plugin=xxx
  2. feat: 支持插件通过 options.getTop(data => data && console.log(data)) 获取所在 Whistle 的 CPU、内存及请求量等信息

v2.7.8

  1. feat: 源码目录添加 Dockerfile: #601
  2. feat: 支持在插件的根目录执行 w2 run 时自动加载该插件
  3. refactor: 设置 resCors://enable 如果请求头不存在 origin 则自动忽略该设置
  4. fix: #600

v2.7.7

  1. fix: pipe 无法直接透传 WebSocket 的二进制包问题
  2. style: 支持显示自定义根证书及删除自定义证书导引
  3. style: pipe 支持智能提示

v2.7.6

  1. feat: 支持通过类似 --dnsServer http://dns.alidns.com/resolve 自定义 dns-over-https 服务: #439
  2. style: 优化错误提示

v2.7.5

  1. feat: 支持通过 disable://interceptConsole 禁止 log:// 拦截 console 的请求,用户只能通过代码 window._whistleConsole && _whistleConsole.xxx(a, b, ...) 记录日志
  2. feat: 支持在规则里面同时设置多个s %plugin-name=xxxx (最多 10 个),Whistle 会自带将这些值带到插件的对象: req.originalReq.pluginVars
  3. refactor: 显示插件转发的 HTTP 协议

v2.7.4

  1. refactor: 调整 delete://reqH.xxxx 的时机

v2.7.3

  1. style: 优化左侧菜单
  2. styl: 修复 Values 右键菜单 Copy / Key 弹出创建新 key 输入框问题
  3. feat: 支持设置 -M shadowRules (抓包 + 设置 shadowRules) 或 -M shadowRulesOnly (无法查看抓包)

v2.7.2

  1. feat: 支持通过命令行参数 --dnsServer "1.1.1.1,8.8.8.8,10.3.2.1:8080" 自定义 DNS server > 如果需要请求自定义 DNS server 出错时自动转成默认可以用: --dnsServer "1.1.1.1,8.8.8.8,10.3.2.1:8080,default" > 自定义 DNS server,默认是获取 IPv4,如果需要获取 IPv6,要手动指定 --dnsServer "2001:4860:4860::8888,[2001:4860:4860::8888]:1053,ipv6"
  2. fix: 修复 List View 通过表头排序后无法 Reset 的问题

2.7.1

  1. fix: Tree View 抓包数据满了后无法自动更新问题

v2.7.0

  1. feat: Network 支持 Tree View 展示
  2. feat: pac 支持设置用户名密码:pac://user:pass@pacPath
  3. style: 支持显示 Raw Url 详见:#572

v2.6.16

  1. fix: 解决规则文件名称过长保存失败的问题
  2. feat: 域名统配也支持获取子匹配内容

v2.6.15

  1. refactor: 优化命令行启动输出的信息
  2. feat: 编辑器 Show Line Number 时,双击行数可以注释或取消注释
  3. feat: Network / Tools / Toolbox 支持将对象转成 Query 参数
  4. style: 支持扩展 util.openEditor(value) 方法

v2.6.14

  1. chore: #559

v2.6.13

  1. style: Network 搜索框支持最多3个关键字过滤
  2. style: Network 右键菜单新增 Open/Source 查看当前抓包数据的源码
  3. refactor: onSocketEnd 添加 timeout 事件,兼容各种诡异行为
  4. refactor: 优化内部连接管理

v2.6.12

  1. feat: 支持通过 url 参数的 clientId 过来抓包数据
  2. feat: 支持通过 disable://proxyConnection 将代理转发头改为 Proxy-Connection: close

v2.6.11

  1. perf: 确保及时关闭无用连接,减少内存占用
  2. style: Online 支持显示 QPS,及 内存、CPU、QPS 的最大值
  3. refactor: 处理处理请求过程中无法捕获的异常

v2.6.10

  1. feat: 支持导出 har 文件
  2. feat: 支持设置 -M "disabledBackOption|disabledMultipleOption|notAllowDisableRules"
  3. feat: 内部路径 /...whistle-path.5b6af7b9884e1165.../// 支持设置域名 /...whistle-path.5b6af7b9884e1165...///__domain__port__/path/to (port__ 可选) 或 /...whistle-path.5b6af7b9884e1165...///path/to?_whistleInternalHost_=__domain__port__ (port__ 可选)

v2.6.9

  1. feat: 支持通过 --shadowRules jsonString 导入规则到 Rules
  2. style: 支持通过设置请求参数 disabledEditor=1 将 Rules & Values 编辑框设置为只读模式

v2.6.8

  1. fix: excludeFilter includeFilter 混合配置时结果错乱问题
  2. feat: 支持 -M rulesOnlypluginsOnly

v2.6.7

  1. fix: #540

v2.6.6

  1. fix: 管理界面 CGI 路径可以随意拼接问题

v2.6.5

  1. fix: 部分 Node 版本可能卡死问题
  2. fix: pipe 可能导致数据丢失问题

v2.6.4

  1. fix: 编辑器高亮显示插件规则的一些问题
  2. feat: 本地文件替换的响应头头默认加入 content-length 字段,可以通过 delete://resH.content-length 禁用
  3. feat: 支持通过 CGI 或 API 获取当前处理的请求总数

v2.6.3

  1. style: 支持预览 SVG 文件
  2. feat: 支持通过 process.on('pforkError', (info) => {}) 获取插件抛出的异常信息
  3. perf: 调整GC参数 --max-semi-space-size=64

v2.6.2

  1. fix: v15.5.0 版本界面无法打开问题

v2.6.1

  1. fix: v15.5.0 版本自动设置 autoDestroy 导致无法请求的问题

v2.6.0

  1. feat: 支持通过 Online 菜单查看当前进程的请求数、CPU、内存状态等
  2. feat: 支持通过 proxy.getRuntimeInfo() 获取当前进程的请求数、CPU、内存状态等
  3. feat: 添加回收站,删除的 Rules 或 Values 会先存放到回收站(最多缓存120条),并可以点击恢复
  4. feat: Network > Tools > ToolBox 支持通过域名生成对应的证书,方便开发其它 https 服务使用

v2.5.32

  1. feat: tunnel 代理支持确认机制,详见:https://github.com/avwo/lack-proxy/blob/master/lib/proxy.js#L100

v2.5.31

  1. fix: http 请求走 tunnel 代理没有主动调用 socket.resume(),可能导致用 lack-proxy 代理的部分请求超时
  2. style: 插件禁用后在页面的标签显示 Disabled

v2.5.30

  1. fix: 页面 Content Encoding 显示错误问题

v2.5.29

  1. feat: enable://servername 删除 https 请求的 sni
  2. feat: 支持 w2 run -M prod 方便 docker 部署
  3. refactor: 自动简称请求或响应内容是否支持gzip

v2.5.28

  1. feat: 新增 lineProps://proxyHost|proxyTunnel 只对当前行生效

v2.5.27

  1. feat: 以 /...whistle-path.5b6af7b9884e1165.../// 路径开头的内部请求也支持 enable://proxyTunnel

v2.5.26

  1. style: JSONView 的右键菜单新增 Collapse Parent
  2. feat: 添加 enable://proxyTunnel,支持两层http代理 请求 -> http 代理 -> http 代理 txt www.test.com proxy://10.0.0.1:5566 10.1.2.3:8080 enable://proxyHost|proxyTunnel 上述表示请求将通过 http 代理 10.0.0.1:5566 转发到上层 http 代理 10.1.2.3:8080

v2.5.25

  1. feat: 支持通过 -M useMultipleRules 启用多选,相当于在 Rules/Settings 勾选 Use multiple rules
  2. fix: 解决 https2http-proxy 部分请求无法正常转换问题,该协议主要是将请求自动转成http,并代理到指定 http proxy,功能同 internal-proxy,但 internal-proxy 无法同时设置host

v2.5.24

  1. feat: 添加 cipher 支持自定义兜底加密算法

v2.5.23

  1. fix: 代理请求头 Host 错乱问题(不影响正常使用)

v2.5.22

  1. refactor: 更新 node-forge 解决安全问题
  2. fix: h2 请求转成 https 请求时,界面显示响应头大小问题
  3. feat: 启动参数 options 支持通过字段 allowPluginListblockPluginList 分别设置可加载的插件及不可加载的插件列表

v2.5.21

  1. style: Overview 规则列表 hover 上去可以点击查看帮助文档
  2. style: Network 搜索框添加历史记录功能

v2.5.20

  1. fix: reqHeaders://cookie=xxxreqCookies://test=123 无法同时生效问题
  2. feat: 支持通过请求参数 hideLeftMenu=true 或启动参数 -M hideLeftMenu 隐藏左菜单

v2.5.19

  1. feat: 插件自动添加trailers,可以通过 res.disableTrailer 禁用
  2. refactor: 优化监听 res.on('end', cb) 事件,确保事件触发

v2.5.18

  1. feat: 支持传递 trailers
  2. feat: 支持通过 delete://trailer.xxx|trailer.yyy 删除指定tailer(如果存在)
  3. feat: 支持通过 headerReplace://trailer.key:pattern=valuetrailers://json 修改tailers
  4. fix: 自动修改 websocket origin 问题

v2.5.17

  1. feat: 支持 includeFilter://reqH.cookie=pattern 等价与 includeFilter://reqH:cookie=pattern
  2. style: 调整Network字体加粗效果
  3. fix: 配置hosts的websocket的https请求无法自动转http请求问题

v2.5.16

  1. fix: #462

v2.5.15

  1. fix: #464
  2. feat: 支持自定义 plugins 列表的卸载及安装命令名称
  3. chore: 优化界面及依赖

v2.5.14

  1. feat: 支持通过 delete://body 删除请求及响应内容,或 delete://req.body 删除请求内容,delete://res.body 删除响应内容
  2. feat: 支持通过 reqBody://()resBody://() 分别清空请求或响应内容(不影响reqPrepend、reqAppend 等注入的内容)
  3. fix: #456

v2.5.13

  1. refactor: 新增访客模式可以访问的接口
  2. style: 页面时间支持显示毫秒

v2.5.12

  1. style: 加粗 Composer 里面的 whistle 自定义请求头
  2. fix: #451
  3. refactor: 减少暴露无登录态的接口

v2.5.11

  1. feat: 支持显示 websocket 关闭的错误码
  2. style: 支持将请求头以 JSON 文本拷贝

v2.5.10

  1. fix: --addon "path1,path2" 无法填多个路径问题
  2. fix: 某些服务没按http标准执行,如 302 返回内容,可能导致页面或下游代理 pending问题

v2.5.9

  1. style: Frames 里面支持快捷键 Ctrm[Cmd] + R 重放请求
  2. refactor: 插件里面可以通过 req.originalReq.ruleUrl 获取 rule 匹配结果
  3. feat: 拦截 https 请求后,会保留 tunnel 代理请求头 x-whistle-tunnel-data 的数据
  4. feat: 去掉同步系统hosts设置,且左侧菜单新增 checkbox 可以快速禁用或启用 Rules/Plugins

v2.5.8

  1. perf: gzip 返回抓包数据的 cgi
  2. fix: Composer 构造没有body的请求不设置 content-length: 0 问题
  3. style: 添加快捷键 ctrl[cmd] + rctrl[cmd] + shift + r 重放请求

v2.5.7

  1. fix: 通过 urlParamspathReplace 修改请求URL参数的问题
  2. style: Network 右键菜单添加 Actions>Mark 标记抓包数据
  3. refactor: statusCode 移入 rule 里面跟 file 等协议同级

v2.5.6

  1. style: Plugins 添加 ReinstallAll 按钮,可以copy插件安装命令
  2. fix: 还原匹配顺序,修复:#421

v2.5.5

  1. fix: Node >= 14.1 无法使用http2问题
  2. fix: 某些规则可能会被插件返回的规则覆盖问题
  3. feat: 模板字符串支持通过 ${hostname} 获取系统的 os.hostname()

v2.5.4

  1. fix: 请求包含匹配的插件规则时,可能导致 Overview 界面脚本报错问题(可能导致某些配了请求映射及包含插件规则的请求 Overvew 出现空白)

v2.5.3

  1. refactor: 优化 resCors://enable 支持自动设置 OPTIONS 请求的 access-control-request-headers, access-control-request-method 字段
  2. fix: #412

v2.5.2

  1. feat: 支持 -M proxifier 开头 proxfifier 模式,该模式下会 whistle 会对所有请求域名为 ip 且端口为 80, 443 的请求进行 https 拦截,并判断是否有上传自定义证书
  2. fix: Node13~14 开启 http2 功能
  3. feat: 支持 json5 配置(Node版本最低要求改为 6)

v2.5.1

  1. fix: includeFilter://h:key=pattern 只能匹配请求头,无法匹配响应头问题
  2. feat: JSON Tree 支持 Copy 字节点数据
  3. feat: Composer 支持上传本地文件

v2.5.0

  1. feat: 支持自定义客户端证书:https://wproxy.org/whistle/custom-certs.html
  2. refactor: 优化建立连接时的错误处理
  3. style: 现在 Composer 输入的文本长度防止浏览器卡死

v2.4.17

  1. feat: 支持客户端服务端双向认证,详见:自定义证书
  2. feat: 支持在 Network 自定义列,详见:style
  3. style: 在 Overview 里面显示匹配的 includeFilter

v2.4.16

  1. fix: includeFilter://b:pattern 失效问题
  2. refactor: 鉴于低版本 Node 的 HTTP/2 模块 bug比较多,统一调整为 Node v12.12.0 及以上版本才会支持 HTTP/2

v2.4.15

  1. chore: 去掉安装过程中的 warning

v2.4.14

  1. style: Frames 页面新增 Overview Tab 用于查看帧数据的基本信息
  2. style: Frames 里面二进制数据字体加粗

v2.4.13

  1. fix: Express 框架默认添加的 x-powered-by 响应头:#395

v2.4.12

  1. fix: 部分网站可能出现的 ERR_HTTP2_SESSION_ERROR

v2.4.11

  1. feat: 支持 post 等包含请求内容的https请求自动降级到http请求(如果不支持https服务的话)

v2.4.9

  1. refactor: 优化远程规则更新机制,防止误判拉取失败,导致远程规则被情况
  2. feat: 支持通过 -M disableUpdateTips 禁用版本升级通知(一般用于集成 whistle 的第三方应用)

v2.4.8

  1. fix: 本地 hosts 文件没配 127.0.0.1 localhost 可能导致https请求失败问题
  2. feat: HTTP2 的 DELETE 请求如果携带请求内容,则自动降级为 http/1.1,否则会出现 400 或 忽略请求内容

v2.4.7

  1. fix: #383
  2. refactor: HTTP/2 支持 delete 请求携带 body
  3. style: HTTPS > View all custom certificates 支持高亮显示过期证书,且支持 copy 证书安装路径
  4. fix: 设置 reqBody://(xxxx) method://post 无法同时生效问题

v2.4.6

  1. fix: #380

v2.4.5

  1. feat: 添加 internal-http-proxy 大致功能与 internal-proxy 一致,只是前者针对 websocket 请求使用的是 tunnel 代理,而后者使用直接 upgrade 请求

v2.4.4

  1. refactor: 传给 Composer 的响应数据改成 base64
  2. refactor: 支持从请求 headers 里面的规则解析出 pipe 规则

v2.4.3

  1. fix: 使用 pipe 时请求异常导致没有捕获问题,及 http 请求 pipe 失效问题
  2. style: 支持在 Overview 里显示 HTTPS 自动转 HTTP 所消耗的时间
  3. fix: 调整 includeFilterexcludeFilter 匹配方式,需要满足所有 includeFilter 中的一个,且不能匹配到任何 excludeFilter,即 excludeFilter://p1 excludeFilter://p2 includeFilter://p3 includeFilter://p4 相当于 !(p1 || p2) && (p3 || p4)

v2.4.2

  1. fix: 启用 --socksServer port 后请求出现异常可能导致程序 crash 问题

v2.4.1

  1. refactor: 支持显示saz文件里面的非文本内容
  2. feat: 添加启动参数 -M safe 开启安全模式,安全模式下会对服务端的证书进行校验,如果本地的根证书链不支持,则请求会报 unable to verify the first certificate,参见:#368
  3. fix: Network 搜索过滤可能出现重复数据的问题

v2.4.0

  1. fix: 上个版本引入的配置 host 出错问题

v2.3.8

该版本有bug,请用最新版本

  1. refactor: 优化 IPv6 配置
  2. refactor: 去掉多余的接口

v2.3.7

  1. style: Network 的 URL 支持修改宽度(个人体验考虑其它列暂时不支持修改宽度)
  2. refactor: websocket 如果返回非 101 状态,则透传给浏览器

v2.3.6

  1. refactor: 添加 package-lock.json
  2. perf: 引入 react-virtualized 极大提升列表性能,详见:#358
  3. feat: 调整列表长度,默认支持同时显示 1500 条抓包数据,可以通过 Network > Filter > Max Rows Number 调整大小

v2.3.5

  1. refactor: 在之前版本设置 log://xxx weinre://xxx 时,为了防止把注入都js缓存到浏览器,whistle 会自动删除缓存的响应头,即使设置了 cache://xxx 也无用,新版以 cache://xxx 优先级最高,并支持通过设置 cache://reserve 强制保留原来的请求头
  2. refactor: 某些 Node 版本会出现某些 socket 没有没有监听 error 事件,这里会强制设置一个空的 errorHandler,防止异常抛出
  3. fix: 非 SNI 的 https 请求无法解包问题
  4. fix: 设置代理重试后重复添加路径问题

v2.3.4

v2.3.3

  1. style: 修复同时安装的插件可能出现排序跳动问题

v2.3.2

  1. fix: WebSocket 请求采用 internal-proxy://host:port 时无法准确带上 clientIp 的问题
  2. feat: 支持通过设置 enable://strictHtml 可以在使用 htmlXxx, jsXxx, cssXxx 注入内容到html页面时,会先判断是否第一个非空白字符是 < 才会注入
  3. feat: 支持通过设置 enable://safeHtml 可以在使用 htmlXxx, jsXxx, cssXxx 注入内容到html页面时,会先判断是否第一个非空白字符不是是 {{ 才会注入 (用于统一给某个域名的页面注入脚本等时,防止一些非标准等接口响应类型设置为html,导致误注入的问题)
  4. feat: 支持通过启动参数 -M noGzip 禁用所有请求的 gzip 功能
  5. perf: 限制 zlib 的并发量,减少内存泄露(原因参见: nodejs/node#8871 (comment)

v2.3.1

  1. fix: 修复 x-forwarded-for 混乱问题,直接请求默认不带 x-forwarded-for(代理转发会自动带上非本地IP),可以通过 forwardedFor://ipreqHeaders://x-forwarded-for=ip 自定义 x-forwarded-for
  2. style: #354
  3. feat: 插件新增方法 optins.isEnable((enable) => {}) 获取插件是否处于启用状态
  4. feat: 插件的 rules.txt_rules.txtvalues.txtresRules.txt 文件支持设置占位符 {{whistlePluginName}} 获取插件的短名称(不包含 whistle.), 以及通过 {{whistlePluginPackage.xx.yy.zzz}} 获取插件 package.json 的值

v2.3.0

  1. feat: @url 请求时自动带上 x-whistle-runtime-id 便于插件判断请求是否来自宿主代理
  2. fix: #352
  3. fix: 修复 HTTP2 模块对http2请求响应格式要求过于严格,导致某些网站http2请求失败问题

v2.2.4

  1. feat: 支持通过启动命令行参数添加规则
    # 从 https://xxx 加载规则,如果远程规则有更新也会自动同步更新
    w2 start -r "@https://xxx"
    
    # 从本地绝对路径 filepath 加载规则,如果文件有更新也会自动同步更新
    w2 start -r "@filepath"
    
    # 直接设置规则
    w2 start -r "www.test.com/path/to reqHeaders://x-test=1"

    组合设置 JSON.stringify('@https://xxx\n@filepath\nwww.test.com/path/to reqHeaders://x-test=1')

v2.2.3

  1. feat: 部分在响应阶段才会执行的规则放到请求响应后再做匹配
  2. style: Networt > HTTPS > Enable HTTP/2 去选后接收和发送请求的方式都改用非 H2

v2.2.2

  1. fix: nodejs/node#27384
  2. refactor: 优化 H2 session 缓存策略

v2.2.1

  1. refactor: 去掉请求超时设置

v2.2.0

  1. feat: 支持通过 Network -> HTTPS -> Enable HTTP/2 关闭或开启 HTTP/2 请求,可以通过 pattern enable://h2 局部开启 HTTP/2
  2. refactor: 支持自动检测 xxx.har 文件是否使用base64编码
  3. fix: 修复了内部请求重试可能导致死循环的问题

v2.1.3

  1. style: Composer 里面支持自定义方法
  2. perf: 减少h2的session数,每个客户端到h2 session可以完全复用

v2.1.2

  1. feat: 多行形式的 JSON 对象支持设置数组及多层嵌套的值

    v2.1.1 及以前版本以下内联对象文本不支持数组及多层嵌套

    ``` test
    [1]: "test"
    [10]: 1
    ```
    
    xxx.test.com resMerge://{test}

    上述文本会转成对象:

    {
    	"[1]": "test",
    	"[10]": 1
    }

    v2.1.2 版本开始,上述文本会转成

    var arr = [];
    arr[1] = 'test';
    arr[10] = 1;
    

    更复杂的规则:

    ``` test
    [a.b[3].c]: abc
    ```
    

    等价于

    {"a": { b: [undefined, undefined, {
    	c: "abc"
    }]}}
    

    如果不希望进行自动转义,可以使用双引号 "[xxx.yyy[n]]"

    1. feat: 添加在域名中 . 匹配方式
      .test.com 表示匹配 x.test.com 与 test.com
      *.test.com 表示匹配 x.test.com,不匹配 test.com
      **.test.com 表示匹配 x.test.com 及其所有子孙代域名
      ***.test.com 表示匹配 test.com 及其所有子孙代域名
      上述匹配可以加协议及路径进行更精确代匹配 `http://.test.com/path/to/*`

v2.1.1

  1. fix: 修复自定义插件hint时,如果只有一个补全数据不显示的问题,以及请求和响应内容为空时不显示大小的问题
  2. style: Overview 里面支持显示gzip前后的大小
  3. feat: 支持通过环境变量 env.WHISTLE_PLUGIN_EXEC_PATH 或启动参数 -M buildIn 设置 fork whistle 插件进程的 Node 路径 (默认为全局 Node )

v2.1.0

  1. fix: 修复url替换 url replacementUrl path取错问题

v2.0.0

  1. feat: 支持 HTTP2 功能

    请确保运行的 Node 版本为 LTS(>= 10.16.0) 或 Stable(>= 12.12.0) 的最新版本,否则可能会出现一些异常,如:#24037#24470

  2. feat: **/path/to 如果 path/to 里面包含 *,如 */cgi-*,则等价与 ^*/cgi-*

v1.17.1

  1. fix: 引入Http2导致请求abort后浏览器无法收到断开的指令
  2. refactor: enable://proxyHost 支持显示真实的请求ip

v1.17.0

  1. feat: 浏览器和 whistle 之间支持通过 HTTP2 建立连接,(需要把 Node 更新到 v10.16.0 及以上版本
  2. refactor: 调整连接缓存策略,任何连接不做长缓存,减少内存占用
  3. fix: 长连接获取clientIp失败问题

v1.16.13

  1. fix: 模板字符串 ${whistle.xx.repalce(p,v)} 失效问题

v1.16.12

  1. feat: 支持通过 reqRules://file|values|inlineValuesresRules://file|values|inlineValues 批量设置规则
  2. fix: Composer切换到 pretty 模式时无法设置换行符问题
  3. fix: 某些Node版本(如:v10.16.2 在部分Mac机型上)可能存在bug,会出现一些异常无法让程序捕获捕获导致程序crash问题

v1.16.11

  1. fix: #329

v1.16.10

  1. refactor: 优化后缀匹配规则 ^.js,避免匹配域名,且支持直接配置 .js
  2. feat: 支持扩展Network的右键菜单,具体参见:插件开发

v1.16.9

  1. fix: head 请求按规范不允许注入及返回响应内容,详见: https://www.w3.org/Protocols/rfc2616/rfc2616-sec9.html#sec9.4
  2. feat: 模板字符串支持通过 ${{key}} 的方式自动 encodeURIComponent 内容
  3. feat: 支持通过 ^.xxx 匹配url文件后缀为 xxx 的请求

v1.16.8

  1. fix: 无法用 /...whistle-path.5b6af7b9884e1165.../// 内部路径访问插件的 WebSocket 服务问题
  2. perf: 减少轮询接口输出的无用内容

v1.16.7

  1. feat: 插件新增 options.updateRules() 用于立即更新通过 @whistle.xxx/path/to 引入的规则
  2. feat: 新增方法 proxy.setUIHost(host)proxy.setPluginUIHost(name, host) 方便第三方动态设置whistle或其插件ui的域名

v1.16.6

  1. feat: 支持在插件到 server hooks 到 req.request([uri, ]cb[, opts={host, port, rules}]) 到方式自定义请求目标及设置响应rules
  2. perf: WebUI到js文件开启gzip压缩,减少传输的文件大小,提升页面打开速度
  3. refactor: 调整UI展示的js文件内容大小(0.5m -> 1.5m)
  4. fix: 修复 WebSocket ProxyincludeFilter://xxx excludeFilter://xxx 但一些bug

v1.16.5

  1. feat: 插件列表添加 Sync 按钮可用于获取插件的规则或值并设置到界面的Rules或Values
  2. feat: 支持通过插件 package.json 配置 "whistleConfig: { "hintUrl": "/cgi-xxx/xxx" }" 等方式自定义自动补全列表功能
  3. feat: 支持通过 req.sessionStorage.[get|set|remove] 实现插件各个server hooks之间的数据传递

v1.16.4

  1. fix: #316

v1.16.3

  1. fix: #316
  2. fix: 通过 w2 i @org/whistle.xxx 安装的插件无法执行 w2 run xxx 的问题
  3. fix: 安装插件可能导致whistle crash问题

v1.16.2

  1. fix: Composer 面板里面的 Rules 禁用后无法开启的问题
  2. feat: 支持通过 w2 run --inspectw2 run --inspectBrk 开启调试模式

v1.16.1

  1. feat: 支持通过 uiurl#network?name=h&value=v&name1=h1&value1=v1&...&name5=h5&value5=v5 根据多个请求头过滤抓包数据
  2. refactor: 支持 pattern host proxy://xxx enable://proxyHost 如果出现tls错误自动降级到http请求

v1.16.0

  1. feat: 支持插件通过 options.getRules(cb), options.getValues(cb), options.getCustomCertsInfo(cb),分别获取插件Rules、Values、自定义证书信息
  2. style: HTTPS菜单的对话框添加 View all custom certificates 按钮,用于查看自定义证书状态(是否过期等)
  3. fix: WebSocket请求无法设置 reqDelay://msNum 的问题

v1.15.16

  1. fix: http请求访问某些上游代理服务器返回400问题

v1.15.15

  1. fix: #310
  2. feat: 插件新增 req.originalReq.relativeUrl 获取匹配后拼接的url

v1.15.14

  1. feat: 支持 ^***/path/to***/path/to 匹配所有类似 https://www.test.com/xxx/.../path/to 的url
  2. fix: 使用代理及 x-whistle-real-host 穿透nginx时出现的nginx可能读取原始host的问题

v1.15.13

  1. feat: 支持通过 x-forwarded-hostx-whistle-real-host 自定义请求的host,方便通过Nginx的反向代理到whistle
  2. feat: 支持通过 enable://proxyFirst 调整 proxy 配置的优先级高于 host (默认:host > proxy)

v1.15.12

  1. perf: 优化请求失败重试机制
  2. fix: 解决插件里面调用 req.request(options) 时再次触发 statsServer 等问题

v1.15.11

  1. refactor: 支持捕获插件的 unhandledRejection 异常
  2. refactor: 调整url匹配的请求参数追加方式:
    # 配置
    www.test.com?2 www.abc.com?abc
    www.test.com www.abc.com?abc
    
    # 原来的效果
    www.test.com?123 -> www.test.com?abc123
    www.test.com?234 -> www.test.com?abc34
    # v 1.15.11+ 的效果
    www.test.com?123 -> www.test.com?abc&123
    www.test.com?234 -> www.test.com?abc&34
  3. feat(#303): 支持通过 style://color=!xxx&fontStyle=xxxxx&bgColor=red 设置请求的字体颜色/样式/背景颜色
  4. style: Frames 支持通过 Ctrl[Command] + X 清空列表

v1.15.10

  1. fix: 解决在Windows系统里面无法用 w2 install whistle.xxx 安装插件的问题,以及异步加载插件顺序问题

v1.15.9

  1. refactor: 支持通过自定义相对路径加载插件,w2 start -A ./plugins
  2. style: 修复界面checkbox对齐问题

v1.15.8

  1. refactor: 优化默认超时时间 3m -> 1h
  2. refactor: 调整最大连接数 60 -> 256
  3. perf: 优化重试逻辑,减少内存占用

v1.15.7

  1. perf: 优化监听连接的关闭事件,减少内存占用
  2. refactor: 使用Values设置rawfile时,自动删除 content-encoding 响应头
  3. fix: 安装插件 w2 i @org/whistle.xxx 出现报错问题

v1.15.6

  1. perf: 优化搜索框的性能
  2. refactor: 优化 w2 installw2 uninstall,避免卸载失败
  3. perf: 解决了一些长连接无法及时清理导致的内存占用过高问题

v1.15.5

  1. fix: w2 uninstall 在windows里面无法执行的问题

v1.15.4

  1. fix: 修复 w2 install 会删除其它已存在插件的问题

v1.15.3

  1. style: Frames 搜索支持忽略大小写
  2. refactor: Node 11及以上版本禁用请求连接复用,这些版本在复用请求连接时会导致复用的连接意外断开

v1.15.2

  1. refactor: 启动时如果不设置 -H boundHost,默认检测在 127.0.0.1 的端口是否被占用,如果被占用会报错(可以通过启动参数 -M INADRR_ANY 禁掉)
  2. feat: 支持通过命令行参数 -M rules 启动无抓包页面模式,这种模式下UI将看不到Network,无法抓包且插件无法通过 req.getSession(cb) 获取抓包数据
  3. feat: 支持通过 w2 install xxxw2 i xxx 的方式安装插件,如果用 cnpm 或 tnpm 安装可以采用 w2 ti xxxw2 ci xxx,也可以指定 registry:w2 i xxx --registry=https://r.npm.taobao.org
  4. feat: 支持通过 w2 uninstall xxx 的方式卸载通过 w2 install xxx 安装的插件
  5. feat: 支持通过 w2 run xxx ...w2 exec xxx ... 执行命令行命令

v1.15.1

  1. fix: 页面脚本错误(该错误不影响使用)
  2. refactor: Node 11及以上版本禁用请求连接复用,这些版本在复用请求连接时会导致复用的连接意外断开
  3. refactor: 优化搜索whistle插件的路径,增加搜索目录,减少插件搜索不到的问题

v1.15.0

  1. feat: 支持通过命令行参数 --socksPort 1080 启动指定监听端口的socks v5服务(目前只支持普通tcp请求,udp请求还有ftp请求的带来暂不支持)
  2. feat: 插件server添加了 req.passThrough()req.request(url/options, cb)req.writeHead(code, message, headers) 等方法用于将插件里面的请求转发到指定服务

v1.14.10

  1. refactor: 调整 pipe://plugin 的实现,支持通过pipe获取请求或响应内容,再传给 rulesServerresRulesServer

v1.14.9

  1. perf: 优化 Network 列表的性能

v1.14.8

  1. feat: 新增命令行参数 --httpPort--httpsPort,分别用于启动普通的 http 和 https server,方便做反向代理,且可用于再启动一个 http proxy (跟默认的 http 代理功能一致)和 https proxy (可作为https代理服务器) 功能

    应用实例:w2 restart --httpPort 80 --httpsPort 443,这样通过配系统host就可以抓包到无法设置代理的 app 请求包

  2. feat: 支持将自定义证书或根证书(root.crt & root.key) 存在 ~/.WhistleAppData/custom_certs 目录里面,whistle会优先使用该目录的证书

    也可以通过命令行参数 -z /custom/certs/dir/xxx 指定自定义证书的目录

  3. feat: 支持在插件所在目录启动 w2 run 时,自动加载当前目录的所有插件,方便调试插件
  4. fix: #292

v1.14.7

  1. refactor: 优化启动参数 --max-http-header-size=size

v1.14.6

  1. fix: querystring.parse('+') 自动转转成空格 ' ' 或 %2B 问题
  2. refactor: w2 add 如果当前规则已存在,则选中该规则
  3. feat: 支持通过请求头 x-forwarded-proto 设置 httphttps 请求

v1.14.5

  1. fix: jsPrepend://urlcssPrepend://url 无法同时设置多个的问题
  2. feat: 支持通过设置 pattern disable://hide 禁用 pattern enable://hide
  3. feat: 新增 headerReplace:// 协议,用来通过字符串或正在替换指定关键字,详见:headerReplace
  4. perf: 优化内存占用

v1.14.4

  1. perf: 固定的缓存长连接数,减少大规模访问是连接数缓存太多导致的内存占用过多问题
  2. fix(pipestream): stream内部缓存堆积问题

v1.14.3

  1. fix: stream.write() 无返回缓存状态导致缓存堆积问题

v1.14.2

  1. refactor: 请求上游代理的 UA 默认使用当前请求的 UA
  2. refactor: 通过命令行 -M strict 设置的严格模式下,限制每个包的缓存大小 (这个参数一般用于部署访问量比较大的公共服务时使用,一般用户不要设置)

v1.14.1

  1. fix: #285

v1.14.0

  1. feat: Log 改成 Tools,并新增 ToolBox 里面集成:生成二维码、查看JSON对象、生成图片生成Base64的工具
  2. feat: 新增 pipe 功能,可以把http[s]、websocket、tunnel请求数据流pipe到插件,插件可以自定义对数据流的解包及组包,具体参见:http://wproxy.org/whistle/rules/pipe.html
  3. fix: 上个版本导致的tunnel代理path设置出错问题

v1.13.28

  1. style: Plugins添加 UpdateAll 按钮,方便获取更新所有有新版本插件的命令
  2. fix: whistle集群内部路径跳转问题
  3. fix: 设置代理时SNI出错问题

v1.13.27

  1. feat: 支持通过日志级别过滤日志内容
  2. style: 支持设置 pattern enable://clientId|mutilClient 启用请求带上clientId
  3. style: log 添加钩子 window. onBeforeWhistleLogSend(result, level) 用于自定义显示的日志内容,可以用来添加一些自定义详细日志信息
  4. feat: 支持通过 pattern enable://gzip 强制开启 gzip 模式

v1.13.26

  1. feat: 支持上传文件作为规则配置,解决远程部署是无法在Values设置大块内容的问题,详见:http://wproxy.org/whistle/webui/files.html
  2. feat: 支持显示包含WebSocket帧数据的saz文件
  3. feat: Log里面支持设置是否展开json对象的根节点

v1.13.25

  1. fix: 将weinre或log注入到缺少分号的js文件中出现的脚本错误问题
  2. refactor: 插件里面每个钩子占用一个随机端口改成整个插件最多只占用一个随机端口
  3. refactor: 优化插件配置 whistle.xxx://valuexxx://value 等价(无实现server钩子的情况下)
  4. refactor: 优化 excludeFilterincludeFilter
  5. feat: 插件的uiServer支持WebSocket连接

v1.13.24

  1. fix: 重新设置port可能导致插件里面的 req.getSession(cb) 的回调无法执行问题

v1.13.23

  1. fix: #271

v1.13.22

  1. fix: http协议的websocket请求无法获取真实clientIp问题

v1.13.21

  1. feat: webui直接复用whistle的端口,不再独占一个端口,所以默认不再支持通过类似 http://127.0.0.1:8900 的方式访问ui,只能通过类似 http://127.0.0.1:8899 的方式访问(其中 8899 为代理端口),如果需要ui另起一个端口,可以通过启动命令行参数 -P xxxx 设置
  2. feat: 直接通过whislte模块起服务时,支持获取server对象
    const startWhistle = require('whistle');
    const proxy = startWhistle({...});
    console.log(proxy.server)
    
  3. feat: 显示所有响应内容(之前版本对二进制内容默认不显示)
  4. perf: 优化内部请求解析流程,提升whistle处理性能

v1.13.20

  1. fix: 替换带端口的url后 req.headers.host 的显示问题

v1.13.19

v1.13.18

  1. feat: 命令行添加 --no-prev-options 启动选项,支持通过 w2 restart 时不复用先前设置的选项
  2. refactor: 插件的内部规则 _rules.txt 改成 reqRules.txt
  3. fix: www.test.com http://127.0.0.1:3000 log:// log不生效问题

v1.13.17

  1. feat: 本地替换新增响应206功能,支持iOS播放本地替换的视频文件

v1.13.16

  1. fix: jsBody失效问题
  2. style: 精简Network的右键菜单

v1.13.15

  1. fix: 页面设置 <meta http-equiv="Content-Security-Policy" content="script-src *.qq.com *.gtimg.cn *.gtimg.com 'unsafe-inline' 'unsafe-eval';"/> ,导致 logweinre 失效
  2. fix: ServerPort 显示问题及设置 proxy://host:port?host=ip:port2 pattern 时带上默认端口号问题(https: 443,http: 80)

v1.13.14

  1. style: HexView添加 CopyHex 按钮,支持Copy纯二进制
  2. feat: Frames/Composer支持输入HexText

v1.13.13

  1. feat: 插件支持通过package.json配置 "pluginHomepage": "http://xxx.xxx.com/" 自定义UI URL
  2. fix: 在iOS12里面log无法显示 error.message 的问题,参见:#257
  3. refactor: 优化插件错误输出,支持显示初始化错误

v1.13.12

  1. feat: 支持通过请求内容过滤 pattern operation filter://b:pattern
  2. feat: log支持注入 whistle.onWhistleLogSend(level, logStr) 获取页面日志信息自己做上报
  3. perf: 去掉本地请求的连接缓存,优化本地请求速度

v1.13.11

  1. fix: pattern host://{key1}pattern proxy://{key2} 失效问题

v1.13.10

  1. refactor: 解决log里面显示循环引用对象的问题
  2. feat: 支持 Stop Record(默认)与 Pause Record,前者已存在,会忽略后续的抓包数据,后者只是暂停

v1.13.9

v1.13.8

  1. fix: includeFilterexcludeFilter无法匹配请求头问题,已经里面正则导致子匹配失效问题

v1.13.7

  1. perf: 优化界面性能
  2. style: Frames里面的 AutoRefresh 改为 Record
  3. fix: 页面Frames里面数据帧可能丢失的问题

v1.13.6

  1. style: Log里面的 AutoRefresh 改为 Record
  2. refactor: 不导出被过滤掉的日志
  3. refactor: reqCors://* 等价于 reqCors://origin=*
  4. feat: Network里面的右键菜单添加过滤快捷键,可以快速过滤指定域名或url
  5. feat: Network里面的Filter拆分成 Exclude FilterInclude Filter,分别用于设置不显示的抓包数据和要显示的抓包数据,具体功能参见:webui/filter
  6. feat: filter 分拆成语义更明确的 excludeFilterincludeFilter,且新增了通配符匹配

v1.13.5

  1. fix: 导入saz文件 Set-Cookie 等重名头部覆盖问题
  2. feat: 支持导入导出日志文件
  3. feat: AutoRefresh 改成 Record,可以手动关闭请求后台数据

v1.13.4

  1. fix: Network隐藏是按F12切换详情面板时高度可能变成0
  2. refactor: 支持插件更新提醒
  3. feat: Composer新增历史记录按钮,可以查看在Composer里请求过的记录
  4. feat: 避免一行配置过程,该版本引入换行功能
    www.test.com file://(test) filter://*/cgi-bin
    # 等价于
    line`
    www.test.com file://(test)
    filter://*/cgi-bin
    `
    # 或
    line`
    www.test.com
    file://(test)
    filter://*/cgi-bin
    `
    

v1.13.3

  1. feat: ***.xxx.com (3个 * 及以上功能相同) 等价于 **.xxx.com + xxx.com^***.xxx.com 同理
  2. feat: 模板字符串支持通过 ${xxx.replace(,defaultValue)} 设置默认值
  3. feat: 支持切换详情右侧详情面板到底部
  4. perf: 缓解页面切换Inspectors时卡顿问题

v1.13.2

  1. style: 调整 AutoRefresh 的位置, Abort 按钮图标加警告色
  2. feat: 在顶部菜单栏的 Replay 按钮下拉菜单添加 Abort 按钮,支持Abort掉处于pending状态的请求 Abort

v1.13.1

  1. fix: 启用 customParser 且延迟延迟响应可能导致连接自动断开的问题
  2. style: 高亮显示插件的 EnableAll 按钮

v1.13.0

  1. feat: 支持通过插件的 tunnelServer 及设置 enable://customParser 对tunnel请求(即:tpc请求或未拦截的https、websocket请求)自定义解包组包,参见:whistle.custom-parser
  2. feat: 支持在插件里面添加 resRules.txt 文件,用于设置静态规则,功能相当于 resRulesServer 吐出的规则
  3. feat: 支持在模板字符串里面获取插件规则的值 pattern whistle.xxx://ruleValue ,可以在插件的 _rules.txt 的模板字符串里面 ${whistle.xxx} 获取 ruleValue,具体参见:whistle.inspect

v1.12.17

  1. feat: 插件列表添加 Uninstall 按钮,用于展示协助插件的方法
  2. refactor: 搜索列表时暂停自动滚动
  3. fix: reqHeaders://Host=xxx.comHost 不支持忽略大小写的问题
  4. fix: 内联 Value 可能被清空的问题

v1.12.16

v1.12.15

  1. fix: www.test.com file:///User/xxx/test/ 配置 http://www.test.com/?id=xxx 无法匹配 /User/xxx/test/index.html 问题

v1.12.14

  1. fix: ignore://host|xxx| 同时配置多个忽略属性失效的问题
  2. fix: 启用 Back rules first 且规则配置为空导致启动失败的问题#230)

v1.12.13

  1. feat: 支持从本地路径自动加载规则 @~/xxx/test.txt
  2. feat: 支持从插件接口加载规则: @whistle.nohost/cgi-bin/global-rules
  3. feat: 支持禁用响应内容压缩 pattern disable://gzip
  4. feat: 模板字符串支持replace,且支持子匹配
    pattern protocol://`${search.replace(pattern1,replacment)}`
    www.test.com file://`${search.replace(/Course_(id)\,?/ig,$1cid)}${test.html}`
    
    pattern1 为正则或普通字符串(不需要加引号)

其它功能参见:@

v1.12.12

  1. feat: 支持在Rules里面通过以下方式内联多行的Value:

     ``` test.js
     alert(1);
     console.log(2);
     // do sth
     ```
    

    上述配置表示key为 test.js,value为:

    alert(1);
    	console.log(2);
    	// do sth
    

    这样可以通过类似以下方式引用该Value:

    pattern protocol://{test.js}
    

v1.12.11

  1. refactor: reqCookiesresCookies里面的Value如果都为latin1字符则不进行encodeURIComponent
  2. refactor: debug状态下插件支持输出异步错误

v1.12.10

  1. feat: 支持通过在Rules配置中 @https://rules.host.com/xxx 的方式远程自动加载规则(支持http和https请求,直接返回规则配置)
  2. feat: 支持启动参数设置 shadowRules(只支持作为第三方模块传入,不支持命令行方式传入)
  3. fix: 修复 filter://pattern 只能同时生效两个的问题

v1.12.9

  1. feat: 支持在规则里面用模板字符串,具体内容参见:操作值
  2. style: 修改编辑器的字体,以便更好显示模板字符串

v1.12.8

  1. fix: Composer和Inspectors里面的Response可能出现联动的问题
  2. feat: resCookies支持设置SameSite

v1.12.7

  1. refactor: 调整抓包数据缓存策略,优化内存占用
  2. feat: 支持在Rules、Values、JSONView里面按住 Ctrl[Command]+鼠标点击 在新窗口打开链接
  3. feat: resScript协议支持 filter://s:404filter://resHeader:key=valuefilter://serverIp:ip

v1.12.6

  1. style: 优化Composer,支持展示 Response 数据
  2. feat: 支持通过 filter://m:methodNamefilter://i:clientIpfilter://h:key=subValue 过滤规则,及支持取非 filter://m:!methodNamefilter://i:!clientIpfilter://h:key!=subValuevalue 也可以用正则 /xxx//xxx/i 替代
  3. feat: 删除对 whistle-ssl 特性的支持

v1.12.5

  1. refactor: 支持 delete 请求传递请求body
  2. feat: 支持配置IPv6的host,如:pattern [fe80::2c6a:87c9:2ceb:d047]:8099pattern fe80::2c6a:87c9:2ceb:d047

v1.12.4

  1. fix: proxy设置的用户名和密码无法生效的问题

v1.12.3

  1. perf: 优化显示大文本的性能
  2. feat: 添加https-proxy协议,支持设置请求转发到上游https代理服务器
  3. feat: 为简化whistle的规则配置,该版本会删除以下使用比较少或配置比较复杂,且可以用其它方案替代的协议,点击链接可以查看替代方案:

v1.12.2

  1. fix: 选中状态自动更新可能会自动切换Changed状态
  2. style: 微调背景色,保持与 Chrome 69+ 主色调一致
  3. refactor: ^/cgi- 等价于 ^**/cgi-

v1.12.1

  1. style: Composer失败时会弹框提醒
  2. feat: 支持在 Rules > Settings > Back rules first 调整规则的优先顺序,默认从上到下,其中Default里面的规则优先级最低,这个设置只对在Rules配置的规则生效,对reqScript和插件设置的规则不生效

v1.12.0

  1. feat: 删除协议 exports://exportsUrl://,请用更灵活方便的插件获取:插件开发
  2. feat: 支持插件里面获取WebSocket和socket请求的帧数据,详见:插件开发

v1.11.4

  1. style: 解决Mac下 Ctrl+F 冲突问题
  2. feat: Overview支持只显示匹配的规则
  3. feat: 支持在插件获取请求数据,具体参见:插件开发
  4. fix: 处理 socket hand up 错误

v1.11.3

  1. feat: 调整规则匹配机制,一些协议支持同时匹配多个:ignore, enable, filter, disable, plugin, delete, urlParams, params, reqHeaders, resHeaders, reqCors, resCors, reqCookies, resCookies, reqReplace, urlReplace, resReplace, resMerge, reqBody, reqPrepend, resPrepend, reqAppend, resAppend, resBody, htmlAppend, jsAppend, cssAppend, htmlBody, jsBody, cssBody, htmlPrepend, jsPrepend, cssPrepend,更多协议参见:协议列表

v1.11.2

  1. feat: 支持给上游代理转发的请求设置hosts:pattern proxy://ip:port?proxyHostpattern enable://proxyHostpattern proxy://ip:port?host=ip:port
  2. feat: 添加 xhost://... 功能同 host://...,前者如果发现服务没起来,会自动请求现网
  3. refactor(UI): 默认主题的host高亮显示,判断离线机制等,WebSocket返回失败预览等。

v1.11.1

  1. fix: 精确匹配无法带上请求参数的问题
  2. fix: Network空白处无法弹出右键菜单问题
  3. feat: 支持右键菜单打开预览图片
  4. feat: websocket和socket请求支持Pause、Ignore、Composer、Replay, Abort操作

v1.11.0

  1. feat: https请求自动降级(#176)
  2. feat: 支持显示HexView(二进制)
  3. feat: 支持远程导入Sessions/Rules/Values,通过 Shift + Export按钮
  4. feat: 支持在新窗口预览HTML页面
  5. fix: 导入saz文件时把https请求自动转成http请求的问题
  6. refactor: 导致saz文件时也会保留whislte的一些特有信息
  7. style: RequestResponse 统一放到 Inspectors 显示,详见:#180

v1.10.10

  1. feat: 支持显示图片
  2. feat: 通过 w2 status [-S storage]w2 --all 显示当前whistle运行状态
  3. refactor: WebSocket请求贞数据二进制显示格式

v1.10.9

  1. feat: 添加更新插件的按钮,点击该按钮弹出更新命令
  2. feat: 支持通过命令行 w2 usew2 enable 获取当前目录 .whistle.js 输出的规则配置,具体参见:命令行参数

v1.10.8

  1. refactor: 放宽对json格式的要求
  2. refactor: resMerge支持返回类型为html的请求
  3. fix: 127.0.0.1请求无法发出去的问题

v1.10.7

  1. chore: 修复README没发布出去的问题
  2. fix: 编辑器搜索问题
  3. feat: 支持设置多个访问webui的域名 -l "webui1.example.com|webui2.example.com"

v1.10.6

  1. fix: 用proxifier代理http post请求可能会卡住的问题

v1.10.5

  1. refactor: 自动检测是否支持sni
  2. fix: reqScript和resScript里面换行自动变成空格问题
  3. feat: 支持域名为ip的https请求
  4. feat: 全面支持proxifier代理请求
  5. feat: 自动切换web请求和普通的socket请求

v1.10.4

  1. feat: 支持tunnel代理http请求
  2. feat: 支持通过设置 tunnel://host enable://inspect 后在 Network -> Response -> Frames 查看tunnel请求的内容
  3. feat: 过滤pattern支持简单的通配符 filter://*/xxx
  4. feat: 支持端口匹配 :12345 operatorURI
  5. refactor: IE9+及WebKit、Gecho默认支持SNI技术

v1.10.3

  1. feat: 通过命令行参数 -z 证书目录 设置自定义证书对应的域名将自动启用拦截https请求
  2. feat: weinre支持通过js文件注入
  3. refactor: 调整的weinrelog请求路径及禁用缓存

v1.10.2

  1. feat: Network的右键菜单新增 QR Code 用于生成指定URL的二维码
  2. fix: saz文件导入如果不存在host无法显示的问题
  3. fix: 使用xxxPrepend注入html、js、css到页面是可能出现非严格模式的问题

v1.10.1

  1. fix: Network中如果请求被选中右键菜单中 按住Shift + 点击Replay 无法弹出设置次数对话框的问题
  2. fix: 不支持多个filter的问题
  3. feat: ignorefilter支持忽略(过滤) pattern
 operator pattern1 pattern2 filter://reg1 filter://!reg2 ignore://!reg3 ignore://reg4
  1. feat: Values里面的右键菜单加入 JSON > Validate + Format 功能

v1.10.0

该版本新增了一些比较有用的功能,建议大家及时更新

  1. feat: 右键 -> 按住 Shift -> 点击Replay,可以输入Replay当前请求的次数(只支持Replay单个请求的情况)
  2. feat: ignorefilter支持忽略(过滤) pattern
pattern operator1 operator2 filter://reg1 filter://!reg2 ignore://!reg3 ignore://reg4
> 其中 `reg1~reg4` 为形如 `/xxx/` 或 `/xxx/i` 的正则表达式,`!reg` 表示 `reg` 取非, 该配置表示请求要匹配`pattern`,但要过滤掉【匹配 `reg1`或 `reg4`】、【不匹配`reg2`】、【不匹配`reg3`】的请求。
  1. feat: params改成reqMerge,并支持修改请求类型为json的数据,新增resMerge用于修改返回类型为json或jsonp请求的数据,直接可以通过设置json对象覆盖返回的json对象对应字段(深度合并)。
  2. fix: JSONView里面如果数值位数太大显示出现偏差的问题
  3. refactor: Network下方的搜索框支持正则过滤 /xxx/i

v1.9.12

  1. fix: The fs.promises API is experimental (Node.js 10.1.0)
  2. refactor: 支持非过滤(#155)

v1.9.11

  1. fix: 如果请求的域名为IP,则默认不进行解包,需要解包可以通过设置规则 tunnel://x.x.x.x enable://capture 实现
  2. fix: Node 10无法导入导出saz文档的问题
  3. fix: 某些包含 \x3f 等16进制转义字符无法解析成JSON对象的问题
  4. refactor: 支持通过url的hash请求参数设置 clearNetwork=true 让network不要加载缓存抓包数据
  5. feat: 支持设置log id:pattern log://xxx(logId长度不能超过36,且不能包含/\(){}<>),并通过log id过来日志 log id

v1.9.10

  1. feat: Composer自动保存已填写的数据
  2. fix: Composer里面如果头部出现JSON字符串可能导致无法解析请求头的问题

v1.9.9

  1. fix: Node 10更新openssl带来的问题:error:0D0E20DD:asn1 encoding routines:c2i_ibuf:illegal

v1.9.8

  1. fix: 启动时卡住命令行

v1.9.7

  1. fix: node v9.11.1 带来的bug
Node: v9.11.1
Date: 2018-4-23 19:22:33
TypeError: Cannot read property 'res' of null
  at Socket.socketCloseListener (_http_client.js:355:11)
  at Socket.emit (events.js:180:13)
  at TCP._handle.close [as _onclose] (net.js:541:12)
  1. refactor: 去掉命令行里面 -A, --ATS,whistle会默认自动检测
  2. refactor: 重新翻译命令行参数
  3. refactor: 优化log捕获错误的堆栈信息
  4. refactor: 调整界面轮询频率

v1.9.6

  1. refactor: 如果tunnel请求被拦截,则不请求 plugins.tunnelRulesServer
  2. fix: Composer构造get请求时,如果出现 Content-Length 及请求内容导致请求无法正常响应的问题
  3. feat: 插件新增构造服务 plugin.initial(options) 用于初始化插件

v1.9.5

  1. fix: 通过Composer构造的WebSocket请求是Client IP显示错误的问题
  2. fix: 设置log时可以出现的Converting circular structure to JSON异常
  3. feat: 支持 ignore://*|-yyy 等价与 ignore://*|ignore.yyy
  4. feat: 添加钩子 plugin.resStatsServer 用于插件统计响应状态

v1.9.4

  1. fix: 修改请求头可能导致 content-length 被自动删除的问题
  2. fix: ignore://socksignore://http-proxy 失效问题

v1.9.3

  1. fix: JSONView里面点击AddToValues下载文件的问题
  2. refactor: 支持点击AddToValues或Download按钮时,根据当前url自动填写默认名称
  3. refactor: 去掉插件中没什么用处的statusServer,避免与statsServer混淆
  4. style: 界面修改为默认显示左侧菜单模式
  5. feat: 支持设置 disable://captureenable://capture,这两个等价于原来的 disable://interceptenable://intercept

v1.9.2

  1. refactor: 界面微调,及Log界面的性能优化
  2. refactor: 去掉HTTPS里面 Hide TUNNEL CONNECTS 选项

v1.9.1

  1. feat: 增强v1.8.9版本的 ignore://allRules功能,支持双ignore的规则,即:ignore://allRules|ignore.host|ignore.whistle.scriptignore://allRules|ignore:host|ignore:whistle.script 这个时候whistle会忽略 hostwhistle.script 以外的所有规则
  2. perf: 优化了JSONView里面切换到Source模式时可能出现的卡顿问题
  3. style: 禁用所有Rules或Plugins时左侧按钮会自动变灰,修改Rules或Values时左侧按钮会加 *
  4. refactor: 默认不带 x-forwarded-for,如果需要可以通过设置 pattern forwardedFor:// 实现

v1.9.0

  1. feat: 界面Network右侧的Composer支持设置临时的Rules
  2. feat: 支持通过命令行 -M network 设置为抓包模式,该模式只能查看抓包不能设置规则及加载插件
  3. feat: 界面暴露了一些接口供第三方扩展,具体用法参见后续的插件nohost
  4. feat: 支持通过命令行 -L "script=a.b.com&vase=x.y.com&nohost=imweb.nohost.pro" 自定义访问插件的域名

v1.8.9

  1. fix: 点击Network的Time表头时响应时间没有按数值大小排序的问题
  2. feat: Rules里面的@符号支持扩展
  3. feat: 支持通过设置 ignore://allRules 忽略掉所有配置的规则

v1.8.8

  1. refactor: 避免url里面的参数自动转义,保留原有url的字符
  2. refactor: Offline状态下菜单栏灰显
  3. fix: 作为代理转发时,客户端ip可能传递出错的问题

v1.8.7

  1. feat: 在Network中双击右侧的Tab按钮,可以将当前选择的行滚动到可视区域
  2. feat: 点击选中的请求数据不会因为请求列表的滚动导致被删除
  3. feat: 在 Plugins 里面新增 EnableAll 按钮

v1.8.6

  1. fix: 导出Rules或Values时,只能导出全部的问题
  2. feat: 选择导出Rules或Values对话框里面添加 Export All 按钮
  3. feat: 添加右键菜单按钮 Remove -> Others,删除其它抓包数据

v1.8.5

  1. feat: 支持导入har文件
  2. feat: 支持JSON数据直接添加到Values中
  3. refactor: 优化界面性能#110

v1.8.4

  1. feat: 添加命令行参数 -f, --secureFilter 用于过滤隐藏显示到界面的抓包数据,如cookie里面的登录态信息
  2. refactor: 支持同时根据多个ip过滤抓包数据
  3. perf: 大幅提升pacreqScriptresScript的性能

v1.8.3

  1. fix: RegUrl后面请求参数匹配问题,^ke.qq.com/?*^ke.qq.com/?**
  2. feat: 支持 Copy As CURL

v1.8.2

  1. fix: 无法清楚log的问题

v1.8.1

  1. feat: Network、Rules、Values重新定义右键菜单

v1.8.0

  1. feat: tunnel请求支持resScriptresponseForresHeaders
  2. feat: 添加新协议:htmlPrependhtmlBodyhtmlAppendcssPrependcssBodycssAppendjsPrependjsBodyjsAppend、其中:htmlAppendcssAppendjsAppend分别等价于 htmlcssjs
  3. feat: 支持匹配方式 www.*.com operator-uriwww.**.com operator-uri等: www.**.com/test 1.1.1.1
  4. feat: 支持匹配方式 ^www.**.com/** operator-uri^www.**.com/** operator-uri等: ^www.*.com/*** file://E:\test/$2
  5. fix: 子匹配的一些问题

v1.7.3

  1. feat: 支持通过 @xxx 设置变量值,插件(options.GLOBAL_VALUE_HEADER)或reqScriptresScript(value)可以读取到该值
  2. refactor: 启动时的数据备份问题

v1.7.2

  1. refactor: 数据备份优化,如果原文件没有数据,重新用备份文件写入

v1.7.1

  1. fix: reqScript的body为空的问题:issue#74,及render无法使用的问题,建议大家升级到最新版本
  2. refactor: visitorName 改为 guestName
  3. feat: 添加responseFor,功能与forwardedFor对应,用于在Network的severIp上显示真实的服务器环境

v1.7.0

  1. feat: 将rulesFile 改为 reqScript,原来的rulesFile还可以使用,功能与reqScript一样
  2. feat: 添加resScript,支持在响应后修改通过脚本修改规则
  3. fix: 通过rulesFile设置proxy时会出错的问题

v1.6.7

  1. refactor: 调整证书策略,防止域名里面有不合规的字符,导致Chrome出现证书校验失败

  2. refactor: rulesFile添加一些新的内置方法和对象:

     var context = {
       url: req.fullUrl,
       method: util.toUpperCase(req.method) || 'GET',
       httpVersion: req.httpVersion || '1.1',
       isLocalAddress: function(_ip) {
         return util.isLocalAddress(_ip || ip);
       },
       ip: ip,
       headers: extend(true, {}, req.headers),
       body: body,
       rules: [],
       values: {},
       getValue: values.get,
       parseUrl: parseUrl,
       parseQuery: parseQuery,
       tpl: tpl
     };
    

v1.6.6

  1. feat: 正则匹配和精确匹配支持非操作,可以通过 !/reg/i!$www.test.com/xxx 实现非匹配操作
  2. feat: 支持通过启动命令行参数选择监听的网卡 -H 127.0.0.1--host 192.168.0.100
  3. fix: 获取通过代理转发过来请求的clientIp错误的问题

v1.6.5

v1.6.4

  1. feat: 在Network的列表及Overview里面支持显示Content-Encoding
  2. feat: Rules里面支持Autocomplete,输入过程中如果有匹配的规则会自动显示,或者Windows按住 Alt+/,Mac按住 Option+/ 可以手动调出可以选规则列表,且选择或hover到某个规则后按 F1 (笔记本可能要按 fn+F1)可以自动打开对应的帮助文档
  3. feat: 支持通过按F1打开对应的帮助文档

v1.6.3

  1. fix: 在Frames的列表没有加React的key导致性能比较差的问题
  2. fix: websocket设置代理后路径被改为根路径的问题

v1.6.1

  1. feat: 支持 ws://www.test.com/xxx https://www.abc.com/a/b 匹配,whistle会根据匹配url的协议 httphttps 自动转成 wswss
  2. feat: hosts:// <=> host://
  3. feat: 支持websocket(socket)请求设置statusCodereqDelayurlParamsparamsdeletereqHeadersresHeadersrefererrefererdisablereqCookiesreqCorsresCors
  4. refactor: Network -> Log -> Console支持JSONView的形式 Log

v1.6.0

  1. feat: 支持WebSocket的抓包与构造,详情参见WebSocket操作文档
  2. feat: 支持下载请求响应数据,hover到[Request|Response]/[TextView|JSONView]/ViewAll/Download
  3. feat: 导出的数据支持自定义文件名称
  4. feat: 原来的版本,如果请求的路径的ip和端口与whistle的ip和端口一样,或请求域名为localUIHOst,则都会转到whistle的UI,v1.6.0 以后,如果路径为:http://localIP:whistlePort/_/xxx的请求会自动转成 :http://localIP:whistlePort/xxx,这样就可以通过在whistle上配置规则 localIP:whistlePort/xxx 127.0.0.1:6001 实现反向代理的功能(_也可以换成-)。
  5. feat: 原来默认uiport为 port + 1,且可以通过启动参数 -P 9999 更改,v1.6.0 以后如果非自定义的uiport被占用会自动获取一个随机端口

v1.5.20

  1. fix(#87): Node9启动失败的问题及zlib的bug
  2. feat: 支持Composer构造ws和tcp请求
  3. feat: 支持Replay带头部规则的请求

v1.5.19

  1. feat: 支持双击 AutoRefresh 停止滚动,或双击顶部菜单栏空白位置滚动到顶部
  2. refactor: 优化文本显示的性能

v1.5.18

  1. feat: rulesFile,支持通过body获取当前请求的内容(如果没有请求内容,则body='',如果请求内容大于16k,body内容可能比请求内容小)
  2. refactor: pattern enable://abort是抓包界面显示502的问题,改成 aborted
  3. refactor: 在Values里面以js结尾的key的值支持通过快捷键 Ctrs[Command]+? 注释

v1.5.17

  1. feat: 兼容Chrome浏览器的本地路径 file:///C:/Users/xxx/Downloads/jq221663.html 等价于 file://C:/Users/xxx/Downloads/jq221663.html
  2. feat: 支持通过启动参数 -M pureProxy 将whistle设置为纯http代理的模式,这种模式下只能通过 http://local.wproxy.org 访问配置界面
  3. feat: 支持通过 pattern http://local.whistlejs.com/xxxpattern http://local.wproxy.org/xxx 的匹配方式,把请求转到whistle的配置界面
  4. feat: 支持通过 pattern enable://abort 强制中断掉请求,如果你想延迟中断,可以通过 pattern enable://abort reqDelay://3000 实现

v1.5.16

  1. fix: 选择导出抓包数据的默认文件类型错误的问题(第一次使用Ctrl[Command] + S的方式导出,且没有手动选择类型时时会有这个问题)
  2. feat: 插件数据返回数据支持通过 options.ETAG_HEADERoptions.MAX_AGE_HEADER 两个字段设置etag或max-age,这样whistle会自动缓存数据,并判断过期时间,插件可以通过 请求头的options.ETAG_HEADER=x-whistle-etag的字段来判断是否有缓存及通过响应 304 来继续使用缓存的数据,具体参见nohost的用法
  3. feat(#72): 支持通过启动参数 -P 80 修改whistle操作界面的端口(其中 P 为大写)

v1.5.15

  1. refactor(#70): 默认超时时间改为 1min,与浏览器的默认超时时间一致,空闲超时调整为 3min
  2. feat: 添加 reqHost 用于修改请求头的host字段,等价于hostname

v1.5.14

  1. refactor: 本地请求去掉 x-forwarded-for 请求头,防止后台通过 x-forwarded-for 获取ip时不准确

v1.5.13

  1. refactor: 获取真实的本机ip,防止通过 x-forwarded-for = 127.0.0.1 时访问某些服务会有问题。
  2. refactor: issue#68

v1.5.12

  1. feat: 通过请求头 x-forwarded-for 带上真实的客户端ip
  2. feat: 支持通过插件的根目录文件 _values.txt 设置插件私有的Values(不支持 values.txt),与私有规则 _rules.txt 配套使用
  3. feat: 自动判断根证书格式是否正确,如果不正确会自动更新,安装新版本的whistle后出现证书不可用的情况请重新安装下根证书即可

v1.5.11

  1. fix: weinre不可用的问题#65
  2. refactor: 去掉请求插件的连接池,提升请求速度

v1.5.10

  1. 自动对请求头的 x-whistle-rule-key 进行转码

v1.5.9

  1. feat: 支持导入导出Rules和Values
  2. feat: 支持通过请求头 x-whistle-rule-keyx-whistle-rule-value 设置规则,且支持通过 x-whistle-rule-host 设置hosts,其中 x-whistle-rule-key 将自动从Values里面加载规则,在设置代理 pattern proxy://host:port?proxyHosts 时,后面新增的请求参数表示代理规则优先,且会通过 x-whistle-rule-host 自动带上设置的hosts
  3. feat: 界面支持切换到左侧菜单的简单模式,详见issue#64

v1.5.8

  1. fix: reload rule或values时,可能出现的脚本错误

v1.5.7

  1. feat: 显示请求客户端的端口号和服务器的端口号
  2. feat: 支持预览图片(目前没做缓存,直接通过请求的url加载)
  3. feat: Network->Log支持搜索过滤
  4. refactor: 编辑器的字体使用默认字体,bootstrap的字体空格宽度太小
  5. fix: 微信开发者工具https请求被误认为http请求的问题

v1.5.6

  1. refactor(issue#36): 打开多个页面时操作时,把修改信息实时同步给其它页面
  2. refactor: 把列表选择信息存储到localStorage

v1.5.5

  1. fix(issue#60): 建议大家升级到最新版本

v1.5.4

  1. fix: 编辑器设置显示行数的问题

v1.5.3

  1. refactor: 更改DNS的缓存策略,默认缓存30000ms,可以通过启动参数 -c 600000 修改缓存时间,时间单位为ms

v1.5.2

  1. fix: 更新weinre,解决安装whistle提示[email protected][email protected] deprecated的提醒

v1.5.1

  1. fix(#58): w2 restart -S xxx -C 会导致文件被清空的问题
  2. fix: Settings的输入框按 Ctrl+D 清空后无法同步的本地存储的问题

v1.5.0

  1. feat: 支持Network的表头及Rules、Values列表拖拽排序
  2. feat: 去掉 Filter 菜单,改为 Settings 菜单,支持设置多种过滤条件及自定义表格字段,详见:Settings
  3. feat(#56): Network多选是在Overview里面显示统计信息

v1.4.21

  1. feat: ignore支持 pattern ignore://http|https|tunnel|ws|wss 等协议
  2. refactor: 支持同时设置 logweinre
  3. fix: nodejs/node#13539

v1.4.20

  1. feat:
    • 支持插件通过${ruleKey}内联规则
    • 命令行添加参数 -D, -baseDir 用于指定whistle的存储目录,默认为 ~/.WhistleAppData
  2. refactor: 优化导入导出saz文件的性能

v1.4.19

  1. fix: 转发到插件请求头 x-forwarded-for 的问题
  2. refactor: Values中名称形如 xxx.rules 的key作为正常的rules文件处理
  3. style: Hover到顶部 Help 按钮显示帮助文档列表

v1.4.18

  1. fix: 新增setTimeout导致无法后台运行的问题

v1.4.17

  1. fix: getPluginByPluginRule返回undefined的问题

v1.4.16

  1. refactor: 使用 delete:// 删除头部字段是忽略大小写
  2. style: 在Network下方过滤输入框输入内容高亮显示

v1.4.15

  1. perf: 优化 os.networkInterfaces 的性能
  2. fix: 支持注入的文本根据响应头进行编码

v1.4.14

  1. refactor: Values支持rules的快捷键操作
  2. refactor: 错误页面的 text/plain 改成 text/html
  3. feat: 在规则配置中如果单独一行 {xxx} 表示从Values对应的key(xxx)内联文本

v1.4.13

  1. fix: 加入用户名和密码时,log无法使用的问题

  2. feat: 添加新的路径匹配方式:

     # 对所有域名对应的路径 protocol://a.b.c/xxx[/yyy]都生效
     ~/
     ~/xxx
     tunnel://~/ # tunnel只支持根路径匹配
     http://~/
     https://~/xxx
     ws://~/xxx
     wss://~/xxx
    
     # 也可以指定路径,不包含该路径的子路径
     $~/
     $~/xxx
     $tunnel://~/ # tunnel只支持根路径匹配
     $http://~/
     $https://~/xxx
     $ws://~/xxx
     $wss://~/xxx
    

v1.4.12

  1. fix: 通过 pattern cache://seconds 设置缓存时间单位出错的问题

v1.4.11

  1. feat: 支持第三方应用在启动whistle时传人如下参数
    • disableAllRules: 不设置表示使用默认设置或用户通过界面设置,如果设置为 true 表示禁用所有规则,包括插件,如果设置为 false 表示启用所有规则,如果设置了true或false会覆盖通过页面的设置

    • disableAllPlugins: 不设置表示使用默认设置或用户通过界面设置,如果设置为 true 表示禁用所有插件,如果设置为 false 表示启用所有插件,如果设置了true或false会覆盖通过页面的设置

    • allowMultipleChoice: 不设置表示使用默认设置或用户通过界面设置,如果设置为 true 表示允许在Rules种同时启用多个规则,即允许多选,如果设置为 false 表示只能启用除Default以外的一个规则,如果设置了true或false会覆盖通过页面的设置

    • rules: 通过参数设置规则列表

      • 如果为string或数组,则表示只设置 Default 的规则

      • 如果为对象可以设置多个规则,及决定使用哪些规则(要同时启用多个规则,需要 allowMultipleChoice 设置为true)

          {
          	Default: {
          		rules: ['fffffffffffff', '000000000000'],
          		enable: false,
          		replace: false
          	},
          	test1: 'abc\n123',
          	test2: {
          		rules: 'www.test.com 127.0.0.1'.
          		enable: true
          	}
          }
        
    • values: 为对象,{ test: 'abc', testJson: {abc: 123} }

v1.4.10

  1. feat: 支持通配符的匹配方式(配置两边位置可以调换)

     # 匹配二级域名以 .com 结尾的所有url,如: test.com, abc.com,但不包含 *.xxx.com
     *.com file:///User/xxx/test
     //*.com file:///User/xxx/test
    
     # 匹配 test.com 的子域名,不包括 test.com
     # 也不包括诸如 *.xxx.test.com 的四级域名,只能包含: a.test.com,www.test.com 等test.com的三级域名
     *.test.com file:///User/xxx/test
     //*.test.com file:///User/xxx/test
    
     # 如果要配置所有子域名生效,可以使用 **
     **.com file:///User/xxx/test
     **.test.com file:///User/xxx/test
    
     # 限定协议,只对http生效
     http://*.com file:///User/xxx/test
     http://**.com file:///User/xxx/test
     http://*.test.com file:///User/xxx/test
     http://**.test.com file:///User/xxx/test
    
     # 路径
     *.com/abc/efg file:///User/xxx/test
     **.com/abc/efg file:///User/xxx/test
     *.test.com/abc/efg file:///User/xxx/test
     **.test.com/abc/efg file:///User/xxx/test
    
     http://*.com/abc/efg file:///User/xxx/test
     http://**.com/abc/efg file:///User/xxx/test
     http://*.test.com/abc/efg file:///User/xxx/test
     http://**.test.com/abc/efg file:///User/xxx/test
    
  2. fix(#47): 证书被吊销过可能出现无法打开的问题

v1.4.9

  1. fix: 解决Composer中url包含非ASCII字符时出现乱码的问题(如果请求头有非ASCII字符该字段将被忽略)
  2. refactor: 改善whistle的pac脚本解析,全面支持dnsResovler

v1.4.8

  1. refactor:
    • 优化转发到插件的请求头,支持把proxy和pac配置规则带过去
    • host://:port === host://remoteServerIP:port
  2. fix: 在Rules或Values按 Ctrl + X 清空Network的问题

v1.4.7

  1. refactor: 确保转发到插件的请求可以把一些用户配置的Rule带过去
  2. fix: 修复Mac上 Chrome>=59 出现的 ERR_SSL_SERVER_CERT_BAD_FORMAT的问题,需要启动时加 w2 restart -A 重新生成根证书,并安装,具体参见:Https关于iOS的ATS

v1.4.6

  1. fix: 屏蔽Node8自身bug导致崩溃的问题: Assertion `(trigger_id) >= (0)' failed.

v1.4.5

  1. fix: log的缓存问题

v1.4.4

  1. fix: Header name must be a valid HTTP Token

v1.4.3

  1. refactor:
  • Network -> Response -> TextView 的Editor按钮打开的url改成相对路径
  • Network表格中的 host IP 改成 serverIP,语意更明确

v1.4.2

  1. refactor: 不区分第三人称和单复数,ruleFile和rulesFile等价、export和exports等价、 exportUrl和exportsUrl等价
  2. feat:
  • 添加 https2http-proxy://,whistle把该https转成http后发送到指定代理
  • 添加 internal-proxy://,功能和 https2http-proxy:// 一样,只是如果代理对象是whistle的话,会把http又转成https,主要用于whistle的扩展使用,一般用户无需了解
  • 添加 http2https-proxy://,whistle把该http转成https后发送到指定代理

v1.4.1

  1. fix: 在Network -> Overview中content-length显示为0的问题

v1.4.0

  1. fix:
  • 更新内部的一些随机端口机制,防止监听某些特殊端口导致无法响应的问题
  • 导出saz文件出现pending的问题
  1. feat:
  • 把ui界面的所有链接都改成相对路径,方便使用ip或域名直接访问及集成到第三方应用
  • 同时配置 hostproxy(socks),host的优先级高于proxy(socks)
  1. refactor: 响应cookie的显示

v1.3.20

  1. fix: Fiddler的saz文件格式不兼容的问题
  2. refactor: cgi改用相对路径,方便集成到其它应用中

v1.3.19

  1. refactor: 导入saz文件时,支持自动解码
  2. refactor: 非文本或文本太大无法显示时给出提示

v1.3.18

  1. feat:
  • 支持拖拽请求到Composer
  • 支持json-tree
  1. refactor:
  • 修改Network/Log下面的Conosle和Server背景颜色,让两者区分开来
  • 调整ATS参数的命令行提示

v1.3.17

v1.3.16

  1. fix: 设置 proxy:// 第三方代理服务器返回的数据格式有问题会导致抛异常的问题

v1.3.15

  1. fix:
  • 新安装的插件内置规则文件 _rule.txt 无法自动生效的问题
  • 注释快捷键(Ctrl + ? 或 Command + ?)与常用编辑对齐
  1. refactor:
  • 支持切换properties到source模式,方便直接copy到Values里面使用

  • 支持如下json格式设置同名属性,whistle自动解析成数组

    Set-Cookie: a=b Set-Cookie: c=d test: 123

v1.3.14

  1. refactor:
  • 请求和响应保留原有头部字段的大小写
  • 修改Network中匹配到规则是的url字体颜色
  1. fix: rawfile头部存在 content-encoding 导致解析失败的问题

v1.3.13

  1. fix:
  • 通过rulesFile设置host或proxy无效的问题
  • Rules编辑器高亮显示的问题
  1. refactor:
  • 提升https请求的响应速度
  • 优化了证书生成,防止后续Chrome版本无法识别,如果发现手机或Chrome浏览器无法识别证书,参见:关于iOS的ATS,启动时带上参数 w2 start -A,重新生成根证书,再安装新的根证书即可

v1.3.12

  1. feat: 支持根据请求头的 content-encoding 解压请求内容
  2. refactor: 支持在rulesFile的脚本中执行 console.log,并可以在 Network->Log->Server里面显示
  3. fix: Node v7.7.0+引入的 "listener" argument must be a function 问题

v1.3.11

  1. fix: 导出Fiddler是saz文件时,响应的cookie合并在一起的问题
  2. refactor: 更新tunnel-agent

v1.3.10

  1. refactor: 防止获取不到外网ip可能导致代理无限循环的问题
  2. feat: 支持自定义插件目录列表 pluginPaths,主要用于第三方模块使用,参见:koa-whistle

v1.3.9

  1. fix: 如果获取本地获取不到外网ip会导致http://externalIP:whistlePort/访问时无限循环的问题
  2. style: 给Network菜单加title 双击删除所有sessions

v1.3.8

  1. feat: 支持设置没有schema的url,如 //ke.qq.com/test file:///User/xxx/abc 与原来的 ke.qq.com/test file:///User/xxx/abc 等价

v1.3.7

  1. fix: 某些服务器未按标准实现,导致无法识别纯小写的请求头,v1.3.7版本开始统一转成 Xxx-Yxx 的形式
  2. style: 把Rules里面的 Edit 菜单名称改成语义更明确的 Rename

v1.3.6

  1. fix: 无法修改 connection 请求头的问题
  2. fix:兼容Fiddler某些情况导出的请求url无法显示域名的问题

v1.3.5

  1. feat: 支持iOS的ATS安全标准,把RSA加密算法的密钥长度修改为2048(安装运行的Node版本不能小于 v6.0.0 ),参见:关于iOS的ATS
  2. fix: 把请求头proxy-connection转成connection

v1.3.4

  1. fix: 导入导出saz文件的一些小问题

v1.3.3

  1. fix: 去掉socksv5的空闲超时设置,感谢 @echopi 反馈

v1.3.2

  1. fix: 导出saz文件时,如果res为空报错的问题

v1.3.1

  1. fix: 导出非utf8编码的内容为saz文件时出现的的乱码问题

v1.3.0

  1. feat: 支持在规则中设置局部变量,pattern file:///User/xxx/${filename}或直接拼接Values的值 pattern file://(${key1},${key2},${keyN}),具体功能参考:Values
  2. feat: 支持通过Network下拉菜单或者快捷键(Ctrl[Command] + iCtrl[Command] + S)、拖拽文件导入导出Fiddler2、Fiddler4的saz文件
  3. feat: 支持tunnel请求设置statusCode://xxx
  4. refactor: 新增status://xxx等价于statusCode://xxx
  5. refactor: 支持ip:port映射到ip:port,即:127.0.0.1:6001 127.0.0.1:7001,访问http://127.0.0.1:6001会转发到http://127.0.0.1:7001
  6. refactor: 加入agent的连接池中空闲连接的超时机制,防止请求某些情况下无法触发free事件,导致连接无法释放

v1.2.6

  1. refactor: 方便手动输入url,把安装根证书的url修改为http://rootca.pro/

v1.2.5

  1. feat: 新增协议ignore
  2. feat: 新增协议enable

v1.2.4

  1. fix: tunnel代理中通过插件设置tunnelProxy无效的问题
  2. fix: websocket映射没有同步修改请求path的问题
  3. fix: 兼容大量不规范的头部处理方式,将输出的响应头的字段名称的首字母及-后面的字母都转成大写

v1.2.3

  1. feat: 支持自定义根证书及特定域名的证书、通配证书
  2. feat: 插件新增statsServer,可以用于统计请求及获取所有请求的参见就头信息,详见插件开发

v1.2.2

v1.2.1

  1. fix: Buffer.from兼容性问题,在node v5上不支持字符串参数
  2. refactor: 去掉head这个老协议,可以使用跟方便的reqXxx,resXxx协议

v1.2.0

  1. fix: #16
  2. feat: 支持通过Ctrl + Shift + /切换Rules编辑框的注释状态,选中的行中如果注释将解除注释,如果没有注释,则会注释掉这行
  3. feat: 新增rulesFile,可以批量设置规则或者通过脚本动态设置规则
  4. refactor: 支持通过(whistle.xxx://whistle.yyy://)同时匹配多个插件
  5. refactor: 调整pac逻辑,让替换后的请求也有作用
  6. refactor: 把socks、proxy协议作为一个独立的协议,使得给匹配的规则设置代理

v1.1.1

  1. chore: 调整协议列表的顺序
  2. docs: 修改帮助文档链接,提升访问速度: https://avwo.github.io/whistle/

v1.1.2

  1. feat: 新增精确匹配(原来也可以通过正则实现,只是对这种情形用这方式比较方便),$url operator-uri详见匹配方式
  2. feat: 支持各个rules server(pluginRulesServer, rulesServer, tunnelRules, resRulesServer)传values过来,详见插件开发
  3. style: 添加双击Network按钮情况请求列表的快捷方式
  4. style: 添加输入系统或插件没有对应的协议时加中划线及字体颜色变红
  5. chore:处理了所有eslint错误

v1.1.0

  1. fix: 修复了匹配顺序的bug,如下配置访问http://test.com:8080会匹配到下面的规则: ​ test.com operator-uri /./ operator-uri
  2. fix: 插件相关的一些绝对路径的问题,用到插件最好升级到最新版本
  3. feat:新增pac用于设置pac脚本
  4. feat: 新增delete可用于delete请求或响应的头字段,而通过reqHeadersresHeaders只能设置为空字符串
  5. style: 把删除选中或非选中的数据及清空整个列表的按钮放到Network按钮的菜单列表里面
  6. style: 在Network下拉菜单里面新增查看选中数据,可以获取当前选中数据的json格式化数据。

v1.0.4

  1. feat: plugin新增tunnelServer,支持把tunnel请求转发到tunnelServer
  2. feat: 新增协议plugin.xxx、whistle.xxx,whistle.xxx://value <=> plugin.xxx://value <=> plugin://xxx://value
  3. refactor: 优化了socksproxy的代理设置,新增socket复用及请求头的修改

v1.0.3

  1. refactor: 把ruleValue传给tunnelRulesServer
  2. refactor: 把cgi和正常请求的客户端ip透传给插件
  3. feat: 支持local.whistlejs.com与xxx.local.whistlejs.com带端口访问
  4. feat: 支持plugin://name(ruleValue)或plugin://name://ruleValue的方式传值个插件的除server和uiServer以外的server
  5. feat: 新增命令行参数 -l, --localUIHost支持修改访问配置页面的域名,默认为local.whistlejs.com

v1.0.2

  1. fix:windows的默认换行符导致命令行在Mac会Linux上不可用,请更新到最新版本即可:更新whistle

v1.0.1

  1. fix: https代理可能出现异常的问题
  2. feat: 新增plugin.tunnelRulesServer用于在插件上设置代理tcp请求的规则
  3. feat: 通过https代理过来的请求,没被拦截的请求都认为tunnel协议,如: tunnel://www.baidu.com:443,具体参加:注意事项
  4. feat: 代理请求新增x-whistle-policy用于设置whistle策略,目前只tunnel让whistle不要拦截https代理。
  5. test: 新增对https代理的一些测试用例

v1.0.0

  1. fix: Linux设置开机启动无法找到homedir的问题
  2. feat: 新增开机启动脚本,如何设置开机启动,请参考开机启动
  3. feat: plugin中新增statusServer,用于获取请求的状态: 请求开始、请求结束或请求出错,具体参见插件开发
  4. fix: 修复插件的plugin.rulesServer可能导致whistle crash的问题
  5. feat: 新增plugin,用于实时通知指定插件请求状态的变化及动态修改rules,如果匹配了插件的协议,则会忽略plugin的配置

v0.12.3

  1. feat: 加入urlReplace支持类似字符串的replace方法,替换请求url的路径内容
  2. style: 在Overview里面精确显示匹配pattern matcher,并在title里面显示配置规则的原始配置

v0.12.2

  1. test: 加入自动化持续集成travis,并修复了一下bug
  2. fix: 响应有错误信息直接显示在抓包列表上

v0.12.1

fix: 修复请求头有非法字符导致程序奔溃的问题

v0.12.0

  1. feat: 支持配置配置ip:port,如:pattern host://ip:port(port可选),这与pattern ip:port的区别是:后者会把请求头的host字段修改为ip:port(ip为IPv4或IPv6)
  2. feat: 支持同一个用户启动多个whistle服务w2 start -S newStorageDir -p newPort,具体参见安装启动
  3. docs: 修改页面中帮助文档的链接
  4. fix: 重写文档的过程中把所有功能都人肉跑了一遍,修复了一下问题,后续版本把自动化持续集成的功能加上

v0.11.4

  1. fix: 修复在Values中按Ctrl+S会弹出修改名称输入框的问题
  2. refactor: 允许同时安装多个不同的whistle根证书,安装根证书请参考:启用HTTPS

v0.11.3

  1. feat: 新增hostname用于修改req.headers.host
  2. feat: 支持通过WHISTLE_PLUGINS_PATH配置插件路径,whistle会优先从join(WHISTLE_PLUGINS_PATH, 'node_modules')加载插件
  3. fix: 修复在overview中优先显示插件私有规则的问题(PS:在Rules中配置的规则优先级最高)
  4. fix: post请求超时时间太短的问题,并把表单上传的请求的默认timeout时间加倍,减少上传失败的概率

v0.11.2

fix: statusCode < 100 || statusCode > 999 会抛出异常导致程序crash

 if (statusCode < 100 || statusCode > 999)
    throw new RangeError(`Invalid status code: ${statusCode}`);

PS:看了下提交记录,是2016年4月20号提交的代码:eee69b81faf2df406ac3c571bee31ebd501cfd9d

v0.11.1

  1. fix: 修复在https请求中使用log可能出现Mixed Content警告的问题
  2. feat: log支持同时输出多个参数console.log(location.href, a1, a2, ...)的写法
  3. fix: 清空请求数据的快捷键为Ctrl+X(mac也可以用Command+X),但原来在Clear按钮上的title提示错了
  4. feat: 加入快捷键 Ctrl+DCommand+D(Mac),用于删除请求列表中选中的条目、选中的rule、选中的value
  5. feat: 加入快捷键 Ctrl +向上箭头Ctrl +向下箭头 (Mac用Command+向上箭头Command +向下箭头) 用于调整Rules(Values)列表的顺序
  6. feat: 支持点击请求列表的表头重新对列表进行重新排序
  7. feat: 把下一个匹配到的Rule通过NEXT_RULE_HEADER(x-whistle-next-rule)的头字段传到rulesServer,这样可以判断是否执行下一个规则

v0.11.0

  1. fix: 修复在调整窗口大小是没有重绘的问题
  2. feat: 把官网网址(官网还在开发中...)改为:http://wproxy.org
  3. feat: 新增replaceStatus用于修改服务器响应的状态码,与statusCode的区别是,后者不会请求到后台服务器,而是直接根据设置的状态码响应
  4. feat: 新增location用于修改或添加响应头的location字段,一般与replaceStatusreplaceStatus://301replaceStatus://302配合使用

v0.10.3

  1. feat: 检测并提示代理服务器被切换

  2. feat: 界面上同时展示的请求数,由360调整为560

  3. perf: 极大提升UI界面的性能

  4. fix: 可能出现的如下异常

    Date: 2016-06-22 00:47:13.466 RangeError: out of range index at RangeError (native) at StringDecoder.fillLast (string_decoder.js:94:9) at StringDecoder.write (string_decoder.js:73:14) at PassThrough. (/Users/xxx/whistle/lib/util/index.js:931:33) at emitOne (events.js:96:13) at PassThrough.emit (events.js:188:7) at readableAddChunk (_stream_readable.js:172:18) at PassThrough.Readable.push (_stream_readable.js:130:10) at PassThrough.Transform.push (_stream_transform.js:128:32) at afterTransform (_stream_transform.js:77:12) at TransformState.afterTransform (_stream_transform.js:54:12)

v0.10.2

  1. refactor: 去除自动同步v0.3.0之前版本数据的逻辑(v0.3.0及以后版本的whistle数据存储目录做了一次修改)
  2. style: 替换全新的logo,感谢部门的视觉设计同事**@wjdgh1031(鬼刀)**帮忙设计了新logo

v0.10.1

  1. feat:新增Server Log,用于记录服务端的日志:Network -> Log -> Server
  2. refactor: 调整log的加载逻辑,确保在打开Network -> Log前记录的log都能看到
  3. fix: 修复log协议出现请求被gc的情况
  4. fix: log可能导致页面出现的样式问题

v0.10.0

  1. feat: 新增规则包,可以在插件加入全局及内部的规则包,详见:自定义插件
  2. feat: 新增rawfilexrawfile的功能,详见:rule
  3. fix: 修复headers里面的set-cookie可能导致页面js出错的问题
  4. refactor: 更新页面用到的react到最新版本,提升前端性能
  5. fix: 如果插件的package.json格式有问题会导致无法自动加载插件
  6. fix: 修复reqAppend、resAppend无效的问题

v0.9.5

refactor: 详细的启动提示信息兼容node v0.10.x

v0.9.4

  1. feature: 加入 disable://ajax,用于删除请求头 x-requested-with
  2. feature: 新增accept用于修改请求头的accept字段
  3. feature: 加入插件开发过程中输出详细日志,#3
  4. feature: 新增菜单栏 -> Rules -> Setting -> Disable all rules的选项,用于禁用所有规则
  5. refactor: 修改 reqTyperesType的默认行为,如果reqTyperesType没有带charset的时候,保留原有的charset
  6. refactor: 新增详细的启动提示信息

v0.9.3

refactor: 限制starting的版本为0.1.1,后面发布的starting版本和现有的不兼容

v0.9.2

bugfix:修复keepAlive可能导致请求无法响应的问题

v0.9.1

  1. 新增reqCharsetresCharset两个协议,分别用于快速修改请求、响应的编码
  2. bugfix:修复可能出现请求出错的情况,nodejs/node#4482

v0.9.0

  1. **重要bugfix:**Fix https post数据时可能出现pending的问题
  2. 新增etag协议,用于修改请求头的etag
  3. 支持通过ua://referer://reqType://resType://等,把对应的字段置空

v0.8.2

  1. 修复自定义插件不能获取values的值,即 pattern plugin://{key} 无法正确获取ruleValue的问题
  2. 限制自定义插件的名称不能与内置的协议名称冲突,如果冲突则该自定义插件将无效

v0.8.1

  1. whistle ui -> about -> 插件列表:插件列表显示按ascii码排序
  2. 缓存dispatch的script,提升速度
  3. 新增attachment用于设置下载文件的响应头 content-disposition: attachment; filename="attachment"

v0.8.0

  1. 新增插件机制,可以很方便的自定义插件,并提供了平时开发中有用的插件作为例子,具体请参考请查看:自定义whistle插件
  2. 加入请求失败自动重试机制,减少请求出错的情况

v0.7.2

bugfix: Cannot read property 'dist-tags' of null

v0.7.1

新增 dispatch 协议,主要用途:某些情况需要我们根据用户的ip、或ua、或cookie等来动态决定匹配规则,这时可以利用 dispatch 来执行自定义脚本来修改url里面的请求参数从而修改请求的url,最后达到修改请求url匹配的规则的目的。

v0.7.0

  1. 支持通过插件开启在网页的右下角显示访问的真实ip,需要安装最新版的Chrome插件:https://github.com/avwo/whistle-for-chrome
  2. 支持exportsUrl,可以把匹配到的请求url导出到指定的文件
  3. 新增功能resCors://use-credentials(等价于resCors://enable),让语义更清晰
  4. 新增更简洁的命令行命令 w2,新版的whistle同时支持whistle xxxw2 xxx,如 w2 startw2 restartw2 stopw2 --help

v0.6.6

新增 exports 功能,用于把请求导出到指定文件(如果该文件不存在,则会自动创建),每一行都是如下json对象(第一行可能为空):

{
	startTime: '请求的开始时间',
	dnsTime: 'dns结束时间',
	requestTime: '请求结束时间',
	responseTime: '开始响应的时间',
	endTime: '响应结束的时间',
	url: '请求的url',
	realUrl: '实际请求的url(一般设置了替换规则,才会有realUrl,否则不会显示该字段)',
	method: '请求使用的方法', 
	httpVersion: 'http版本号',
    clientIp: '用户ip',
    hostIp: '服务器ip',
    reqError: '是否请求阶段出错',
    reqSize: '请求内容的长度',
	reqHeaders: '请求头',
	reqTrailers: '请求的trailers',
	statusCode: '响应状态码',
	resError: '是否在响应阶段出错',
	resSize: '响应内容的长度',
	resHeaders: '响应头',
	resTrailers: '响应的trailers',
	rules: '匹配到的规则'
}

v0.6.3

  1. 新增reqWriterresWrite分别用来把请求内容和响应内容写入到本地文件
  2. 新增reqWriterRawresWriteRaw分别用来把请求完整信息和响应的完整信息写入到本地文件(包括路径、协议、方法、响应状态码、头部、内容等)
  3. bugfix: 使用reqReplace改变了请求内容长度没有同步处理headers的content-length的问题
  4. 支持通过 params 替换上传表单的字段
  5. 对形如 [a-z]:\*[a-z]:/xxx/xxx 自动识别为 file://...

即:

	www.text.com/ /User/xxx # 或 www.text.com/ D:\workspace 
	# 等价于
	www.text.com/ file:///User/xxx # 或 www.text.com/ file://D:\workspace 

0.6.4

1. 修复使用log的时候,多次注入脚本导致console的时候会重复打印多次
2. 增加repReplace、resReplace的缓存字符串大小

0.6.5

  1. bugfix:

修复前:

/(.*):8899(\/.*)/ $1$2 

结果: ​ http://xxx:8899 http://http://xxx

修复后:

/(.*):8899(\/.*)/ $1$2 --> http://xxx:8899 http://xxx

v0.6.2

  1. 加入小版本更新时给出小提示
  2. 添加 disable 的新功能:301、dnsCache、keepAlive、intercept
  3. 新增 reqReplaceresReplace 两个功能:类似js字符串的 replace 方法,分别用来替换请求和响应的文本内容

v0.6.1

  1. 新增了 disable 协议,用来禁用cache、cookie、referer、ua、timeout、csp,具体参考:功能列表

  2. 纠正了解析配置操作符使用拼接后url的问题

  3. 原来通过filter启用HTTPS,推荐改用这种方式:启用HTTPS

v0.6.0

bugfix:修改了路径匹配可能多加一个 / 的问题

形如:

http://www.test.com/index.html http://www.test.com:8888/index.html

# http://www.test.com/index.html?query --> http://www.test.com:8888/index.html/?query

v0.5.8

bugfix:修改v0.5.7版直接访问http://local.whistlejs.com/index.html脚本出错的问题

v0.5.7

新增快捷键:ctrl[command]+鼠标点击:快速打开rules设置的key(点击形如:xxx://{key}` 的规则)在values中的位置(如果values中不存在对应的key,则会自动创建),更多内容请参考:界面操作

v0.5.6

修复低版本的node在拦截https时,有可能产生的重复关闭server会抛出异常的情况

v0.5.5

新增支持配置模式:pattern operator-uri1 operator-uri2 ... operator-uriN (原来只支持operator-uri pattern1 pattern2 ... patternN)

这种情况下 patternoperator-uri1 不能同时为形如这种形式的uri:[http[s]|ws[s]://]www.example.com/*,否则会忽略后面的 operator-uri2 ... operator-uriN

v0.5.4

v0.5.3

微调parseInlineJSON的实现

v0.5.2

新增:支持 www.qq.com resHeaders://(content-type=text/plain)格式

v0.5.1

修复:本地调试时,https的根证书可能被开发目录的根证书自动覆盖问题

v0.5.0

  1. JSON对象的一种inline写法,可以直接写在协议的uri里面,形如: protocol://name1=values&name2=value2&name3&name4=&name5=value5&nameN=valueN
  2. 加入了如果有大版本的更新,会自动提醒(一般有新功能加入或修复致命bug才会有大版本的更新)

bugFix:

修改了一些子匹配的问题,及urlParams,params可能无效的问题

v0.4.1、v0.4.2

修改快捷键 ctrl + / 的小bug:没有选中,及从后往前选择会导致聚焦有点问题。

v0.4.0

  1. 菜单 RulesValuesWeinre,hover出现列表(原来需要点击才能出现列表)
  2. 新增快捷键 ctrl + / 来注释(取消注释)选中的行
  3. 新增 csshtmljs 3个协议,分别用来注入css、js、html到html页面,或css代码到css文件,js代码到js文件的底部。这个与resPrepend、resBody、resAppend的区别是:系统会自动判断响应的类型来选择注入

v0.3.12

fix如果请求包含content-length导致weinre无法注入的bug

v0.3.11

fix配置某些带端口号正则的时候可能导致系统奔溃的情况