目前发现NodeJS版的类似Fiddler的工具:whistle

非常强大!

帮助文档:https://whistle.gitbooks.io/help/content/install.html

匹配方式

匹配上的请求记录在Newwork菜单中会以加粗标识。

路径匹配

替换本地文件:

www.xxx.com/public/js/index.js file:///Users/xxx/Desktop/index.js

精准匹配

与上面的路径匹配不同,路径匹配不仅匹配对应的路径,而且还会匹配该路径下面的子路径,而精确匹配只能指定的路径,只要在路径前面加$即可变成精确匹配。

$http://www.xxx.com/login file:///Users/xxx/Desktop/dist/login.html

通配符匹配

^http://www.xxx.com/*.js file:///Users/xxx/Desktop/dist/$1.js
^http://www.xxx.com/*.css file:///Users/xxx/Desktop/dist/$1.css

使用filter精确控制请求类型,如下只有post方式的请求才会被匹配:

www.xxx.com/public/js/index.js file:///Users/xxx/Desktop/index.js includeFilter://m:post

替换响应头:

www.xxx.com/public/js/index.js resHeaders:///Users/xxx/Desktop/header.txt includeFilter://m:post

注意:includeFilter由filter细化而来,只有高版本的whistle才支持

拦截https

需要电脑端和客户端同时安装证书!才可以抓包https

开启拦截https

在菜单的https下,勾选“Intercept HTTPS CONNECTs”,

安装证书

Mac安装证书之后,需要双击“whistle”证书,在信任项下将证书设置为“始终信任”。

安装Android客户端证书

在Android上直接通过文件浏览器安装证书时提示,“无法安装该证书,因为无法读取证书文件。”。需要到设置->系统和设置下,更多设置->系统安全,在凭据存储下,通过从SD卡安装,选择下载的rootCA.crt文件。

安装的过程中需要设置锁屏密码。

iOS设置信任证书

iOS 上安装的证书还不是受信任的根证书,虽然证书显示已验证,但是我们需要到设置 -> 关于本机 -> 证书信任设置里对针对根证书启用完全信任

重新生成证书

通过 w2 restart -A (注意后面加 -A)启动生成新的更证书,再安装下根证书即可。

参考:https://avwo.github.io/whistle/webui/https.html

使用代理

使用socks5代理

# 配置规则
/./ socks://127.0.0.1:1080

使用http代理

# 配置规则
/./ proxy://127.0.0.1:8888

使用weinre

配置规则的时候配置weinre标识,如果不配置标识名称,会使用anonymous标识。

#配置标识
www.xxx.com weinre://id

请求后,在菜单Weinre下会出设置过的标识名称,可以按组区分。没有设置过的会出现在anonymous分组下。

在iOS使用whistle

配置代理

在iOS上可以通过设置->无线局域网->点击当前正在使用的wifi右边的感叹号->HTTP代理,来设置HTTP代理,但因为只能设置一个,当代理ip发生变化的时候还需要重新修改,比较麻烦。

推荐使用Shadowrocket:添加节点:类型选择HTTP,输入服务器ip和端口;选择节点,同时在全局路由中选择代理。

安装证书

为了抓取HTTPS请求,需要安装whistle的证书,可以使用Safari打开Download RootCA链接安装证书,一路点击信任此证书,直到安装完成。

更新whistle

https://avwo.github.io/whistle/update.html

npm install -g whistle
或npm update -g whistle
#如果安装过程出现异常,使用sudo

w2 restart
#更新成功后,重启whistle
#如果版本没有变化,使用sudo

localhost不能被代理的问题

参考:https://github.com/avwo/whistle/issues/266