1. 介绍

whistle(读音[ˈwɪsəl],拼音[wēisǒu])基于Node实现的跨平台web调试代理工具,类似的工具有Windows平台上的Fiddler,主要用于查看、修改HTTP、HTTPS、Websocket的请求、响应,也可以作为HTTP代理服务器使用,不同于Fiddler通过断点修改请求响应的方式,whistle采用的是类似配置系统hosts的方式,一切操作都可以通过配置实现,支持域名、路径、正则表达式、通配符、通配路径等多种匹配方式,且可以通过Node模块扩展功能

2. 安装

官方文档-安装步骤

  • 2.1 npm安装
npm install -g whistle
  • 2.2 基本命令
// 启动whistle:
w2 start 重启whsitle:
w2 restart 停止whistle:
w2 stop 调试模式启动whistle(主要用于查看whistle的异常及插件开发):
$ w2 run

3. 使用

当所有安装都已经完成之后,就可以进行使用了

  • 3.1 启动whistle
// 终端运行命令
w2 start



可以通过本地地址访问whistle的界面

  • 3.2 配置Proxy SwitchyOmega

  • 3.2.1 可以直接在对应网站,直接切换你配置的代理



  • 3.2.2 使用auto_switch 模式

    在对应域名下,Proxy SwitchyOmega会根据对应的域名,来调用你定义的代理服务器

但是这里有个问题就是,如果后端访问接口跟你配置的域名不一致,那么会走不到这个代理来

比如 前端访问为 www.example.com 后端服务器为www.example1.com 那么 你就需要再配置一个 www.example1.com 调用self_proxy 代理 如果,后端有很多接口,那就直接使用第一种最好,直接选择self_proxy代理,只是这种选择会影响到浏览器其他网页的访问

注意域名通配符配置 需要这么配置 假设你的网址为 https://adc.example.com.cn

或者使用网址通配符配置 对于这一个存在一些限制 Chromium 完整网址限制 · FelisCatus/SwitchyOmega Wiki · GitHub

如果你不知道该怎么写这个通配符可以这么做,代理软件会帮助你生成一个通配符



  • 3.3 如果你想抓取https请求则需要在电脑安装证书

注意:安装证书也就相当于你把别人的指纹录入到了你家的密码锁,因此安装三方证书一定要确认这个三方证书是可信的而不是任意一个网站上下载的证书(这个判断需要个人根据经验自行判断)

对于https,传输的数据,没有证书进行加解密,外界是无法破解传输内容的,因此计算有第三方拦截了请求,他也不知道具体的内容是什么(这里设计到安全与鉴权相关知识,此处仅仅简单举例)

但是你安装与信任了外部证书,就相当于这个新安装的证书也可以解密你传输的数据

杂谈: 对于一些公司会要求安装公司的软件,以达到了解员工日常活动的目的,就是这个原理,如果员工仅仅是连接公司网络,不安装公司软件,那么公司是无法获知员工的访问内容的,而仅仅只能知道员工访问了那些网站,具体内容是不知道的

  • 3.4 配置whistle

在 Proxy SwitchyOmega配置后 并访问对应网页假设 网页为 www.abc.com 则请求就会走到 www.example.com



这个时候 whistle的这个配置生效 就会把所有访问www.example.com 的请求 都转发到 whistle的端口(当然你也可以指定你自己的代理服务器,不一定是你的本地,也可以是你本地的其他服务或者线上的其他服务,甚至whistle的功能你也可以自己通过node写一个)

4. 抓取内容

5. 修改内容(功能重点)

对于上面的 代理 也就是如果访问 a.com 显示b.com的内容,都是可以通过修改本机的host文件来实现的(这就涉及到浏览器访问网页按下回车后,干了哪些事)

简单说浏览器的域名解析(所有的域名 最终都是要解析为ip,域名是为了方便记忆,以及访问而产生的)

  • 就是浏览器先找自己的缓存看有没有
  • 自己没有 看本地host文件有没有域名与ip对应关系
  • host也没有 访问dns服务器 (dns服务器会一层一层网上找,类似于 从县到市再到省再到国家这种)
  • 能查到则访问对应ip,查不到则浏览器会显示无法访问

5.1 修改请求返回 header 可以用来跨域(在服务器暂时无法配置解决跨域,可以本地先通过修改请求返回header来越过,当然也可以关闭浏览器的跨域限制,这里又涉及到了为什么跨域以及跨域的解决方法 之前文章:浏览器跨域与处理方案 - 简书 (jianshu.com)

此处仅举例 修改请求返回header 其余功能参考官方文档

5.1.1先在values 定义对应修改header的json文件

{
"Access-Control-Allow-Origin": "http://abc.com",
"Access-Control-Allow-Credentials":true
}

5.1.2 在Rules中 定义规则 对resHeader 的覆写修改使用 response.json 文件中的内容

https://example.com resHeaders://`{response.json}`

resHeaders · 官网文档

whistle代理使用的更多相关文章

  1. 2019年Web前端最新导航(常见前端框架、前端大牛)

    本文最初发表于博客园,并在GitHub上持续更新前端的系列文章.欢迎在GitHub上关注我,一起入门和进阶前端. 前言 本文列出了很多与前端有关的常见网站.博客.工具等,整体来看比较权威.有些东西已经 ...

  2. 移动端调试Web页面

    移动端调试Web页面 虽然可以在PC下,通过开发者工具,模拟移动端,但是这样只能模拟页面样式,对于代码的执行情况是无法模拟的,所以在此结合实际调试经验,针对安卓与IOS设备,进行总结. IOS 安卓 ...

  3. 跨平台web调试代理工具---whistle

    whistle是基于Node实现的跨平台web调试代理工具,支持windows.mac.linux等所有安装了Node的操作系统,可以部署在本地机器.虚拟机或远程服务器,并通过本地网页查看或修改HTT ...

  4. 前端代理----whistle

    场景一:如何将本地的请求代理到服务器上(如果接口没有校验登陆的情况) 最简单的方法:在项目文件中找到webpack开发环境的配置文件,配置devServer对象 devServer: { conten ...

  5. web调试代理工具Whistle

    由于最近在学习微信小程序开发,项目中用到了https代理请求,所以用到了基于Node实现的跨平台web调试代理工具Whistle,在此做一记录. 完成https代理请求总共需要5个步骤. 一.安装No ...

  6. 实用抓包工具:whistle

    无论是前端开发还是客户端,实际开发过程中,抓包都经常被用到.工欲善其事必先利其器,一款好用的抓包工具也是必须的. 说到抓包,Windows系统上不少人都用过Fiddler,Mac或Linux上用Cha ...

  7. 使用 whistle 替代本地 nginx/webpack 服务

    加入鹅厂之后,我发现团队都在用一款叫做 Whistle 的工具,起初我以为这只是一款类似 Fiddler/Charles 的普通货色.然鹅,发现下面这两种用法之后,我把自己的膝盖摘下来献给了制作这款工 ...

  8. whistle

    whistle介绍 whistle是基于Node的跨平台web调试代理工具, 主要查看, 修改HTTP, HTTPS, Websocket的请求,响应, 也可以作为HTTP代理服务器使用 (文档)[h ...

  9. 移动端调试神器 whistle

    移动端h5页面嵌入的方式多种多样,普通的chrome真机调试功能有时就不能满足要求了. whistle通过设置wifi服务器代理的方式,可以抓包调试所有移动端请求的页面. whistle的github ...

  10. whistle工具全程入门

    接触过前后端开发的同学应该都了解网络请求代理工具fiddler(mac下面常用的是Charles),可以用来拦截分析请求.包装请求.本地调试和移动端代理开发调试等.多多少少,fiddler和Charl ...

随机推荐

  1. audio currentTime 设置后,重置成0,解决方案(流文件-下载文件)

    audio currentTime 设置后,重置成0,解决方案 第一步-流文件-下载文件: 先查看你的mp3文件是 流文件,还是下载文件. 检测方式,就是放到浏览器回车.在线播放就是流文件,直接下载了 ...

  2. favorite 单词学习 主要是发音 fa - vor - it 注意 ri不连读 是自然带出来的r的尾音

    favorite 单词学习 主要注意发音 [ ˈfeɪ v(ə)r ɪt ] 主要是发音 fa - vor - it 注意 ri不连读 是自然带出来的r的尾音 favor : 来自拉丁语favere, ...

  3. iView 表单验证 如果prop字段和表单里的字段对不上,会触发校验,提示错误信息

    iView 表单验证 如果prop字段和表单里的字段对不上,会触发校验,提示错误信息 原因: 在某些情况,没有id,只有文本的时候,需要返显文本,直接用input显示文本,就会出现,触发数据校验的问题 ...

  4. C++学习笔记之基础语法

    目录 基础语法 switch和if区别 枚举定义及作用域 结构体数据耐齐--缺省对齐原则 函数重载overload与C++Name Mangling 指向函数的指针与返回指针的函数 基础语法 swit ...

  5. 制作B站直播简介

    本文只用于个人总结备份,如果对你有帮助就更好了. 准备工作 准备好简介要用的的背景图.头像图,上传到图床生成图片链接. 简介的内容可分为主播简介.直播时间.直播内容.联系方式,内容根据实际需要修改,需 ...

  6. ida使用入门指北

    静态分析 快捷键 操作 作用 空格键 在反汇编窗口中,进行列表视图与图形视图之间的切换 TAB 在反汇编窗口中,进行汇编指令与伪代码之间的切换 Esc 和 Ctrl+Enter 翻页,返回前一页面 G ...

  7. day03-模块化编程

    模块化编程 1.基本介绍 传统的非模块化开发有如下的缺点:(1)命名冲突(2)文件依赖 JavaScript代码越来越庞大,JavaScript引入模块化编程,开发者只需要实现核心的业务逻辑,其他都可 ...

  8. Android端Charles抓包

    目录介绍 01.下载安装 02.抓包代理设置 03.抓包Https操作 04.抓包原理介绍 05.抓包数据介绍 06.常见问题总结 07.Android拦截抓包 01.下载安装 下载地址(下载对应的平 ...

  9. WPF多数类概念性注册加自动扫描

    在java中springboot的配置应用了自动扫描 @ComponentScan(value = {"com.example", "com.fox"}) 而对 ...

  10. 使用Go语言开发一个短链接服务:三、项目目录结构设计

    章节  使用Go语言开发一个短链接服务:一.基本原理  使用Go语言开发一个短链接服务:二.架构设计  使用Go语言开发一个短链接服务:三.项目目录结构设计  使用Go语言开发一个短链接服务:四.生成 ...