說了再見,才發現再也見不到。—— 讓咱們向曾經偉大的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社區】公衆號獲取每週最新文章,通往人生之巔!