别了,代理工具——Fastest免代理访问测试环境方案

avatar
@腾讯科技(深圳)有限公司

说了再见,才发现再也见不到。—— 让我们向曾经伟大的Fiddler们挥手告别。

前言

国际惯例,我们从一个故事说起

忙人阿特最近在做一个新需求,作为高级工程师,写代码自然轻车熟路,很快就完成了开发。在提测之前,阿特像往常一样喊来了产品和设计,准备进行产品体验和设计走查。在体验之前,因为代理配置和证书认证等等问题,阿特花了很长时间才帮产品和设计小姐姐弄好环境体验,场面一度非常尴尬。 好不容易完成产品体验和设计走查,阿特终于将需求提测,开始测试验证过程。 阿特除了要把配代理的方式和规则跟测试复读一遍,在解决bug的过程中,还要不停地与测试沟通拿到bug复现的抓包信息。对于一些偶现的问题,甚至拿不到抓包记录,全凭猜测。 还好经验丰富的阿特加班加点总算是解决完了所有bug,终于可以发布需求了。 且慢,在上线前,阿特接到通知,老板希望可以提前体验下未发布的新功能。但正巧老板不在公司内,因此没办法通过代理的方式访问到测试环境,这可难倒了阿特。 “那咋办嘛?”

我们的日常工作中,常常要跟测试环境打交道,无论是开发、测试、体验、走查等环节,往往都需要在测试环境上开展。在过去,我们一般通过代理工具的方式访问测试环境。而正如上面的故事所描述,代理工具的方式存在着诸多问题:

  • 代理工具安装配置繁琐(特别是涉及https证书的时候)
  • 代理规则不具备可复制性(每个人每次都要配一遍)
  • 网络受限(4G不能访问测试环境等等)
  • 不同应用场景代理方式不一样(小程序,RN等等)

为了解决这些问题,我们进行了一系列的探索和实践,并提出了 Fastest 解决方案,实现了免代理访问测试环境,并基于此提供了丰富的功能。

Fastest

Fastest 是一个免代理访问测试环境的平台,可以让你不再需要代理工具就能访问测试环境。除了免代理这个特点,其还具备全面多样的代理转发能力,简洁的可视化管理平台和多种场景兼容能力,并且在多重安全防护下,整个方案具有较好的安全性和可靠性。

Fastest 的基本原理是通过测试域名来实现测试环境免代理访问,通过 Fastest 服务端部署的 Whistle 服务来完成转发和抓包等核心功能。更多关于 Fastest 的具体原理和架构,在我们的fastest代理联调平台——技术架构篇中有详细的阐述。

实际使用效果

多场景支持

随着前端的不断发展,前端的形态也不再仅仅局限于Web页面,小程序、RN等前端载体层出不穷,但无论什么场景,访问测试环境都是普遍的诉求。

正如前文所述, Fastest 的基本原理是通过测试域名来实现测试环境免代理访问,所以我们只要将访问的入口资源切换到测试域名即可,针对不同场景,Fastest 都提供了相应的方式来完成接入。

Android/iOS

对于移动端页面(Android/iOS),通过一个域名切换的SDK,可以将所有页面的入口域名切换为 Fastest 测试域名,进而通过 Fastest 访问到测试环境。

移动端场景

小程序

Fastest为微信小程序和QQ小程序都提供了支持,在微信小程序上,Fastest 开发了 Fastestmp 小程序插件,通过插件的方式实现小程序中的cgi代理地址转换。

在小程序中配置并引入 Fastestmp 插件后,即可通过 Fastest 访问到测试环境。

除此之外,Fastest 也提供了 npm 包的方式,同时支持QQ小程序和微信小程序。

小程序场景

H5

对于常规的H5页面,还可以通过一个npm包fastest-loader来实现测试域名切换。

Hippy

Hippy是腾讯的一个跨平台框架,在我们团队中,Hippy多被应用于手机QQ浏览器项目,在此类项目里,经常会遇到安卓手机绕不开证书校验,导致无法代理调试的问题。

而 Fasetest 方案可以很好的解决这个问题,轻松实现测试环境代理和调试。

Hippy场景

抓包

抓包是各类代理工具的标配能力,那么使用了 Fastest 后,我们如何进行抓包?

因为 Fastest 是通过部署在服务端的 Whistle 服务来实现代理转发的,所以 Fastest 完整继承了 Whistle 的抓包功能,并在此之上做了改进和扩展。

实时抓包

在 Whistle 实时抓包能力的基础上,我们基于用户标识和环境id过滤,可以为每个用户提供独立的实时抓包页面。在实时抓包页面上,完整展示与自己相关的所有请求,包括请求响应的详细信息及请求列表的Timeline,还有请求匹配到的规则等。

同时,在实时抓包页面上可以实现抓包信息的导出,导出格式支持saztxtsaz格式的抓包文件除了可以在抓包页面打开展示,也可以在各类代理工具直接打开,非常方便。

实时抓包

历史抓包

有时我们在测试环境发现一些问题,但已经错过了实时抓包,如果这些问题不是必现的,那么复现就会成为一个难点。

Fastest 提供了历史抓包的能力,在管理平台上输入时间范围,即可查看指定时间范围内的历史抓包信息,解决抓包回溯的痛点。

历史抓包

管理平台

接入 Fastest 的业务都会按域名划分应用,在Fastest管理平台可以对应用进行配置和管理。

当然,跟使用代理工具的方式不同,每个人访问测试环境都要进行进行很多前置的配置工作,在 Fastest 方案下,大部分 Fastest 的使用者并不需要关心应用的具体配置,管理平台上的配置可以为所有人服务。

管理平台

插件体系

Fastest 方案中,测试请求都会流入和流出 Fastest 服务,在响应返回前,通过向测试页面注入代码的方式,可以实现很多功能扩展,基于这个思路,我们搭建了一个插件机制。

以 Eruda 插件为例,在 Fastest 面板中,启用 Eruda 插件可以为测试页面启用控制台功能,方面在移动端直接查看和调试页面信息。

插件体系

安全

!Fastest方案目前已经得到了公司级安全部门的认可!

值得注意的是,在 Fastest 方案下,我们可以跨越网络环境的限制,在外网访问到测试环境,考虑到测试环境的不稳定性和安全性,我们需要对访问测试环境进行限制和保护。

在安全方面,Fastest 从两个方面进行保障。

安全

接入层

对于接入层,我们与腾讯安全部门合作,将所有测试域名统一接入Sparta(业务接入层系统),由专业的 Sparta 来完成接入层的安全校验。 Sparta(业务接入层系统)提供了门神(网站漏洞防护)和洞犀(网站漏洞扫描)等功能,保障接入层安全。

同时,我们与安全部门保持合作,制定了短中长期合作计划,定期Review整个系统的安全性,及时解决和修复可能存在的安全漏洞。

鉴权

Fastest提供了3个维度的鉴权方式,在访问测试环境之前,都需要经过身份认证,保证请求的合法性。

  • OA鉴权
  • 白名单鉴权
  • Token鉴权

鉴权

开启OA鉴权后,需要经过pin+token鉴权后才能访问指定测试环境,这确保了访问人员是公司内部员工,这种相对严格的鉴权方式在80%的场景中都适用。

白名单鉴权下,只有管理员指定的用户才能访问指定测试环境,不在白名单内的用户无法访问测试环境。

Token鉴权的方式则是管理员为测试环境设定一个Token,只有通过了这个Token认证的用户才能访问指定测试环境。

3个维度的鉴权方式,既保证了安全性,也具备足够的灵活性。

如何接入

只需4步,即可接入 Fastest,感受免代理配置的快感!(目前仅在腾讯内部开放,敬请期待~)

第一步: 创建项目

进入工作台,点击创建新项目,输入应用名称,代理域名和原始域名,点击提交即可创建成功。

创建项目

第二步:创建测试环境

点击左侧侧边栏创建测试环境按钮,输入代理环境名称和描述,点击提交即可创建成功。

创建测试环境

第三步: 新增规则

点击新增规则按钮,输入匹配规则和测试环境,选择状态以及权重,点击提交即可创建成功。

新增规则

第四步: 访问测试环境

在浏览器中输入配置中所配置的地址,点击齿轮进入选择需要的测试环境即可。

访问测试环境

试一试

!!只是想试一试看看效果?!!

没问题,我们提供了演示项目可以帮助您无需申请特殊域名,即可体验 Fastest 的效果,具体操作可以在Fastest管理平台的试一试菜单中操作。

接入指引

试用效果很棒想要正式接入到您的业务?

Fastest 详细的接入指引将帮助您一步一步完整地接入到 Fastest 中来。

哪些产品在用

目前 Fastest 已在PCG和IEG的多个产品中得到使用,对于代理测试的痛点,在不同BG和部门都是广泛存在的。

哪些产品在用

最后,欢迎向我们提意见和建议,对于如何提高测试代理效率这一痛点,也欢迎大家一起讨论。


关注【IVWEB社区】公众号获取每周最新文章,通往人生之巅!