向 Fiddler 告别,拥抱 Fastest 吧!
Posted 腾讯技术工程
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了向 Fiddler 告别,拥抱 Fastest 吧!相关的知识,希望对你有一定的参考价值。
说了再见,才发现再也见不到。—— 让我们向曾经伟大的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 访问到测试环境。
小程序
在小程序中配置并引入 Fastestmp 插件后,即可通过 Fastest 访问到测试环境。
除此之外,Fastest 也提供了 npm 包的方式,同时支持QQ小程序和微信小程序。
H5
对于常规的H5页面,还可以通过一个npm包fastest-loader来实现测试域名切换。
Hippy
Hippy是腾讯的一个跨平台框架,在我们团队中,Hippy多被应用于手机QQ浏览器项目,在此类项目里,经常会遇到安卓手机绕不开证书校验,导致无法代理调试的问题。
而 Fasetest 方案可以很好的解决这个问题,轻松实现测试环境代理和调试。
抓包
抓包是各类代理工具的标配能力,那么使用了 Fastest 后,我们如何进行抓包?
因为 Fastest 是通过部署在服务端的 Whistle 服务来实现代理转发的,所以 Fastest 完整继承了 Whistle 的抓包功能,并在此之上做了改进和扩展。
实时抓包
在 Whistle 实时抓包能力的基础上,我们基于用户标识和环境id过滤,可以为每个用户提供独立的实时抓包页面。在实时抓包页面上,完整展示与自己相关的所有请求,包括请求响应的详细信息及请求列表的Timeline,还有请求匹配到的规则等。
同时,在实时抓包页面上可以实现抓包信息的导出,导出格式支持saz
和txt
,saz
格式的抓包文件除了可以在抓包页面打开展示,也可以在各类代理工具直接打开,非常方便。
历史抓包
有时我们在测试环境发现一些问题,但已经错过了实时抓包,如果这些问题不是必现的,那么复现就会成为一个难点。
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和部门都是广泛存在的。
最后,欢迎向我们提意见和建议,对于如何提高测试代理效率这一痛点,也欢迎大家一起讨论。
以上是关于向 Fiddler 告别,拥抱 Fastest 吧!的主要内容,如果未能解决你的问题,请参考以下文章
我们:待别日相见时,我们都已有所成。挥手向2021告别吧,追求梦想的路上,永远不孤独!「2021 年终总结 」