网站首页 > 技术文章 正文
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
若对你有所帮助,欢迎大家评论、留言。
猜你喜欢
- 2025-06-28 代码小白的网页制作神器(如何用代码制作网页)
- 2025-06-28 java版gRPC实战之三:服务端流(java 服务端)
- 2025-06-28 Cursor 开发完N个大型项目后的硬核经验
- 2025-06-28 领导说:“做个设计评审吧”(设计开发的五个阶段的评审内容)
- 2025-06-28 使用Swager API Docs和easy-mock生成模拟数据
- 2025-06-28 强大的mock数据生成工具--apipost
- 2025-06-28 Mock.js 实用教程:快速上手模拟数据生成
- 2025-06-28 五分钟教你用NodeJS手写一个Mock数据服务器
- 2024-10-06 想要mock你的网络请求?还不快来学习Charles
- 2024-10-06 Mock工具wiremock-py mock工具类静态方法返回值
你 发表评论:
欢迎- 656℃几个Oracle空值处理函数 oracle处理null值的函数
- 646℃Oracle分析函数之Lag和Lead()使用
- 644℃0497-如何将Kerberos的CDH6.1从Oracle JDK 1.8迁移至OpenJDK 1.8
- 637℃Oracle数据库的单、多行函数 oracle执行多个sql语句
- 632℃Oracle 12c PDB迁移(一) oracle迁移到oceanbase
- 621℃【数据统计分析】详解Oracle分组函数之CUBE
- 617℃最佳实践 | 提效 47 倍,制造业生产 Oracle 迁移替换
- 597℃大学生悬浮窗搜题答案神器?分享8个软件和公众号,来对比看看吧
- 最近发表
- 标签列表
-
- 前端设计模式 (75)
- 前端性能优化 (51)
- 前端模板 (66)
- 前端跨域 (52)
- 前端缓存 (63)
- 前端aes加密 (58)
- 前端脚手架 (56)
- 前端md5加密 (54)
- 前端路由 (61)
- 前端数组 (73)
- 前端js面试题 (50)
- 前端定时器 (59)
- Oracle RAC (76)
- oracle恢复 (77)
- oracle 删除表 (52)
- oracle 用户名 (80)
- oracle 工具 (55)
- oracle 内存 (55)
- oracle 导出表 (62)
- oracle约束 (54)
- oracle 中文 (51)
- oracle链接 (54)
- oracle的函数 (58)
- oracle面试 (55)
- 前端调试 (52)
本文暂时没有评论,来添加一个吧(●'◡'●)