网站首页 > 技术文章 正文
AnyProxy概述
AnyProxy是阿里巴巴基于NodeJS开发的可供插件配置的HTTP/HTTPS代理服务器。代理服务器处于客户端和服务端的中间,它可以在客户端与服务端都无感知的情况下,收集双方通信的的所有信息,它控制了完整的请求头、请求体、响应头、响应体。
完整的代理请求过程为:客户端首先与代理服务器创建连接,接着根据代理服务所使用的代理协议,请求对目标服务器创建连接或者获取目标服务器的指定资源。一些代理协议允许代理服务器改变客户端的原始请求、目标服务器的原始响应,以满足代理协议的需要。
AnyProxy具备以下几个特点:
- 支持低网速模拟
- 支持灵活配置的代理服务器
- 支持 https明文代理 ,且提供了 Web 界面便于观测请求情况
- 支持二次开发,可以用 JavaScript 来控制代理的全部流程,搭建前端个性化调试环境
官方地址:
https://github.com/alibaba/anyproxy
应用场景
我们在之前文章中介绍过基于Wiremock的Mock服务部署方式,但是仅仅部署一个Wiremock还难以满足所有实际的测试场景,使用Wiremock启动的是一个服务器,如果要mock某个服务下的其中一个接口,那么其他所有的接口都需要在Wiremock启动的服务器中处理,否则想保证原有的不需要mock的接口能够正常使用的话,那就无法做到了,举个栗子,如下。
比如,原服务器地址为https://mp.toutiao.com/,Wiremock启动的地址为本地,现在要Mock "profile_v3/graphic/publish"接口,但要保证"profile_v3/graphic/comment”, “profile_v3/index/account-info”等接口能够正常使用,如果直接使用Wiremock的话,因为本地(127.0.0.1)中是没有其余两个接口的,但又要保持其能正常使用,所以要把所有接口的mock都写起来,如果是这样,那维护成本、使用成本就难以想象了。
因此需要考虑其他方案,本文将分享如果通过AnyProxy搭建HTTP(S)代理服务器构建Mock服务,主要解决如上所述场景下的Mock构建问题。
由于篇幅过长,考虑到阅读体验,将分为两部分介绍,本文主要介绍AnyProxy部署,若感兴趣可关注,方便阅读后续文章。
搭建HTTP(S)代理服务器核心步骤
- 安装Nodejs
- 安装AnyProxy
- 安装证书
- 客户端设置代理(默认代理服务器端口为8001)
- 启动anyproxy
Node安装
官网地址如下:
https://nodejs.org/en/download/
下载对应系统类型的安装文件进行安装,使用如下命令验证是否安装成功 ,如下
node -v
AnyProxy安装
使用 npm install -g 命令来安装,-g 代表global全局安装 , 无-g的时候代码本地安装,无法直接使用anyproxy命令
npm install -g anyproxy
安装成功,校验安装是否成功,并查看版本号
anyproxy --version
AnyProxy安装证书凭证
Https需要证书才能以明文的方式显示请求内容,所以需要安装根证书,首先启动AnyProxy,启动命令如下:
anyproxy -i
打开浏览器http://localhost:8002/,点击RootCA,点击下方下载,安装证书(仅适应于电脑端,其他终端另行Google)。
安装证书后,启动anyproxy需要使用 -i 参数启动,才会抓取https的请求。
客户端设置代理
上的启动屏幕中,控制面板,单击网络和共享中心,然后单击在另请参阅,下的Internet 选项,如下
在局域网 LAN)设置对话框中勾掉自动配置中的两个复选框。勾选代理服务器复选框,填写代理服务器的地址、端口。同时选中"对于本地地址不使用代理服务器"复选框,如下(记得不使用时,关闭代理服务器)。
启动anyproxy
普通的启动方式
anyproxy
拦截Https请求的启动方式
anyproxy -i
使用自定义拦截规则的启动方式
anyproxy -i --rule iTestOps.js
若对你有所帮助,欢迎大家评论、留言。
猜你喜欢
- 2024-10-06 想要mock你的网络请求?还不快来学习Charles
- 2024-10-06 Mock工具wiremock-py mock工具类静态方法返回值
- 2024-10-06 当 Swagger 遇上 Torna,瞬间高大上了
- 2024-10-06 Mockjs POST和GET不同参数返回不同结果的实现方法
- 2024-10-06 mock介绍及moco框架搭建使用 mockoa
- 2024-10-06 对于依赖第三方的接口如何进行测试?
- 2024-10-06 本地部署easy-mock 本地部署sd的最低配置要求
- 2024-10-06 利用 apipost 生成mock数据 怎么生成api接口
- 2024-10-06 Mock工具之Moco使用教程 mock新手教程
- 2024-10-06 最全面!一文让你看懂无侵入的微服务探针原理
你 发表评论:
欢迎- 501℃几个Oracle空值处理函数 oracle处理null值的函数
- 495℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 494℃Oracle分析函数之Lag和Lead()使用
- 482℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 474℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 468℃【数据统计分析】详解Oracle分组函数之CUBE
- 454℃Oracle有哪些常见的函数? oracle中常用的函数
- 450℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 最近发表
-
- Directus 火了!无代码 SQL 数据的协作应用利器!
- PHP和NodeJS的代码执行效率比较(php和nodejs的区别)
- 工商银行获得发明专利授权:“基于数据库映射动态接口的前端页面应用开发方法及装置”
- FAISS和Chroma:两种流行的向量数据库的比较
- 什么是数据库的索引?(数据库索引的定义和作用)
- Vercel和Neon“首次”推出用于前端云的无服务器SQL数据库
- 记一次前端逻辑绕过登录到内网挖掘
- 学Access好还是MySQL好?(access与mysql的语句区别)
- 惬意!清晨慢品 HTML canvas 标签题,面试知识轻松 get
- 前端实现知识图谱-force(d3.js)(前端知识树)
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端react (48)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端富文本编辑器 (47)
- 前端路由 (55)
- 前端数组 (65)
- 前端定时器 (47)
- Oracle RAC (73)
- oracle恢复 (76)
- oracle 删除表 (48)
- oracle 用户名 (74)
- oracle 工具 (55)
- oracle 内存 (50)
- oracle 导出表 (57)
- oracle 中文 (51)
- oracle链接 (47)
- oracle的函数 (57)
- 前端调试 (52)
- 前端登录页面 (48)
本文暂时没有评论,来添加一个吧(●'◡'●)