简介

whistle(读音 [ˈwɪsəl],拼音 [wēisǒu] )是基于 Node 实现的跨平台抓包调试代理工具,有以下基本功能:

  • 查看 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求响应数据
  • 修改 HTTP、HTTPS、HTTP2、WebSocket、TCP 请求响应数据
  • 修改请求 url、方法、头部、内容等
  • 修改响应状态码、头部、内容,并支持本地替换等
  • 修改 WebSocket 和 TCP 收发的帧数据
  • 设置 hosts(支持 IPv6)、http-proxy、https-proxy、socks
  • 作为HTTP代理或反向代理
  • 集成常用的 web 调试工具,如 weinre 和 log 等
  • 支持用 Node 编写插件扩展

安装

yarn: yarn add whistle

npm: npm i whistle -g

基本操作与配套设置

  • w2 start 启动 w2 restart 重启 w2 stop 停止服务 w2 status whistle当前状态

    http://127.0.0.1:8899/ , whistle会启动一个服务,默认8899端口

  • chrome插件switchyOmega 配置代理,域名127.0.0.1,端口8899,此时chrome打开的浏览器都会被whistle代理请求

    switchyOmega 配置代理之后,需要手动切换代理模式,switchyOmega图标为黑色代表系统代理,灰色为直连模式,浅蓝色为proxy代理,我们选择浅蓝色的图标即可。这里不打开代理whistle是不生效的哦

  • 如果是用手机,则手机跟电脑在同一网段,打开wifi手动配置代理:ip是电脑ip, 端口是8899即可

  • PC跟移动端都需要下载whistle证书,放置到受信任的证书中,这样才可以开启https的抓包

  • 对于options请求,需要打开浏览器的开发者工具,勾选disable cache,否则options请求只能抓到一次,不能抓到真实请求

本地服务配置代理

本地启动服务(自己本地搭建的express),打开react项目build后的文件,会出现网络请求跨域的问题,可以使用whistle直接配置域名代理即可,流程如下:

  • react项目build
  • 运行自己写的server,打开build后的文件,我是运行在9999端口,localhost:9999 此时就接口出现跨域
  • 打开whistle 配置一条Rules: example.com localhost:9999example.com 是跨域接口的地址
  • 浏览器打开example.com 代理访问 localhost:9999,此时没有跨域问题了

配置规则

  • 本地文件或文件路径替换,协议头可以加也可以不加,不加表示匹配所有协议,否则只对某个协议生效。类似willow的路径替换。
  ctc.i.gtimg.cn/qzone/biz/gdt/atlas/mod/message.html  C:\Users\ouvenzhang\Desktop\edit.html # 单个文件的本地替换ctc.i.gtimg.cn/qzone/biz/   C:\Users\ouvenzhang\Desktop\biz\build\  # 文件路径的替换,一般用这条就可以了http://ctc.i.gtimg.cn/qzone/biz/ C:\Users\ouvenzhang\Desktop\biz\build\   #只针对http请求的文件路径替换
  • 请求转发,将指定域名请求转发到另一个域名
  www.qq.com ke.qq.com # 指定域名转发生效**.qq.com ke.qq.com  # 所有qq.com子域名转发生效
  • 脚本注入,可以将一段脚本(可以使html、js、CSS片段)注入到dom页面中进行调试
  ke.qq.com html://E:\xx\test\test.htmlke.qq.com js://C:\Users\ouvenzhang\Desktop\gdt\console.jske.qq.com css://E:\xx\test\test.css
  • 匹配模式,可以根据正则式匹配路径
  #/keyword/i #关键字匹配/ke\.qq\.com\/atlas\/(\d+)\/order\/edit/i C:\Users\ouvenzhang\Desktop\gdt\edit.html  # 正则匹配ke.qq.com/atlas/25610/order/edit C:\Users\ouvenzhang\Desktop\gdt\edit.html    # 直接匹配
  • 忽略特性的请求内容
  /qq.com/ filter://rule|hide    # 忽略包含qq域名下的请求并不在network中显示/spa\-monitor\.min\.js/i filter://rule  # 忽略匹配包含spa-monitor.min.js,但在network中显示,相当于文件白名单
  • 相同协议规则的默认优先级从上到下,即前面的规则优先级匹配高于后面,如:
  www.test.com 127.0.0.1:9999www.test.com/xxx 127.0.0.1:8080

请求 https://www.test.com/xxx/index.html 按从上到下的匹配顺序,只会匹配 www.test.com 127.0.0.1:9999,这个与传统的hosts配置后面优先的顺序相反。

如果想跟系统hosts匹配顺序一致,可以在界面通过 Rules -> Settings -> Back rules first 修改,但这个规则只对在页面里面配置的规则生效,对插件里面自带的规则及通过@方式内联的远程规则不生效。

  • 除rule及proxy对应规则除外,可以同时匹配不同协议的规则
  www.test.com 127.0.0.1:9999www.test.com/xxx 127.0.0.1:8080www.test.com proxy://127.0.0.1:8888www.test.com/xxx socks://127.0.0.1:1080www.test.com pac://http://www.pac-server.com/test.pacwww.test.com/xxx http://www.abc.comwww.test.com file:///User/xxx/test

请求 https://www.test.com/xxx/index.html 按从上到下的匹配顺序,及第二点原则,会匹配以下规则:

www.test.com 127.0.0.1:9999
www.test.com proxy://127.0.0.1:8888
www.test.com pac://http://www.pac-server.com/test.pac
www.test.com/xxx http://www.abc.com

proxy、http-proxy、https-proxy、socks都属于proxy,html、file等都属于rule,所以这两个对应的协议只能各种匹配其中优先级最高的一个。

  • 一些属于不同协议,但功能有冲突的规则,如 rule、host、proxy,按常用优先级为 rule > host > proxy

过滤条件设置

  • 可用多个条件用空格或换行分割,支持正则,支持以下条件,/^(m|i|h|b|c|d|H):

  • m:pattern:pattern为字符串或正则表达式,匹配请求方法包含该字符串(不区分大小写)或匹配该正则的请求

  • i:ip:ip表示客户端ip或正则表达式,匹配客户端ip包含该字符串(不区分大小写)或匹配该正则的请求

  • h:header:header表示请求头rawData的某部分字符或正则表达式,匹配请求头包含该字符串(不区分大小写)或匹配该正则的请求,

过滤type字段使用h,例如:h:css 过滤css请求

  • H:host:host表示Network里面的host字段,为请求的域名加端口,匹配请求host字段包含该字符串(不区分大小写)或匹配该正则的请求

  • 其它:正则或普通字符串,匹配请求URL包含该字符串(不区分大小写)或匹配该正则的请求

host \ url 字段可以直接使用filter 过滤关键词

可以通过右键 Filter -> This URL 或 This Host 快速过滤当前URL或host的请求

更多

whistle中文文档

抓包与代理神器 —— whistle相关推荐

  1. fiddler手机抓包配置代理后没有网络(手机不能上网)

    第一次使用fiddler抓包,手机配置我自己的电脑代理后发现没有网络连接,配置别人的代理就有网络连接.经过百度,尝试了各种方法之后成功解决,以下记录整个操作过程: 1.确认手机代理没有配置错误: 电脑 ...

  2. 亲测可用fiddler手机抓包配置代理后没有网络

    第一次使用fiddler抓包,手机配置我自己的电脑代理后发现没有网络连接,配置别人的代理就有网络连接.经过百度,尝试了各种方法之后成功解决,以下记录整个操作过程: 1.确认手机代理没有配置错误: 电脑 ...

  3. Charles —— iOS抓包设置代理的坑

    设置代理的坑 一.手机无法连接网络 二.https请求Domain=NSURLErrorDomain Code=-1202 "此服务器的证书无效. 我们在开发过程中 设置了代理,可能会遇到一 ...

  4. Fiddler抓包手机代理配置

    参考链接:https://i.wanz.im/2013/04/30/debugging_http_request_with_fiddler/ http://www.hangge.com/blog/ca ...

  5. 模拟器APP抓包-全局代理

    实验环境 OS:win10 安卓模拟器 代理软件:Burp Suit 配置过程 打开模拟器WIFI设置,修改已连接的网络配置 服务器主机名设置为内网IP,端口即BP中配置的代理端口 在模拟器中登录代理 ...

  6. Fiddler抓包-app代理配置

    [Fiddler配置] 1.配置fiddler允许监听到https(fiddler默认只抓取http格式的) 打开Fiddler,点击菜单Tools->Options->HTTPS,勾选C ...

  7. charles抓包工具代理抓手机包

    一.ios手机--通过charles抓取https请求攻略 1.charles安装证书      1.1.新版charles证书安装路径              Help --> SSL Pr ...

  8. 2、Fiddler APP抓包手机代理设置

    以下使用的oppo手机设置代理测试: oppo手机设置手机设置操作: 参考地址:点击这里 (一)手机电脑环境配置: 让手机和PC在同一个局域网下面: 1.如果PC是笔记本,让iOS或Android手机 ...

  9. 在线抓包工具Whistle

    因为版权问题公司近期大规模开始核验每位工作人员使用到的工具是否存在有侵权行为,其中Fiddler被列入了检查对象,公司发布文档暂时将该工具停用,因平常工作中需要抓取移动端的包,进行分析问题 所以在线检 ...

最新文章

  1. python newbie——PE No.5
  2. UA OPTI570 量子力学 原子结构基础 公式与结论总结
  3. mysql 慢查询 不重启_开启mysql慢查询日志,不重启数据库的方法
  4. viewmodel+livedata+binding 实现listview+adapter
  5. wpf 修改label值_c# – 在WPF中绑定Setter属性的值
  6. python 安装包查询_Linux系统下查找安装包所在目录
  7. 射频百科 | 高速射频连接器
  8. 这一代系统,真的不行!(一)
  9. Jquery Jqprint—借助Jquery Jqprint实现网页打印功能
  10. [转][darkbaby]任天堂传——失落的泰坦王朝(中)
  11. 股票期权与定价以及用python实现
  12. 我国2016研发的超级计算机,我国超级计算机研制取得重大突破
  13. 太赞了!华为工程师总结的Linux+K8S笔记,提供下载
  14. 如何寻找峰值及其位置(matlab)
  15. 道客巴巴 文档下载方法
  16. [转]深度分析中国移动、中国联通、中国电信的3G胜算
  17. 【python基础系列】实现图片分割
  18. github网速慢解决方法
  19. ERP服务器端安装及配置
  20. 杂项-关于绿联扩展坞的网口被识别为光驱

热门文章

  1. 电视剧名校分集剧情介绍二
  2. 仿微信建群添加人员效果
  3. [盘点]苹果发全系电脑新品 Retina版iPad mini面世
  4. 最新酒桌小游戏喝酒小程序源码_带流量主源码下载
  5. 新人该如何学习做产品经理
  6. 面试官,怎样实现 Router 框架?
  7. UE4.24版本使用AndroidStudio配置打包环境
  8. 为什么可见光是“可见”光?
  9. linux开发板tftp 搭建,iTOP-i.MX6ULL开发板-Tftp烧写和Nfs启动
  10. gprs模块c语言程序,“玩板”+ 共享单车控制板-GPRS模块SIM800C