测试工具链—— AnyProxy搭建HTTP(S)代理服务器构建Mock服务(一)

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都写起来,如果是这样,那维护成本、使用成本就难以想象了。

    搭建HTTP(S)代理服务器核心步骤

    1. 安装Nodejs
    2. 安装AnyProxy
    3. 安装证书
    4. 客户端设置代理(默认代理服务器端口为8001)
    5. 启动anyproxy

    Node安装

    官 地址如下:

    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

    若对你有所帮助,欢迎大家评论、留言。

    声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

    上一篇 2019年2月2日
    下一篇 2019年2月2日

    相关推荐