说了再见,才发现再也见不到。—— 让咱们向曾经伟大的Fiddler们挥手告别。前端
国际惯例,咱们从一个故事提及npm
忙人阿特最近在作一个新需求,做为高级工程师,写代码天然轻车熟路,很快就完成了开发。在提测以前,阿特像往常同样喊来了产品和设计,准备进行产品体验和设计走查。在体验以前,由于代理配置和证书认证等等问题,阿特花了很长时间才帮产品和设计小姐姐弄好环境体验,场面一度很是尴尬。 好不容易完成产品体验和设计走查,阿特终于将需求提测,开始测试验证过程。 阿特除了要把配代理的方式和规则跟测试复读一遍,在解决bug的过程当中,还要不停地与测试沟通拿到bug复现的抓包信息。对于一些偶现的问题,甚至拿不到抓包记录,全凭猜想。 还好经验丰富的阿特加班加点总算是解决完了全部bug,终于能够发布需求了。 且慢,在上线前,阿特接到通知,老板但愿能够提早体验下未发布的新功能。但正巧老板不在公司内,所以没办法经过代理的方式访问到测试环境,这可难倒了阿特。 “那咋办嘛?”小程序
咱们的平常工做中,经常要跟测试环境打交道,不管是开发、测试、体验、走查等环节,每每都须要在测试环境上开展。在过去,咱们通常经过代理工具的方式访问测试环境。而正如上面的故事所描述,代理工具的方式存在着诸多问题:微信小程序
为了解决这些问题,咱们进行了一系列的探索和实践,并提出了 Fastest 解决方案,实现了免代理访问测试环境,并基于此提供了丰富的功能。浏览器
Fastest 是一个免代理访问测试环境的平台,可让你再也不须要代理工具就能访问测试环境。除了免代理这个特色,其还具有全面多样的代理转发能力,简洁的可视化管理平台和多种场景兼容能力,而且在多重安全防御下,整个方案具备较好的安全性和可靠性。安全
Fastest 的基本原理是经过测试域名来实现测试环境免代理访问,经过 Fastest 服务端部署的 Whistle 服务来完成转发和抓包等核心功能。更多关于 Fastest 的具体原理和架构,在咱们的fastest代理联调平台——技术架构篇中有详细的阐述。微信
随着前端的不断发展,前端的形态也再也不仅仅局限于Web页面,小程序、RN等前端载体层出不穷,但不管什么场景,访问测试环境都是广泛的诉求。markdown
正如前文所述, Fastest 的基本原理是经过测试域名来实现测试环境免代理访问,因此咱们只要将访问的入口资源切换到测试域名便可,针对不一样场景,Fastest 都提供了相应的方式来完成接入。网络
对于移动端页面(Android/iOS),经过一个域名切换的SDK,能够将全部页面的入口域名切换为 Fastest 测试域名,进而经过 Fastest 访问到测试环境。架构
Fastest为微信小程序和QQ小程序都提供了支持,在微信小程序上,Fastest 开发了 Fastestmp 小程序插件,经过插件的方式实现小程序中的cgi代理地址转换。
在小程序中配置并引入 Fastestmp 插件后,便可经过 Fastest 访问到测试环境。
除此以外,Fastest 也提供了 npm 包的方式,同时支持QQ小程序和微信小程序。
对于常规的H5页面,还能够经过一个npm包fastest-loader来实现测试域名切换。
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鉴权后,须要通过pin+token鉴权后才能访问指定测试环境,这确保了访问人员是公司内部员工,这种相对严格的鉴权方式在80%的场景中都适用。
白名单鉴权下,只有管理员指定的用户才能访问指定测试环境,不在白名单内的用户没法访问测试环境。
Token鉴权的方式则是管理员为测试环境设定一个Token,只有经过了这个Token认证的用户才能访问指定测试环境。
3个维度的鉴权方式,既保证了安全性,也具有足够的灵活性。
只需4步,便可接入 Fastest,感觉免代理配置的快感!(目前仅在腾讯内部开放,敬请期待~)
进入工做台,点击建立新项目,输入应用名称,代理域名和原始域名,点击提交便可建立成功。
点击左侧侧边栏建立测试环境按钮,输入代理环境名称和描述,点击提交便可建立成功。
点击新增规则按钮,输入匹配规则和测试环境,选择状态以及权重,点击提交便可建立成功。
在浏览器中输入配置中所配置的地址,点击齿轮进入选择须要的测试环境便可。
!!只是想试一试看看效果?!!
没问题,咱们提供了演示项目能够帮助您无需申请特殊域名,便可体验 Fastest 的效果,具体操做能够在Fastest管理平台的试一试菜单中操做。
试用效果很棒想要正式接入到您的业务?
Fastest 详细的接入指引将帮助您一步一步完整地接入到 Fastest 中来。
目前 Fastest 已在PCG和IEG的多个产品中获得使用,对于代理测试的痛点,在不一样BG和部门都是普遍存在的。
最后,欢迎向咱们提意见和建议,对于如何提升测试代理效率这一痛点,也欢迎你们一块儿讨论。
关注【IVWEB社区】公众号获取每周最新文章,通往人生之巅!