:HTTPS證書、手機抓包與弱網(wǎng)模擬全指南)
簡介面向前端開發(fā)者、網(wǎng)絡(luò)工程師及測試人員的 Fiddler Web Debugger 中文最終紀(jì)念版版本號 V4.6.20171.7553同時集成 HTTPS 證書插件用于解決 HTTP/S 流量捕獲、協(xié)議分析、請求修改、斷點調(diào)試、接口聯(lián)調(diào)及性能瓶頸排查等常見問題。壓縮包共 92 個文件、約 5.67MB主要文件類型包括 dll 動態(tài)鏈接庫、exe 輔助工具、dat 預(yù)置響應(yīng)模板、config 配置文件以及少量 pdb 調(diào)試符號與 wav 提示音文件組件構(gòu)成較完整解壓后即可按說明部署使用。包內(nèi)除主程序 Fiddler.exe 外還包含證書生成與信任工具、常用響應(yīng)模板、JScript/C# 示例腳本及「使用前必讀.txt」可以快速啟用 HTTPS 解密免去自行配置證書的繁瑣步驟腳本示例也能幫助讀者掌握自定義規(guī)則與自動化調(diào)試方法。已有 278 人學(xué)習(xí)下載適合需要抓包調(diào)試 Web 接口、定位前后端異常或分析加密通信內(nèi)容的初中級開發(fā)者。 提起抓包工具很多老開發(fā)第一反應(yīng)就是Fiddler。這個誕生于二十多年前的HTTP調(diào)試代理至今仍在接口調(diào)試、APP通信分析、弱網(wǎng)測試這些場景里活躍著。我最近整理工具包時翻出了V4.6.20171.7553這個中文漢化版本配合HTTPS證書插件一起重新部署了一遍順手把整個配置流程和踩過的坑記錄下來。如果你是剛接觸抓包的新手或者想把手里的Fiddler換成順手的漢化版本這篇內(nèi)容可以直接照做。這個版本識別為Fiddler Web Debugger版本號V4.6.20171.7553時間上屬于Fiddler Classic的后期版本。Classic從2019年起不再更新官方功能但社區(qū)里依然活躍漢化版加證書插件的組合也常被當(dāng)作“最終紀(jì)念版”流傳。它解決了兩個常見門檻官方英文界面勸退新手、HTTPS加密流量無法直接查看。文章會從安裝、證書配置講到手機抓包、弱網(wǎng)模擬最后列出高頻問題和排查方法。1. 這個版本為什么值得收藏1.1 理解Fiddler Classic的定位和版本差異先理清Fiddler家族的關(guān)系。官方現(xiàn)在主推的Fiddler Everywhere是跨平臺收費產(chǎn)品界面更現(xiàn)代化主打團隊協(xié)作。而Fiddler Classic是老牌免費工具Windows專屬結(jié)構(gòu)簡單啟動速度快。V4.6.20171.7553對應(yīng)的就是Classic系列接近尾聲時的版本之后官方基本凍結(jié)了功能更新只做維護(hù)性修復(fù)。漢化版在此基礎(chǔ)上修改了界面語言提供更連貫的中文操作體驗“最終紀(jì)念版”這個說法由此而來。對多數(shù)測試人員、前端工程師甚至爬蟲開發(fā)者來說Classic的輕量和順手是Everywhere替代不了的。我自己同時裝了這兩個工具平時快速嗅探請求直接用Classic畢竟它一打開就干活不拖沓。1.2 漢化版與官方原版如何選擇對比維度Fiddler Classic官方版漢化版/紀(jì)念版Fiddler Everywhere界面語言英文中文多語言支持費用免費免費基礎(chǔ)版收費平臺WindowsWindowsWin/macOS/Linux維護(hù)狀態(tài)停止新功能開發(fā)社區(qū)維護(hù)有配套插件包持續(xù)更新適合場景習(xí)慣英文界面、快速調(diào)試中文用戶、入門學(xué)習(xí)跨平臺、團隊協(xié)作選型建議很直接日常個人調(diào)試、測試用例驗證用Classic完全足夠團隊協(xié)作和批量接口管理再考慮Everywhere。如果你只是想知道APP在后臺發(fā)了什么請求千萬別上來就折騰大而全的工具。漢化版的優(yōu)勢在于學(xué)習(xí)門檻低配合中文教程能快速上手而且這一版自帶的插件整合度較好HTTPS證書安裝一步到位省去不少麻煩。2. 安裝部署與HTTPS證書配置2.1 解壓與基礎(chǔ)環(huán)境準(zhǔn)備拿到“Fiddler Web Debugger (V4.6.20171.7553)中文最終紀(jì)念版https證書插件.zip”之后先把壓縮包完整解壓到本地目錄建議路徑不要帶中文和空格比如D:\Tools\FiddlerCN。直接在壓縮包里雙擊運行安裝程序容易導(dǎo)致文件關(guān)聯(lián)錯亂這是踩過的第一個坑。運行安裝包前確認(rèn)系統(tǒng)已經(jīng)安裝.NET Framework 4.0以上版本。本版本安裝程序通常會自動檢測并提示但有些精簡系統(tǒng)會缺失相關(guān)組件這時安裝過程會卡住。穩(wěn)妥的做法是提前到控制面板檢查已安裝的.NET版本。另外殺毒軟件可能誤報漢化工具類的注冊行為安裝時建議臨時關(guān)閉實時保護(hù)或?qū)⒛夸浖尤氚酌麊畏駝t證書組件會被靜默攔截。安裝結(jié)束后桌面會出現(xiàn)Fiddler快捷方式。首次啟動會彈出一個“Windows 配置系統(tǒng)代理”的提示框。這個框的意思是Fiddler即將接管系統(tǒng)的HTTP代理設(shè)置點擊確認(rèn)后所有瀏覽器的HTTP/HTTPS流量就會被Fiddler捕獲。如果想取消接管直接關(guān)閉Fiddler即可代理會隨之釋放。2.2 HTTPS證書安裝的關(guān)鍵步驟HTTPS抓包是新手最容易卡住的地方。默認(rèn)情況下Fiddler只能看到加密流量的連接信息看不到請求內(nèi)容要解密HTTPS報文就必須安裝并信任它生成的根證書。操作路徑是打開Fiddler后依次點擊菜單欄的Tools Options切到HTTPS選項卡勾選Capture HTTPS CONNECTs再勾選Decrypt HTTPS traffic。此時系統(tǒng)會彈出“是否信任Fiddler根證書”的確認(rèn)框選擇Yes即完成證書安裝。注意這一步是在安裝時生成本機專用的DO_NOT_TRUST_FiddlerRoot證書。證書條目名里的“DO_NOT_TRUST”前綴看起來有些嚇人這是Fiddler故意設(shè)置的命名規(guī)則用來提示用戶這是僅用于調(diào)試環(huán)境的本地根證書不是公共受信任的證書機構(gòu)。只要是你自己機器上生成的就可以放心點信任。隨后進(jìn)入證書管理器確認(rèn)FiddlerRoot證書被放置在“受信任的根證書頒發(fā)機構(gòu)”目錄下。打開方式WinR運行certmgr.msc展開“受信任的根證書頒發(fā)機構(gòu)”“證書”在列表里找到“DO_NOT_TRUST_FiddlerRoot”。如果不在右鍵導(dǎo)入文件類型選“所有文件”找到Fiddler安裝目錄下的FiddlerRoot.cer或CertMaker.cer按向?qū)?dǎo)入即可。完成上述步驟后重啟Fiddler再打開任意HTTPS網(wǎng)站請求列表中的主機名前面會顯示鎖形圖標(biāo)Inspectors面板能直接看到明文請求頭、Cookie和響應(yīng)內(nèi)容。這里額外說一句證書體系的設(shè)計邏輯有點像快遞柜快遞公司有萬能鑰匙根證書可以打開所有柜門解密流量但前提是把鑰匙交給你保管并使用。抓包工具的信任邏輯與此類似但務(wù)必要注意調(diào)試完及時關(guān)閉解密功能避免不必要的風(fēng)險。3. 抓包實戰(zhàn)場從入門到手機APP與弱網(wǎng)測試3.1 電腦端網(wǎng)頁抓包演示啟動Fiddler并開啟代理接管后打開Chrome或Firefox訪問一個網(wǎng)站Fiddler會立刻在會話列表里滾動出新記錄。每行代表一次HTTP請求包含序號、結(jié)果碼、協(xié)議、主機、URL、內(nèi)容類型、正文大小等信息。實際操作時有個重要習(xí)慣操作前先按CtrlX清空當(dāng)前會話列表保證接下來產(chǎn)生的請求都是從你想分析的時刻開始記錄的。否則Fiddler默認(rèn)還會抓到系統(tǒng)后臺的各種更新檢查、插件通信流量找目標(biāo)請求會費力得多。啟動代理后瀏覽器打開網(wǎng)站操作幾個頁面然后回到Fiddler看請求列表。選中某個請求右側(cè)Inspectors選項卡會顯示詳細(xì)拆解上部分Headers、Cookies、Raw等子頁簽下半部分顯示響應(yīng)內(nèi)容JSON、圖片、HTML都有對應(yīng)的格式化展示。過濾功能也是效率利器。在左下角的過濾區(qū)域選擇“Host”只顯示特定域名或點擊請求列表上方的“Filters”標(biāo)簽設(shè)置“Show only the following Hosts”。比如只看某一個API域名的流量就填*.example.com。知道請求關(guān)鍵字時也可以點擊工具欄的放大鏡圖標(biāo)輸入關(guān)鍵詞直接檢索URL或請求正文。掌握了這幾項基礎(chǔ)網(wǎng)頁端抓包的基本操作就算過關(guān)了。至于改包右擊一個請求選擇“Replay Reissue and Edit”修改請求頭或JSON參數(shù)后再發(fā)出就能模擬不同入?yún)⑦@是很多前端同學(xué)調(diào)試接口的習(xí)慣用法。3.2 手機APP抓包與代理設(shè)置手機APP的HTTPS抓包是測試同學(xué)的高頻需求原理是把手機流量導(dǎo)向PC上的Fiddler再由Fiddler完成解密。首先確保手機和電腦連在同一個局域網(wǎng)內(nèi)電腦端Fiddler保持開啟。然后查看電腦的局域網(wǎng)IP命令行輸入ipconfig找到IPv4地址通常是192.168.x.x。在手機的WiFi設(shè)置中進(jìn)入當(dāng)前網(wǎng)絡(luò)的代理配置選擇手動服務(wù)器填電腦的IP地址端口填8888Fiddler默認(rèn)監(jiān)聽端口。保存后手機上的HTTP流量就會經(jīng)過Fiddler。Android和iOS對CA證書的處理稍有不同Android 7.0及以上版本部分APP不信任用戶安裝的CA證書這個時候需要先確認(rèn)APP是否開啟了網(wǎng)絡(luò)安全配置否則就算安裝了FiddlerRoot證書也可能抓不到包子iOS則需要在設(shè)置中下載描述文件并手動信任。這兩個細(xì)節(jié)是眾多“為什么手機裝了證書還是抓不到包”問題的根源后面會在排查清單里再次提到。3.3 弱網(wǎng)測試用FiddlerScript模擬有限帶寬弱網(wǎng)測試這個場景很多團隊舍不得買硬件直接用Fiddler模擬。兩種方案可選一種是使用舊版自帶的功能點擊菜單Rules Performance Simulate Modems Speeds。勾選后Fiddler會對所有請求增加延遲和帶寬限制但該方案只能模擬單一的最慢網(wǎng)絡(luò)可控性不強。另一種是修改FiddlerScript靈活性更高。打開FiddlerScript編輯器菜單FiddlerScript或快捷鍵CtrlR找到OnBeforeRequest函數(shù)在函數(shù)體內(nèi)加入以下代碼if (m_SimulateModem) { // 延遲 300ms模擬高延遲網(wǎng)絡(luò) System.Threading.Thread.Sleep(300); }此處的m_SimulateModem變量與菜單中的“Simulate Modems Speeds”聯(lián)動。要更精細(xì)地控制上傳/下載帶寬可以在OnBeforeResponse函數(shù)中增加延遲并配合Connection響應(yīng)頭模擬限制帶寬static function OnBeforeResponse(oSession: Session) { if (m_SimulateModem) { // 再等 500ms制造下載延時 System.Threading.Thread.Sleep(500); oSession[request-trickle-delay] 300; // 上傳限速每KB延遲300ms oSession[response-trickle-delay] 150; // 下載限速每KB延遲150ms } }保存腳本后再勾選Simulate Modems Speeds就能模擬出一個約幾十KB/s的高延遲弱網(wǎng)環(huán)境。實測下來用這個腳本模擬弱網(wǎng)效果非常明顯頁面加載慢、圖片逐幀出現(xiàn)的場景都可以復(fù)現(xiàn)。這個做法被我用在移動端H5的性能驗證中相當(dāng)于白手套傀儡網(wǎng)絡(luò)比專門搭TCTraffic Control環(huán)境簡單太多。4. 常見問題排查與避坑實錄4.1 抓不到HTTPS流量的常規(guī)排查路徑1. 證書是否已安裝并信任。打開certmgr.msc搜索FiddlerRoot確認(rèn)在“受信任的根證書頒發(fā)機構(gòu)”目錄下。很多人只點亮了Decrypt HTTPS traffic卻漏了證書信任環(huán)節(jié)從而導(dǎo)致列表里能看到CONNECT隧道但沒有解密內(nèi)容。2. 系統(tǒng)代理是否被其他工具覆蓋。如果安裝了其他代理切換工具可能會重置系統(tǒng)代理導(dǎo)致Fiddler無法接管流量。最簡單的判斷方法是打開瀏覽器的代理設(shè)置查看是否指向127.0.0.1:8888。3. 瀏覽器是否啟用了“忽略代理”插件。某些瀏覽器插件會繞過系統(tǒng)代理造成抓包不生效。排除方法臨時在無痕模式下關(guān)閉插件或直接用IE類內(nèi)核瀏覽器對照測試。4.2 手機APP抓不到包的4個原因IP地址錯誤手機和電腦不在同一網(wǎng)段修復(fù)辦法是統(tǒng)一接入同一個路由器WiFi。端口未放行Windows防火墻攔截了8888端口入站連接添加防火墻入站規(guī)則允許TCP 8888即可。證書信任缺失裝完證書必須手動信任。Android的“用戶憑據(jù)”與iOS的“證書信任設(shè)置”都需單獨開啟。APP防抓包機制部分金融類APP做了SSL Pinning校驗服務(wù)器證書與內(nèi)置證書是否一致。遇到這種情況通常只能配合hook方式繞過技術(shù)門檻相對較高一般測試場景不建議強行穿透。4.3 高頻問題速查表現(xiàn)象可能原因解決辦法抓包列表里全是CONNECT隧道未啟用Decrypt HTTPS traffic在HTTPS選項中勾選解密瀏覽器提示證書無效證書未導(dǎo)入受信任根目錄重新導(dǎo)入FiddlerRoot.cer手機連接后無法上網(wǎng)代理端口被占用或IP錯誤更換Fiddler監(jiān)聽端口重新配置代理只顯示HTTP沒有HTTPS內(nèi)容證書信任失效清理舊證書后重新安裝請求中文亂碼編碼顯示設(shè)置問題在Inspectors中切換到Raw視圖并手動選擇UTF-8啟動時端口被占用其他程序占用8888端口修改Fiddler監(jiān)聽端口并同步手機代理抓包是個熟能生巧的活。這個中文紀(jì)念版配證書插件的組合裝一次可以用很多年但我特意提醒自己不要過度依賴默認(rèn)配置——每次啟動后的第一件事就是清空會話然后按需打開或關(guān)閉解密開關(guān)。學(xué)會看請求、會復(fù)現(xiàn)問題、能模擬弱網(wǎng)這一套流程走下來無論是支撐開發(fā)調(diào)試還是線上問題排查都會順手很多。本文還有配套的精品資源點擊獲取