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)代理服务器核心步骤Node安装
- 安装Nodejs
- 安装AnyProxy
- 安装证书
- 客户端设置代理(默认代理服务器端口为8001)
- 启动anyproxy
官网地址如下:
https://nodejs.org/en/download/
Node官网下载页面
下载对应系统类型的安装文件进行安装,使用如下命令验证是否安装成功 ,如下
node -v
node -v 执行结果
AnyProxy安装使用 npm install -g 命令来安装,-g 代表global全局安装 , 无-g的时候代码本地安装,无法直接使用anyproxy命令
npm install -g anyproxy
安装成功,校验安装是否成功,并查看版本号
anyproxy --version
anyproxy --version 执行结果
AnyProxy安装证书凭证Https需要证书才能以明文的方式显示请求内容,所以需要安装根证书,首先启动AnyProxy,启动命令如下:
anyproxy -i
打开浏览器http://localhost:8002/,点击RootCA,点击下方下载,安装证书(仅适应于电脑端,其他终端另行Google)。
http://localhost:8002/
安装证书
安装证书后,启动anyproxy需要使用 -i 参数启动,才会抓取https的请求。
客户端设置代理上的启动屏幕中,控制面板,单击网络和共享中心,然后单击在另请参阅,下的Internet 选项,如下
在局域网 LAN)设置对话框中勾掉自动配置中的两个复选框。勾选代理服务器复选框,填写代理服务器的地址、端口。同时选中"对于本地地址不使用代理服务器"复选框,如下(记得不使用时,关闭代理服务器)。
启动anyproxy
普通的启动方式
anyproxy
拦截Https请求的启动方式
anyproxy -i
使用自定义拦截规则的启动方式
anyproxy -i --rule iTestOps.js
iTestOps.js
若对你有所帮助,欢迎大家评论、留言。
,