Skip to content

Latest commit

 

History

History
1895 lines (1473 loc) · 98.6 KB

CHANGELOG.md

File metadata and controls

1895 lines (1473 loc) · 98.6 KB

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: avwo#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: avwo#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: avwo#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: avwo#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: 还原匹配顺序,修复:avwo#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: avwo#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 响应头:avwo#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: avwo#383
  2. refactor: HTTP/2 支持 delete 请求携带 body
  3. style: HTTPS > View custom certs info 支持高亮显示过期证书,且支持 copy 证书安装路径
  4. fix: 设置 reqBody://(xxxx) method://post 无法同时生效问题

v2.4.6

  1. fix: avwo#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,参见:avwo#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 极大提升列表性能,详见:avwo#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: avwo#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: avwo#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: avwo#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: avwo#316

v1.16.3

  1. fix: avwo#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 custom certs info 按钮,用于查看自定义证书状态(是否过期等)
  3. fix: WebSocket请求无法设置 reqDelay://msNum 的问题

v1.15.16

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

v1.15.15

  1. fix: avwo#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(avwo#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: avwo#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: avwo#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: avwo#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 的问题,参见:avwo#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 且规则配置为空导致启动失败的问题avwo#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请求自动降级(avwo#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 显示,详见:avwo#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: 支持非过滤(avwo#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配置某些带端口号正则的时候可能导致系统奔溃的情况