whistle 使用介绍

news2024/11/18 17:51:27

什么是 whistle

来自 whistle 官网:http://wproxy.org/whistle/ 的介绍:

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

简要总结下上面这段介绍:

  • whistle 会启动一个代理服务器,覆盖浏览器的代理走它的代理
  • 可以查看、修改http、https、ws请求、响应
  • 通过配置 hosts 方式进行使用
  • 支持多种方式匹配更改,可扩展

想要明白 whistle 在开发中的作用,需要先了解什么是代理,为什么需要代理

代理

在客户端与服务端沟通中间搭建的服务,客户端与服务端之前并不直接进行通信,而是通过代理服务器进行。在这个模式下,又区分有正向、反向代理。他们的行为是一样的,都是通过代理服务器去转发请求给目标服务器。

正向代理

在请求发送(接收)之前加入中间层(代理),将不同的域名转换成相同的,就解决了跨域的问题。客户端发送请求时,不直接到服务器,而是先到代理的中间层,利用中间代理去访问服务器,服务器发送结果给中间层,中间层再把结果返回给浏览器。
例如我们通常在 Vue 项目开发中,使用 vueCli 或是 Vite 在 config 中配置 proxy 实现跨域访问的方式就是正向代理。还有VPN、CDN都是正向代理。

反向代理

此方法常用于服务器端,由客户端向反向代理服务器发送请求,反向代理服务器向真实服务器请求。例如负载均衡就是通过 Nginx 反向代理实现。

在这里插入图片描述

whistle 的代理

在了解了代理后,我们来看看 whistle 的代理是何种形式。所有经过浏览器发出的请求,和浏览器接收到的响应,都会经过 whistle,我们可以在 whistle 的 Nextwork 中看到。

whistle 的代理配置也很简单:【pattern operatorURI】的形式。
pattern 为匹配请求url的表达式,可以为:域名,路径,正则及通配符等等。
operatorURI 为对应的代理地址

代理网络请求

例如在 rules 中添加这么一项规则:

https://www.baidu.com/ 127.0.0.1:3000

当我访问百度网站时,实际上展示的是 localhost:3000。这也是开发中最常用的一种方式。将测试环境的域名代理到本地的 localhost,这样就能够在本地请求到测试环境的接口,不需要​单独在项目里配置请求的 proxy,非常方便。

文件替换

​除了代理网络请求,whistle 还能代理静态资源文件。
例如:

https://www.baidu.com/ file:///Users/buyuanranshiyufei/Desktop/study/React/01.HelloReact/Hello.html

这里有个的场景,线上 React 项目报错了 “Uncaught Error: Minified React error”, 这时我们可以把线上的 React 替换成 development 的同版本的 React。这样,我们就能看到 React 到底报的啥错

whistle 的功能很强大,不只是支持网络请求替换和文件替换,还有很多好玩的功能,等以后触到了更多的功能,再来补充…

这里再介绍一个腾讯开源的工具 nohost,利用 whistle 代理远程规则,实现的多环境配置和调试 https://nohost.pro

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/670182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

在 Python 中对日期和时间进行排序

文章目录 在 Python 中对日期和时间进行排序Python 中的日期时间模块sorted() 方法 使用 sorted() 方法对日期进行排序使用 sorted() 方法对时间进行排序使用 sorted() 方法对日期和时间进行排序总结 Python 是全世界程序员都在使用的一种高级解释型编程语言。 它最著名的是面向…

C++指针对象和异常(10)

异常(exception) 为什么有异常 异常在C用于错误处理,C语言中一般使用返回值表示错误,C对错误处理进行了扩展,统一使用异常机制来处理程序中发生的错误。 C的异常处理包括两个部分 ----- 抛出异常和捕获异常,如果抛出的异常被捕…

BW生成HANA视图权限配置

目录 1 操作步骤1.1 SAP HANA端1、创建用户2、常规信息3、配置角色4、配置系统权限5、配置对象权限 1.2 BW端1、SM30配置数据库连接参数2、SU01创建账户(与SAP HANA数据库账户名一致)3、使用RS2HANA_VIEW查看配置Assignment TypeDB Connection NameLimit…

如何解决亚马逊、ebay砍单、封号问题?稳定测评方案分析

很多卖家和工作室朋友询问我为什么在测评过程中经常遇到砍单和封号的问题。实际上,这并不难理解,因为测评所涉及的技术问题很多,并不能仅通过解决IP或环境的单一因素来实现稳定的测评。 目前市面上存在许多技术方案,例如指纹浏览…

火山引擎Dataleap治理实践:如何降低数仓建设成本

背景 存储与计算资源是数仓建设的基础,也是数仓建设中的重要成本支出。而随着数仓建设规模逐渐扩大、时间跨度逐渐拉长,将不可避免的出现数据表、任务、字段的冗余。为了减轻资源负担,降低数仓维护成本,需要对数仓建设成本进行治…

微信小程序-上传代码失败,提示分包大小超过限制

开发者可通过开发者工具中的性能扫描工具提前发现代码中的可优化项: 1. 代码包不包含插件大小超过 1.5 M 【建议】小程序代码包单个包大小限制为2M。因此我们建议开发者在开发时,如果遇到单包体积大于1.5M的情况,可以采取分包的方式&#x…

Star History 月度开源精选|2023 年 5 月

收集完五月的 Star History 精选之后我们惊讶地发现居然有那么多好玩好用的项目,无论是低代码,或是可以帮你少写代码,即便不是专业开发者也可以上手了! Windmill Windmill 可以看做是 Airplane 的开源替代品 / Temporal 的低代码…

安科瑞产品在泛在电力物联网的应用

安科瑞虞佳豪 泛在电力物联网是以通讯技术为基础发展而来的新型物联网体系,其构建的核心是满足电网能源系统的智能判断和自适应调节能力,这将提高能源的替代和利用能力。对于电力物联网来说,通讯技术是其核心的技术内容之一,也是…

直播平台中的美颜SDK技术探究

而在直播过程中,美颜技术的应用已经成为了不可或缺的一部分。美颜技术能够让主播在镜头前变得更加漂亮自信,也能够提高直播的观看体验。在直播平台中,美颜SDK技术的探究就显得尤为重要。 一、美颜SDK技术的定义 美颜SDK技术是一种通过算法…

Java中的增强 for 循环 foreach

foreach 是 Java 中的一种语法糖,几乎每一种语言都有一些这样的语法糖来方便程序员进行开发,编译期间以特定的字节码或特定的方式来对这些语法进行处理。能够提高性能,并减少代码出错的几率。在 Java 中还有比如 泛型、自动拆箱、自动装箱、内…

【集合数据类型详解】——基础语法

目录索引 集合特点:集合用处:去重操作: 创建集合:实例:实例2: 集合运算:交集:并集:补集:差集: 集合特点: 同一集合中,只能…

ssm酒店住宿预定系统-计算机毕设 附源码 87020

ssm酒店住宿预定系统 目 录 摘要 1 绪论 1.1 研究背景 1.2开发意义 1.3ssm框架 1.4论文结构与章节安排 2 2 酒店住宿预定系统系统分析 2.1 可行性分析 2.2 系统流程分析 2.2.1 数据增加流程 2.2.2 数据修改流程 2.2.3数据删除流程 2.3 系统功能分析 2.3.1功能性分…

使用Servlet完成单表的增删改查功能以及使用模板方法设计模式解决类爆炸问题(重写service模板方法)

使用Servlet做一个单表的CRUD操作 开发前的准备 导入sql脚本创建一张部门表 drop table if exists dept; create table dept(deptno int primary key,dname varchar(255),loc varchar(255) ); insert into dept(deptno, dname, loc) values(10, XiaoShouBu, BeiJing); inser…

【读书笔记】《认知觉醒》- 周岭

不停的阅读,然后形成自己的知识体系。 2023.06.25 读 文章目录 自序 开启自我改变的原动力上篇 内观自己,摆脱焦虑第一章 大脑——一切问题的起源第一节 大脑:重新认识你自己三重大脑高低之分与权力之争成长就是克服天性的过程 自序 开启自我…

深度学习训练过程耗时越来越长解决方法

自己的情况是代码中有过多的图片显示,导致每个iteration/epoch训练时间越来越长。或其他类似的东西。 解决方法: 用plt.close()及时关闭图片 fig plt.figure(0) # 新图0 plt.savefig( ) # 保存 plt.close(0) # 关闭图0plt.close(all) #关闭所有图…

Kafka 入门到精通

消息队列的流派 什么是 MQ Message Queue(MQ),消息队列中间件。很多人都说:MQ 通过将消息的发送和接收分离来实现应用程序的异步和解偶,这个给人的直觉是——MQ 是异步的,用来解耦的,但是这个只…

每日学术速递6.12

CV - 计算机视觉 | ML - 机器学习 | RL - 强化学习 | NLP 自然语言处理 Subjects: cs.CV 1.DynIBaR: Neural Dynamic Image-Based Rendering(CVPR 2023 Award Candidate) 标题:DynIBaR:基于神经动态图像的渲染 作者:Mengyuan Yan Jessi…

【2023,学点儿新Java-15】案例分享:基于Java实现餐厅点餐系统(附完整源代码)

前情回顾: 【2023,学点儿新Java-14】携程面试题:如何看待Java是一门半编译半解释型的语言?| 咨询互联网行业 资深前辈的一些问题 | 附:为什么说ChatGPT的核心算法是…?| GPT-3.5【2023,学点儿新…

通用密钥,无需密码,在无密码元年实现Passkeys通用密钥登录(基于Django4.2/Python3.10)

毋庸讳言,密码是极其伟大的发明,但拜病毒和黑客所赐,一旦密码泄露,我们就得绞尽脑汁再想另外一个密码,但记忆力并不是一个靠谱的东西,一旦遗忘密码,也会造成严重的后果,2023年业界巨…

算法程序设计 之 模糊数字、真假银币(1/8)

内容 模糊数字、真假银币 一、目的: 理解并掌握枚举算法的基本思想和设计步骤。 二、内容 1模糊数字 问题描述:一张单据上有一个5位数的编码,因为保管不善,其百位数已经变得模糊不清。但是知道这个5位数是57和67的倍数。现…