whistle 帮助文档

260课时
737学过
8分

3. 命令行操作

4. 手动更新

9. 匹配原则

13. 注意事项

14. 常见问题

16. 协议列表

协议列表

@ 功能

设置UI样式

设置hosts

设代理

延迟请求

修改请求URL

修改请求方法

修改请求头

延迟响应

修改请求内容

修改响应状态码

修改响应头

修改响应内容

过滤配置

启用或禁用一些配置

获取抓包数据

动态设置规则

开发调试工具

@

host

保留传统的hosts语法规则

灵活强大的whistle匹配模式

host-例子

host-过滤规则

响应规则列表

请求替换

请求替换-过滤规则

file (xfile)

file (xfile)-过滤规则

xfile

xfile-过滤规则

tpl

tpl-过滤规则

xtpl

rawfile

rawfile-过滤规则

xrawfile

自定义

style

style-过滤规则

pipe

pipe-过滤规则

44 plugin

plugin-过滤规则

weinre

weinre-过滤规则

log

log-快速上手

不同页面 log 切换

嵌入自定义脚本

log-过滤规则

proxy(http-proxy)

proxy(http-proxy)-过滤规则

https-proxy

https-proxy-过滤规则

socks

socks-过滤规则

pac

pac-过滤规则

filter (excludeFilter includeFilter)

filter (excludeFilter includeFilter)-例子

ignore

ignore-配置规则

ignore-忽略规则

enable

enable-过滤规则

disable

disable-过滤规则

delete

delete-过滤规则

urlParams

urlParams-过滤规则

pathReplace

pathReplace-过滤规则

method

method-过滤规则

statusCode

statusCode-过滤规则

replaceStatus

replaceStatus-过滤规则

referer

referer-过滤规则

auth

auth-过滤规则

ua

ua-过滤规则

cache

cache-过滤规则

redirect

redirect-过滤规则

attachment

attachment-过滤规则

forwardedFor-过滤规则

responseFor

responseFor-过滤规则

reqMerge

reqMerge-例子

reqMerge-过滤规则

resMerge

resMerge-例子

resMerge-过滤规则

reqScript (reqRules)

reqScript (reqRules)-静态规则列表

reqScript (reqRules)-通过脚本动态设置规则

reqScript (reqRules)-过滤规则

resScript (resRules)

resScript (resRules)-静态规则列表

resScript (resRules)-通过脚本动态设置规则

resScript (resRules)-过滤规则

reqDelay

reqDelay-过滤规则

resDelay

resDelay-过滤规则

reqSpeed

reqSpeed-过滤规则

resSpeed

resSpeed-过滤规则

reqType

reqType-过滤规则

resType

resType-过滤规则

reqCharset

reqCharset-过滤规则

resCharset

resCharset-过滤规则

reqCookies

reqCookies-过滤规则

resCookies

resCookies-过滤规则

reqCors

reqCors-过滤规则

resCors

resCors-过滤规则

reqHeaders

reqHeaders-过滤规则

resHeaders

resHeaders-过滤规则

reqPrepend

reqPrepend-过滤规则

resPrepend

resPrepend-过滤规则

reqBody

reqBody-过滤规则

resBody

resBody-过滤规则

reqAppend

reqAppend-过滤规则

resAppend

resAppend-过滤规则

headerReplace

headerReplace-过滤规则

reqReplace

reqReplace-过滤规则

resReplace

resReplace-过滤规则

htmlPrepend

htmlPrepend-过滤规则

cssPrepend

cssPrepend-过滤规则

jsPrepend

jsPrepend-过滤规则

htmlBody

htmlBody-过滤规则

cssBody

cssBody-过滤规则

jsBody

jsBody-过滤规则

htmlAppend

htmlAppend-过滤规则

cssAppend

cssAppend-过滤规则

jsAppend

jsAppend-过滤规则

reqWrite

reqWrite-过滤规则

resWrite

resWrite-过滤规则

reqWriteRaw

reqWriteRaw-过滤规则

resWriteRaw

resWriteRaw-过滤规则

课程评价 (0)

请对课程作出评价:
0/300

学员评价

暂无精选评价
4分钟

常见问题

有问题可以提issue

  1. 为什么http://local.whistlejs.com无法访问? 没有启动whistle或者配置代理,具体操作请参考安装启动
  2. 为什么Network上看不到请求? 没有用Chrome浏览器访问http://local.whistlejs.com,或者是请求没有代理到指定的whistle,如何配置代理请参考安装启动
  3. 手机或平板如何抓包请求? 需要配置代理,且可能要关闭防火墙或者设置运行远程访问本地指定端口,具体参考安装启动
  4. 为什么设置的规则对https请求不生效? 需要安装根证书及开启https拦截,具体参考https PS: Firefox自带根证书列表,系统根证书对Firefox不生效,需要对Firefox单独安装根证书。
  5. 如何查看错误信息? 如果是请求出错,可以在Network里面的Request或Response的Text里面看到,有些请求会把异常作为响应内容直接输出到界面;如果是内部运行出现的非致命性异常,可以在Network -> Log -> Server里面看到;如果是导致程序crash的异常,日志信息会写在命令行启动的目录的whistle.log文件。
  6. 如何在一台机器同时启多个whistle? 可以通过设置不同端口号及不同存储目录来启动不同whistle实例,具体参考命令行操作。
  7. 如何实现反向代理的功能? whistle作为反向代理只支持http访问,启动whistle时设置监听的端口为80:

w2 start -p 80

如果提示whistle还在运行中,可以执行 w2 restart -p 80 非root用户需要加sudo w2 start -p 80

这样就可以在whistle配置转发,如果没有配置whistle会自动重定向到抓包界面,如果想直接用机器的IP访问直接访问本机的服务,需要在路径里面加 _ ,这样才能穿透whistle,如果 http://10.1.1.1/_/xxx,whistle会自动转成 http://127.0.0.1/xxx,并在whistle中配如下规则:

http://10.1.1.1/xxx 10.1.1.1:5566

  1. 如何让Rules支持多选? 在Rules界面中打开Settings对话框,选中 Use multiple rules 即可。
  2. 如何动态设置Rules? whistle支持以下两种方式动态设置:
  • 通过dispatch根据请求信息修改请求url的参数改变url,达到动态修改匹配规则的能力
  • 通过插件方式的方式动态设置规则,这种方式更加直接,且功能更强大,基本上可以操作whistle的任何功能,且可以自定义协议功能
  1. 如何过滤调部分规则? whistle支持过滤指定协议的规则,也支持过滤 pattern,具体参见:ignore、filter
  2. 安装根证书时无法下载,检查下是否设置好代理。
  3. iOS安装根证书时提示无法连接后台服务器,检查下是否开启了Https拦截功能,如果已开启,请暂时关闭,根证书安装成功再开启。
  4. 如何过滤Network上的请求? 有三种方式:
- 界面过滤:Networ > Settings
- 搜索过滤:Networ > 下方搜索过滤框
- 后台过滤,参见:enable
  1. 安装iOS根证书后,还是提示证书错误? iOS SSLHandshake: Received fatal alert: unknown_ca,出现这个错误是因为 iOS 10.3 之后需要手动信任自定义根证书,设置路径:Settings > General > About > Certificate Trust Testings
[具体可以看这里](http://www.neglectedpotential.com/2017/04/trusting-custom-root-certificates-on-ios-10-3/)
![img](http://wproxy.org/whistle/img/ios10.3_ca.PNG)
  1. 更新whistle时出现失败或更新后 w2 -V 指向老的版本,可以参考:更新文档
  2. android 6.0 之后的一些app在成功安装证书后仍然无法对https连接进行手抓包,有可能是该app没有添加信任用户自定义证书的权限。请确认该app是否有如下配置:
```
<base-config cleartextTrafficPermitted="true">
<trust-anchors>
    <certificates src="system" />
    <certificates src="user" />
</trust-anchors>
</base-config>
```
这主要是因为android 6.0之后的版本默认配置发生了变化,[更多请看Android开发文档](https://developer.android.com/training/articles/security-config#base-config)。
  1. 如何修改whistle本地存储目录
- 启动命令行指定 `-D baseDir`
- 配置环境变量 `WHISTLE_PATH=baseDir`
  1. 如何加载自定义证书

新建一个目录(/xxx/ssl),把自定义证书放到此目录,证书必须后缀为.crt格式,每个证书的key和crt文件名称必须一致(如:test.keytest.crt,支持多域名证书,如果是根证书名字必须为 root.keyroot.crt),启动是时加启动参数 w2 start -z /xxx/ssl 即可