向 Fiddler 告别,拥抱 Fastest 吧!

Posted 腾讯技术工程

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向 Fiddler 告别,拥抱 Fastest 吧!相关的知识,希望对你有一定的参考价值。




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


前言

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

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

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

  • 代理工具安装配置繁琐(特别是涉及https证书的时候)

  • 代理规则不具备可复制性(每个人每次都要配一遍)

  • 网络受限(4G不能访问测试环境等等)

  • 不同应用场景代理方式不一样(小程序,RN等等)

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


Fastest

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

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

向 Fiddler 告别,拥抱 Fastest 吧!
实际使用效果

多场景支持

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

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

android/ios

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

向 Fiddler 告别,拥抱 Fastest 吧!
移动端场景

小程序

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

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

向 Fiddler 告别,拥抱 Fastest 吧!
小程序场景

H5

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

Hippy

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

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

向 Fiddler 告别,拥抱 Fastest 吧!
Hippy场景


抓包

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

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

实时抓包

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

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

向 Fiddler 告别,拥抱 Fastest 吧!
实时抓包

历史抓包

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

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

向 Fiddler 告别,拥抱 Fastest 吧!
历史抓包

管理平台

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

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

向 Fiddler 告别,拥抱 Fastest 吧!
管理平台


插件体系

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

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

向 Fiddler 告别,拥抱 Fastest 吧!
插件体系


安全

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

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

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

向 Fiddler 告别,拥抱 Fastest 吧!
安全

接入层

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

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

鉴权

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

  • OA鉴权

  • 白名单鉴权

  • Token鉴权

向 Fiddler 告别,拥抱 Fastest 吧!
鉴权

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

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

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

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


如何接入

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

第一步: 创建项目

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

向 Fiddler 告别,拥抱 Fastest 吧!
创建项目

第二步:创建测试环境

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

向 Fiddler 告别,拥抱 Fastest 吧!
创建测试环境

第三步: 新增规则

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

向 Fiddler 告别,拥抱 Fastest 吧!
新增规则

第四步: 访问测试环境

向 Fiddler 告别,拥抱 Fastest 吧!
访问测试环境

试一试

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

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

接入指引

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

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


哪些产品在用

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

哪些产品在用

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


以上是关于向 Fiddler 告别,拥抱 Fastest 吧!的主要内容,如果未能解决你的问题,请参考以下文章

14.30天软件开发 告别瀑布拥抱敏捷

放弃40 万年薪从字节裸辞,告别 996 拥抱 955…

我们:待别日相见时,我们都已有所成。挥手向2021告别吧,追求梦想的路上,永远不孤独!「2021 年终总结 」

告别搜狐拥抱腾讯,搜狗会不会再次撬动搜索江湖?

服务器的 Linux:告别 AG接口BBIN对接 MG对接 OD对接拥抱开源

Ruby | 告别凛冬,让春住进你家