怎么样进行服务器抓包测试(测试工具链)(1)

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)代理服务器核心步骤
  1. 安装Nodejs
  2. 安装AnyProxy
  3. 安装证书
  4. 客户端设置代理(默认代理服务器端口为8001)
  5. 启动anyproxy
Node安装

官网地址如下:

https://nodejs.org/en/download/

怎么样进行服务器抓包测试(测试工具链)(2)

Node官网下载页面

下载对应系统类型的安装文件进行安装,使用如下命令验证是否安装成功 ,如下

node -v

怎么样进行服务器抓包测试(测试工具链)(3)

node -v 执行结果

AnyProxy安装

使用 npm install -g 命令来安装,-g 代表global全局安装 , 无-g的时候代码本地安装,无法直接使用anyproxy命令

npm install -g anyproxy

安装成功,校验安装是否成功,并查看版本号

anyproxy --version

怎么样进行服务器抓包测试(测试工具链)(4)

anyproxy --version 执行结果

AnyProxy安装证书凭证

Https需要证书才能以明文的方式显示请求内容,所以需要安装根证书,首先启动AnyProxy,启动命令如下:

anyproxy -i

打开浏览器http://localhost:8002/,点击RootCA,点击下方下载,安装证书(仅适应于电脑端,其他终端另行Google)。

怎么样进行服务器抓包测试(测试工具链)(5)

http://localhost:8002/

怎么样进行服务器抓包测试(测试工具链)(6)

安装证书

安装证书后,启动anyproxy需要使用 -i 参数启动,才会抓取https的请求。

客户端设置代理

上的启动屏幕中,控制面板,单击网络和共享中心,然后单击在另请参阅,下的Internet 选项,如下

怎么样进行服务器抓包测试(测试工具链)(7)

在局域网 LAN)设置对话框中勾掉自动配置中的两个复选框。勾选代理服务器复选框,填写代理服务器的地址、端口。同时选中"对于本地地址不使用代理服务器"复选框,如下(记得不使用时,关闭代理服务器)。

怎么样进行服务器抓包测试(测试工具链)(8)

启动anyproxy

怎么样进行服务器抓包测试(测试工具链)(9)

普通的启动方式

anyproxy

拦截Https请求的启动方式

anyproxy -i

使用自定义拦截规则的启动方式

anyproxy -i --rule iTestOps.js

怎么样进行服务器抓包测试(测试工具链)(10)

iTestOps.js

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

,