指南)
簡介本資源為Fiddler網(wǎng)絡(luò)調(diào)試代理工具的官方完整安裝包面向Web開發(fā)人員、測試工程師及網(wǎng)絡(luò)問題排查者用于高效抓取、分析與調(diào)試HTTP/HTTPS流量解決接口異常、頁面加載慢、加密通信解析等典型問題。壓縮包共90個文件總大小3.11MB包含核心可執(zhí)行文件13個exe、協(xié)議解析與UI組件36個dll、調(diào)試符號13個pdb、預(yù)置響應(yīng)模板14個dat、證書與配置工具如TrustCert.exe、EnableLoopback.exe、Fiddler.exe.config等以及音效、圖標(biāo)、腳本示例cs/js和第三方依賴庫結(jié)構(gòu)完整開箱即用。目前已有2248人學(xué)習(xí)下載無需額外編譯或環(huán)境配置可直接部署運(yùn)行覆蓋Windows平臺主流使用場景并支持HTTPS解密、斷點(diǎn)修改、AutoResponder模擬響應(yīng)等關(guān)鍵調(diào)試能力是本地化網(wǎng)絡(luò)分析與前端聯(lián)調(diào)的實用型工具集。1. Fiddler 下載不是抓包工具那么簡單它是你調(diào)試 HTTP/HTTPS 流量的「黑匣子解碼器」你有沒有遇到過這種場景前端調(diào)接口返回 400但控制臺沒報錯、后端日志說參數(shù)為空——可明明代碼里打點(diǎn)確認(rèn)傳了或者 App 突然連不上測試環(huán)境Wireshark 抓出來全是 TLS 加密流根本看不出請求頭里少了個Authorization又或者某 SDK 在 iOS 上正常Android 卻卡在登錄回調(diào)連網(wǎng)絡(luò)層都摸不到邊……這時候Fiddler 不是“又一個抓包工具”而是你唯一能實時看到「應(yīng)用到底發(fā)了什么、服務(wù)器到底回了什么」的透明窗口。它不依賴設(shè)備 Root 或系統(tǒng)級權(quán)限Windows/macOS 雙平臺可用macOS 需 Fiddler Everywhere支持 HTTPS 解密需信任根證書、斷點(diǎn)修改請求/響應(yīng)、自動重放、會話篩選、性能時序分析甚至能模擬弱網(wǎng)。它適合剛學(xué) HTTP 的前端同學(xué)快速驗證接口行為也適合后端工程師復(fù)現(xiàn)客戶端異常請求更被大量 QA 和測試開發(fā)用作自動化流量錄制與比對的基礎(chǔ)組件。這不是教科書里的協(xié)議圖而是一份你每天打開、改兩行、立刻看到結(jié)果的「活體調(diào)試臺」。2. Fiddler 安裝與 HTTPS 解密配置從下載到看到明文響應(yīng)三步閉環(huán)2.1 下載渠道與版本選擇認(rèn)準(zhǔn)官方源避開捆綁陷阱Fiddler 經(jīng)典版Fiddler Classic目前仍由 Telerik現(xiàn)屬 Progress官方維護(hù)僅推薦從 https://www.telerik.com/fiddler/fiddler-classic下載。注意該頁面提供 Windows 版.exe 安裝包和 macOS 版Fiddler Everywhere獨(dú)立收費(fèi)產(chǎn)品但有免費(fèi)試用期。切勿通過第三方下載站獲取曾有用戶反饋非官網(wǎng)包靜默植入瀏覽器插件或修改 hosts。當(dāng)前穩(wěn)定版為 v5.0.20234.489272023 年底發(fā)布安裝包約 120MB無運(yùn)行時依賴.NET Framework 4.7.2 已內(nèi)置。安裝過程默認(rèn)勾選「Launch Fiddler on finish」建議取消——首次啟動前需先完成證書配置否則 HTTPS 流量將顯示為「Tunnel to」且無法解密。2.2 Windows 環(huán)境下 HTTPS 解密全流程證書安裝 系統(tǒng)代理聯(lián)動HTTPS 解密是 Fiddler 最關(guān)鍵能力但也是新手翻車率最高的環(huán)節(jié)。核心邏輯是Fiddler 充當(dāng)中間人MITM用自己的根證書簽發(fā)臨時域名證書瀏覽器/應(yīng)用信任該根證書后才接受其簽發(fā)的證書。操作分三步提示以下操作需管理員權(quán)限。若公司域策略禁用本地證書安裝請聯(lián)系 IT 部門申請臨時白名單否則無法啟用 HTTPS 解密。# 步驟 1啟動 Fiddler 后進(jìn)入 Tools Options HTTPS 頁簽 # 勾選 Decrypt HTTPS traffic此時會彈出證書安裝警告 # 點(diǎn)擊 Yes → 自動跳轉(zhuǎn)到 Windows 證書管理器 # 在 Trusted Root Certification Authorities 存儲中導(dǎo)入 FiddlerRoot.cer此步驟本質(zhì)是將 Fiddler 自動生成的FiddlerRoot.cer根證書導(dǎo)入系統(tǒng)信任庫。若手動導(dǎo)入失敗常見于企業(yè)鎖機(jī)環(huán)境可執(zhí)行命令行強(qiáng)制安裝# 以管理員身份運(yùn)行 PowerShell執(zhí)行 certutil -addstore Root %USERPROFILE%\Documents\Fiddler2\Certificates\FiddlerRoot.cer# 步驟 2確認(rèn)代理設(shè)置生效 # Fiddler 默認(rèn)監(jiān)聽 127.0.0.1:8888需確保系統(tǒng)代理指向此處 # Windows 設(shè)置 → 網(wǎng)絡(luò)和 Internet → 代理 → 手動設(shè)置代理 → 地址 127.0.0.1端口 8888 # 勾選 使用代理服務(wù)器并取消 不使用代理服務(wù)器的地址 中的 localhost/127.0.0.1否則本機(jī)流量不被捕獲參數(shù)說明端口8888是 Fiddler 默認(rèn)監(jiān)聽端口可在 Tools Options Connections 中修改但需同步更新系統(tǒng)代理設(shè)置。若與其他工具如 Charles沖突可改為8889但務(wù)必保證兩端一致。# 步驟 3驗證 HTTPS 解密是否成功 # 在瀏覽器訪問 https://httpbin.org/get?test1 # Fiddler 會話列表中應(yīng)顯示 # Result: 200 | Protocol: HTTPS | Host: httpbin.org | URL: /get?test1 # 右鍵該會話 → Inspectors → TextView 頁簽 → 查看 Request Headers 和 Response Body 均為明文 # 若仍顯示 Tunnel to httpbin.org:443 且無 Request/Response 內(nèi)容則證書未生效2.3 macOS 用戶必讀Fiddler Everywhere 替代方案與證書信任鏈macOS 不支持 Fiddler Classic必須使用Fiddler Everywherehttps://www.telerik.com/download/fiddler-everywhere。安裝后首次啟動會提示下載并安裝FiddlerRoot.cer。關(guān)鍵區(qū)別在于macOS 要求手動將證書拖入「鑰匙串訪問」→「系統(tǒng)」鑰匙串并雙擊證書 → 展開「信任」→ 將「SSL」設(shè)為「始終信任」。切記必須重啟 Safari 或 Chrome關(guān)閉所有窗口再重開否則瀏覽器緩存舊證書策略仍會報 NET::ERR_CERT_AUTHORITY_INVALID。Fiddler Everywhere 界面與 Classic 高度一致但規(guī)則過濾語法略有差異如 Classic 用urlcontains(api)Everywhere 用url contains api遷移時需注意。3. 核心功能實戰(zhàn)用 Fiddler 錄制、過濾、斷點(diǎn)、重放真實請求3.1 流量錄制與會話篩選從千條日志中精準(zhǔn)定位目標(biāo)請求Fiddler 啟動即開始錄制但真實項目中常混雜字體、圖片、監(jiān)控上報等無關(guān)請求。高效篩選依賴三層機(jī)制列篩選Column Filters右鍵會話列表頂部欄 → 勾選常用列Result狀態(tài)碼、ProtocolHTTP/HTTPS、Host域名、URL路徑、Body響應(yīng)體大小。例如排查 500 錯誤直接點(diǎn)擊Result列標(biāo)題排序500 會聚頂。Filters過濾器菜單欄 Rules → Customize Rules → 打開CustomRules.js在OnBeforeRequest函數(shù)中添加if (oSession.host.toLowerCase() api.example.com oSession.url.indexOf(/v2/user) -1) { oSession[ui-color] orange; // 高亮匹配請求 }保存后匹配請求行背景變橙色視覺聚焦效率提升 3 倍。QuickExec 命令行CtrlShiftX輸入bpu https://api.example.com/login→ 后續(xù)所有該 URL 請求將自動斷點(diǎn)輸入cls清空會話?responsebody顯示響應(yīng)體關(guān)鍵詞高亮。避坑為什么過濾器有時不生效現(xiàn)象設(shè)置了Host過濾為api.example.com但請求仍不顯示。原因Fiddler 默認(rèn)捕獲所有進(jìn)程流量但某些 UWP 應(yīng)用如 Windows 自帶郵件或沙盒化 App如 Electron 某些版本默認(rèn)繞過系統(tǒng)代理。解決Rules → Performance → 勾選 Ignore HTTPS CONNECTs from Win8 Metro apps若需捕獲則取消勾選或改用 Fiddler 的「WinINET」模式Tools → Options → General → Select WinINET as the system proxy。3.2 斷點(diǎn)調(diào)試攔截請求頭、修改參數(shù)、模擬錯誤響應(yīng)斷點(diǎn)是 Fiddler 最硬核能力分為兩類Before Requests請求前斷點(diǎn)攔截并修改發(fā)出的請求。例如測試 Token 過期場景# 在 QuickExec 輸入 bpu https://api.example.com/profile # 觸發(fā)請求后Fiddler 暫停進(jìn)入 Inspectors → Request Headers # 找到 Authorization 行將其值改為 Bearer invalid_token # 點(diǎn)擊 Run to Completion觀察后端是否返回 401Before Responses響應(yīng)前斷點(diǎn)修改服務(wù)器返回內(nèi)容用于前端 Mock。例如讓登錄接口返回固定 UID# QuickExec 輸入 bpafter https://api.example.com/login # 觸發(fā)登錄后暫停在 Inspectors → Response Body → TextView 中 # 將 {code:0,data:{uid:123}} 改為 {code:0,data:{uid:999}} # 點(diǎn)擊 Run to Completion前端 JS 將收到偽造 UID參數(shù)說明bpubreakpoint on URL只中斷匹配 URL 的請求bpafter中斷匹配 URL 的響應(yīng)bpbreakpoint可設(shè)條件斷點(diǎn)如bp 404中斷所有 404 響應(yīng)。3.3 自動重放與性能對比用 Composer 發(fā)送相同請求多次Composer 是 Fiddler 內(nèi)置的請求構(gòu)造器比 Postman 更輕量且能復(fù)用歷史會話上下文如 Cookie、Auth Header在會話列表中右鍵目標(biāo)請求 → Replay → Replay in ComposerComposer 窗口自動填充 Method、URL、Headers、Body修改任意字段如將page1改為page2點(diǎn)擊左上角綠色 ?? 按鈕發(fā)送多次發(fā)送后右鍵 Composer 標(biāo)簽頁 → Compare with Session... → 選擇歷史會話自動生成差異報告Header 變更、Body 字段增刪、響應(yīng)時間對比。血淚經(jīng)驗Composer 默認(rèn)不攜帶原始會話的Cookie若需保持登錄態(tài)必須手動勾選 Use original sessions cookies位于 Composer 窗口右下角。否則重放時因無 Cookie 導(dǎo)致 401誤判為接口問題。4. 常見問題排查五類高頻翻車現(xiàn)場與根因修復(fù)4.1 現(xiàn)象HTTPS 請求顯示 Tunnel to domain:443無法查看 Request/Response原因Fiddler 根證書未被系統(tǒng)或瀏覽器信任或目標(biāo)應(yīng)用如微信內(nèi)置瀏覽器、某些金融 App強(qiáng)制校驗證書鏈拒絕接受 Fiddler 簽發(fā)的臨時證書。解決Windowscertmgr.msc→ 檢查「受信任的根證書頒發(fā)機(jī)構(gòu)」中是否存在DO_NOT_TRUST_FiddlerRoot若存在則刪除后重新按 2.2 節(jié)流程安裝macOS鑰匙串中找到FiddlerRoot→ 右鍵「顯示簡介」→ 「信任」→ 「使用此證書時」選「始終信任」→ 關(guān)閉并輸入密碼確認(rèn)對于強(qiáng)校驗 App嘗試開啟 Fiddler 的「Decrypt HTTPS traffic」后再勾選 Ignore server certificate errorsTools → Options → HTTPS。4.2 現(xiàn)象Fiddler 捕獲不到某 Electron 應(yīng)用的請求原因Electron 默認(rèn)使用 Chromium 網(wǎng)絡(luò)棧但部分版本v12默認(rèn)禁用系統(tǒng)代理改用--proxy-server127.0.0.1:8888啟動參數(shù)。解決找到該應(yīng)用的快捷方式屬性 → 目標(biāo)欄末尾添加 --proxy-server127.0.0.1:8888注意空格和引號或在應(yīng)用啟動腳本中注入環(huán)境變量set ELECTRON_ENABLE_LOGGINGtrue set ELECTRON_DISABLE_SECURITY_WARNINGStrue僅開發(fā)環(huán)境。4.3 現(xiàn)象Fiddler 啟動后Chrome 瀏覽器無法上網(wǎng)原因系統(tǒng)代理設(shè)置錯誤或 Fiddler 未運(yùn)行時代理仍開啟導(dǎo)致流量發(fā)往不存在的端口。解決快速檢查任務(wù)欄右下角網(wǎng)絡(luò)圖標(biāo) → 右鍵「打開網(wǎng)絡(luò)和 Internet 設(shè)置」→ 代理 → 確認(rèn)「使用代理服務(wù)器」已關(guān)閉徹底清理PowerShell 執(zhí)行netsh winhttp reset proxy重置 WinHTTP 代理影響部分后臺服務(wù)預(yù)防Fiddler 關(guān)閉前勾選 Tools → Options → Connections → Act as system proxy on startup避免意外殘留。4.4 現(xiàn)象Fiddler Everywhere 在 macOS 上無法捕獲 Safari 流量原因macOS Monterey12.0起Safari 強(qiáng)制啟用「隱私中繼」Private Relay繞過本地代理。解決Safari → 偏好設(shè)置 → 隱私 → 取消勾選「使用 iCloud 專用中繼」系統(tǒng)設(shè)置 → 網(wǎng)絡(luò) → Wi-Fi → 詳細(xì)信息 → 代理 → 手動代理 → 地址127.0.0.1端口8866Fiddler Everywhere 默認(rèn)端口重啟 Safari。4.5 現(xiàn)象Fiddler 錄制大量localhost請求干擾調(diào)試原因Fiddler 默認(rèn)捕獲所有本地回環(huán)流量包括 VS Code Live Server、Webpack Dev Server 等。解決Rules → Customize Rules → 在OnBeforeRequest函數(shù)中添加if (oSession.host.toLowerCase() localhost || oSession.host.toLowerCase() 127.0.0.1) { oSession[ui-hide] true; // 隱藏 localhost 會話 }或全局關(guān)閉Tools → Options → Connections → 取消 Monitor local traffic。5. 進(jìn)階技巧用 Fiddler 自動化流量分析與異常檢測5.1 編寫 AutoResponder 規(guī)則零代碼 Mock 接口與故障注入AutoResponder 是 Fiddler 的「靜態(tài)響應(yīng)引擎」無需啟動后端即可返回預(yù)設(shè) JSON。典型場景前端聯(lián)調(diào)時后端接口未就緒或需測試超時、503 等異常分支。操作路徑Rules → AutoResponder → 勾選 Enable rules → Add RuleRule Patternhttps://api.example.com/user/(.*)正則匹配所有/user/開頭請求Action Type*Respond with a file*→ 選擇本地mock_user.json文件高級選項勾選 Unmatched requests passthrough未匹配請求直連真實服務(wù)器文件格式要求.json文件首行必須為 HTTP 狀態(tài)行如HTTP/1.1 200 OKContent-Type: application/jsonAccess-Control-Allow-Origin: *{code:0,data:{id:1,name:MockUser}}若需返回 503首行改為HTTP/1.1 503 Service Unavailable。故障注入技巧創(chuàng)建規(guī)則*https://api.example.com/payment*→ Action Type 選*Abort request*模擬網(wǎng)絡(luò)中斷或設(shè)*Delay: 5000ms*注入 5 秒延遲測試前端 Loading 狀態(tài)。5.2 使用 FiddlerScript 實現(xiàn)動態(tài)響應(yīng)根據(jù)請求參數(shù)返回不同數(shù)據(jù)當(dāng)靜態(tài) Mock 不夠用如需根據(jù)?id123返回對應(yīng)用戶需編輯CustomRules.js// 在 OnBeforeResponse 函數(shù)中添加 if (oSession.uriContains(/api/user)) { var idMatch oSession.url.match(/id(\d)/); if (idMatch idMatch[1]) { var userId parseInt(idMatch[1]); var mockData { 123: {id:123, name:Alice, role:admin}, 456: {id:456, name:Bob, role:user} }; if (mockData[userId]) { oSession.utilSetResponseBody(JSON.stringify({ code: 0, data: mockData[userId] })); oSession.oResponse.headers.SetStatus(200, OK); oSession.oResponse.headers.SetHeader(Content-Type, application/json); } } }參數(shù)說明oSession.uriContains()比url.contains()更安全避免誤匹配路徑參數(shù)utilSetResponseBody()直接覆蓋響應(yīng)體無需處理編碼SetStatus()確保狀態(tài)碼同步更新。5.3 性能瓶頸定位用 Timeline 視圖分析請求瀑布流Fiddler 的 Timeline 功能View → Timeline將所有會話按時間軸展開直觀暴露性能瓶頸時間軸區(qū)塊含義優(yōu)化線索DNS Lookup域名解析耗時若 100ms檢查 DNS 服務(wù)器或 hosts 配置ConnectingTCP 連接建立若 300ms網(wǎng)絡(luò)延遲高或服務(wù)端連接池滿Sending請求發(fā)送通常 10ms若突增說明請求體過大Waiting服務(wù)端處理最需關(guān)注若 2s后端邏輯或數(shù)據(jù)庫慢查詢Receiving響應(yīng)接收若 500ms響應(yīng)體過大或網(wǎng)絡(luò)丟包實操案例某 H5 頁面加載慢Timeline 顯示 12 個請求中/api/config的 Waiting 時間達(dá) 3.2s。右鍵該會話 → Performances → 查看服務(wù)端 IP 為10.0.1.5立即 ssh 登錄該機(jī)器執(zhí)行top -p $(pgrep -f config_service)發(fā)現(xiàn) CPU 占用 98%確認(rèn)為后端配置服務(wù)過載。從那以后我每次接手新項目第一件事就是用 Fiddler 錄制完整業(yè)務(wù)流導(dǎo)出.saz文件存檔。不是為了截圖匯報而是當(dāng)某天「昨天還好的接口今天 404」時我能秒開歸檔文件對比請求頭差異、檢查證書有效期、甚至把當(dāng)年的 Mock 規(guī)則一鍵復(fù)用——這比翻 Git 歷史快十倍。希望幫到你。本文還有配套的精品資源點(diǎn)擊獲取