whistle

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

非常强大!

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

  1. 匹配方式

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

    1. 替换本地文件:

      www.xxx.com/public/js/index.js file:///Users/xxx/Desktop/index.js
      
    2. 使用filter精确控制请求类型,如下只有post方式的请求才会被匹配:

      www.xxx.com/public/js/index.js file:///Users/xxx/Desktop/index.js includeFilter://m:post
      
    3. 替换响应头:

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

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

  2. 拦截https

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

    1. 开启拦截https

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

    2. 安装证书

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

    3. 安装Android客户端证书

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

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

    4. iOS设置信任证书

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

    5. 重新生成证书

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

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

  3. 使用代理

    1. 使用socks5代理

      # 配置规则
      /./ socks://127.0.0.1:1080
      
    2. 使用http代理

      # 配置规则
      /./ proxy://127.0.0.1:8888
      
  4. 使用weinre

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

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

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

  5. 在iOS使用whistle

    1. 配置代理

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

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

    2. 安装证书

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

  6. 更新whistle

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

     npm install -g whistle
     或npm update -g whistle
     #如果安装过程出现异常,使用sudo
    
     w2 restart
     #更新成功后,重启whistle
     #如果版本没有变化,使用sudo