《Fiddler系列一:Fiddler網絡爬蟲工具介紹》
前言
本文來源屬於網絡資源整理,是將多位大神講解的優秀知識點以及自己的實踐操作加理解再次重新整合在一塊兒,希望對大家有所幫助。如有冒犯敬請諒解,請第一時間聯系,郵箱:1294801384@qq.com 我們將積極配合處理!
如果有問題,可以加QQ群:1091481018互相學習,借鑒鏈接如下,除此借鑒文章之外,他們還有很多的優秀文章大家也可以簡介閱讀噢,希望對大家喜歡:
【作者:Elli_ON】https://msd.misuland.com/pd/3255818272473350882
【作者:abcnull】https://blog.csdn.net/abcnull/article/details/89001642
目錄
一、序言
二、Fiddler簡介
三、Fiddler界面介紹
(一)功能介紹:主菜單
(二)功能介紹:快捷菜單
(三)會話列表
(四)會話列表:右鍵功能
(五)選項卡
(六)請求查看器
(七)響應查看器
四、Fiddler實戰-抓取手機端數據
五、總結
一、序言
在編寫網絡爬蟲時,第一步(也是極為關鍵一步)就是對網絡的請求(request)和回復(response)進行分析,尋找其中的規律,然后才能通過網絡爬蟲進行模擬。瀏覽器大多也自帶有調試工具可以進行抓包分析,但是瀏覽器自帶的工具比較輕量,復雜的抓包並不支持。並且有時候需要編寫手機APP爬蟲,這時候就必須需要用到其他的專業抓包工具,例如本篇介紹的Fiddler。
二、Fiddler簡介
Fiddler是位於客戶端和服務器端的HTTP代理,也是目前最常用的http抓包工具之一,它能夠記錄客戶端和服務器之間的所有 HTTP請求,可以針對特定的HTTP請求,分析請求數據、設置斷點、調試web應用、修改請求的數據,甚至可以修改服務器返回的數據,功能非常強大,是web調試的利器。
當然,除了Fiddler之外,抓包工具還有Firebug、Wireshark、Httpwatch等,為什么我們要選擇fiddler呢?原因如下:
(1)Firebug雖然可以抓包,但是對於分析http請求的詳細信息,不夠強大。模擬http請求的功能也不夠,且firebug常常是需要“無刷新修改”,如果刷新了頁面,所有的修改都不會保存。
(2)Wireshark是通用的抓包工具,但是比較龐大,對於只需要抓取http請求的應用來說,似乎有些大材小用,總有一點殺雞用牛刀的感覺。
(3)Httpwatch也是比較常用的http抓包工具,但是只支持IE和firefox瀏覽器(其他瀏覽器可能會有相應的插件),對於想要調試chrome瀏覽器的http請求,似乎稍顯無力,而Fiddler 是一個使用本地 127.0.0.1:8888 的 HTTP 代理,任何能夠設置 HTTP 代理為 127.0.0.1:8888 的瀏覽器和應用程序都可以使用 Fiddler。
三、Fiddler界面介紹
(一)功能介紹:主菜單
|
File文件:
File--->Capture Traffic啟用或停止捕獲; File--->New Viewer 新窗口; File--->Load Archive 存檔; File--->Recent Archive 最近文檔; File--->Save保存; Save--->All Session... 全部會話; Save--->Selected Session 選擇了的會話; Save--->Request 請求; Save--->Response 響應; File--->Import Sessions導入會話; File--->Export Sessions導出會話; File--->Exit退出; |
|
Edit編輯: Edit--->Copy拷貝; Copy--->Session拷貝整個Session; Copy--->Just Url將選中session的url拷貝到剪貼板; Copy--->Headers Only拷貝頭信息,包括請求和返回的頭信息; Copy--->Full Summary將session列表顯示的信息及表頭復制到剪貼板,通過tab分割。便於在Excel或其他編輯器中查看編輯; Edit--->Remove移除; Remove--->Selected Sessions選擇會話; Remove--->Unselected Sessions反選會話; Remove--->All Sessions全部會話; Edit--->Select All選擇全部; Edit--->Undelete恢復之前刪除的會話; Edit--->Paste as Sessions作為會話粘貼文件; Edit--->Mark標記所選的會話; Mark--->Strikeout失敗; Mark--->Red紅色; Mark--->Blue藍色; Mark--->Gold金色; Mark--->Green綠色; Mark--->Orange橙色; Mark--->Purple紫色; Mark--->Unmark未標記; Edit--->Unlock for Editing調為可編輯 Edit--->Find Sessions查找會話 |
|
Rules規則: Rules--->Hide Image Requests隱藏圖片請求; Rules--->Hide HTTPS CONNECTs隱藏HTTPS連接; Rules--->Automatic Breakpoints斷點控制; Automatic Breakpoints--->Before Requests請求之前; Automatic Breakpoints--->After Responses 響應之后; Automatic Breakpoints--->Disabled禁用; Automatic Breakpoints--->Ignore Images忽略圖片; Rules--->Customize Rules打開Fiddler ScriptEditor; Rules--->Require Proxy Authentication密碼代理驗證; Rules--->Apply GZIP Encoding采用GZIP編碼; Rules--->Remove All Encodings刪除全部編碼; Rules--->Hide 304s隱藏304會話; Rules--->Request Japanese Content要求日語內容; Rules--->User-Agents支持把User-Agents請求頭設置或替換成指定值; Rules--->Performance提供影響web性能的簡單選項; Performance--->Simulate Modem speeds模擬調制解調器速度; Performance--->Disable Caching禁止緩存 Performance--->Cache Always Fresh新的緩存 |
|
Tools工具:
Tools--->Options選項; Tools--->WinINET Options WinINET選項; Tools--->Clear WinINET Cache-清除WinINET緩存; Tools--->Clear WinINET Cookies清除WinINET的Cookies; Tools--->TextWizard文字編碼解碼; Tools--->Compare Sessions比較會話; Tools--->New Session Clipboard新會話寫字板; Tools--->HOSTS hosts配置; Tools--->Reset Script重置腳本; Tools--->Sandbox沙箱; Tools--->View IE Cache查看IE緩存; |
|
View視圖: View--->Show Toolbar顯示工具條 View--->Default Layout默認布局 View--->Stacked Layout堆疊布局 View--->Wide Layout全部布局 View--->Tabs制表符 Tabs--->preferences偏好 Tabs--->autosave自動保存 Tabs--->apitest API測試 View--->Statistics統計 View--->Inspectors嗅探 View--->Composer構造 View--->Minimize to Tray關閉自托盤 View--->Stay on Top前端顯示 View--->Squish Session List會話列表格式 View--->AutoScroll Session List自動滾動會話鏈表 View--->Refresh刷新 |
|
Help幫助: Help--->Help幫助 Help--->Fiddler Book說明 Help--->Discussions社區討論 Help--->HTTP References HTTP的參考 Help--->Troubleshoot Filters-故障排除 Help--->Check For Updates檢測更新 Help--->Send Feedback發送反饋 Help--->Abou關於 |
(二)功能介紹:快捷菜單
|
會話列表進行備注
Replay--->重新發送選中請求 Remove--->刪除會話 Go--->打斷點時使用 Stream--->點擊為流模式,不點擊為緩沖模式 【緩沖模式】:內容全部返回在發送到客戶端;可以控制響應,修改響應數據,但是時序圖有時候會出現異常; 【流模式】:收到內容立即發送給客戶端;更接近真實瀏覽器的性能,速度快,時序圖更准確(比如瀑布圖),但是不能控制響應;
如果不需要AutoResponse和Fileters功能的話,一般使用緩沖模式; Decode--->解碼,默認勾選 |
|
Keep:All sessions--->保持全部會話 Any Process--->任何進程,精准定位 Find--->查找 Save--->保存 |
|
截屏 秒表 Browse--->打開瀏覽器 Clear Cache--->清除緩存 TextWizard--->編碼解碼小工具 |
|
Tearoff--->打開一個新窗口 MSDN Search--->MSDN關鍵字查找 |
(三)會話列表
|
#--->圖標及序號 Result--->HTTP響應狀態碼 Protocol--->請求使用的協議 Host--->接受請求的服務器主機名和端口號 URL--->請求的服務器路徑的文件名,也包括GET參數 Body--->請求的大小,以byte為單位 Caching--->請求的緩存過期時間或緩存控制header等值;響應頭中Expires和Cache-Control字段的值 |
|
Content-Type--->請求響應的類型 Process--->發出此請求的Windows進程及進程ID; Comment--->注釋信息; Custom--->用戶可以通過腳本設置自定義值;FiddlerScript所設置的ui-CustomColumn標志位的值 |
|
|
(四)會話列表:右鍵功能
|
【Decode Selected Session】s--->解碼選擇的session,一些Response body 會Encode。Decode后通常能解決亂碼的問題; 【AtuoScroll Session List】--->自動滾動 Session List。當不斷有新的session進入list時候,關閉此功能,更容易定位選擇某一個或多個session; 【Comment】--->為一個或多個session添加注釋;
【Compare】--->對比:選中兩條session右鍵,就會出現Compare選項。這個功能是通過第三方的軟件來實現,可以下載WinDiff.Exe放在Fiddler的安裝目錄下,或是下載WinMerge安裝,安裝時,注意將軟件添加到系統環境變量中; 【COMETPeek】--->命令會保留正在執行的響應的“快照”,在響應完成前就可以查看部分內容。當web應用采用COMET模式以流式向客戶端返回數據時,可以使用該命令。由於“流式”的含義就是永不結束,直有當服務端停止連接后,Fiddler才會返回響應; 【Abort Session】--->終止當前正在執行的請求; 【Clone Response】--->當Session列表中選中兩個Session,並且其中一個Session在斷點處中止,而另一個Session已經運行完成時才可用。該命令會把已經完成的Session的響應拷貝給暫停運行的Session; 【Unlock For Editing】--->使Session的請求和響應都可以在Inspector中編輯; 【Inspect in New Windowns】--->打開一個新的Session Inspector窗口; 【Properties】--->打開Session屬性窗口,顯示當前的Session信息; |
|
Copy拷貝; 【Copy】--->Just Url將選中session的url拷貝到剪貼板; 【Copy】--->This Column拷貝摘要,其中包括:請求方法,URL,響應狀態碼及狀態信息。如果是重定向的HTTP/3xx,還會有該請求Response header中Location字段; 【Copy】--->Terse Summary簡要; 【Copy】--->Headers Only拷貝頭信息,包括請求和返回的頭信息; 【Copy】--->Session拷貝整個Session; 【Copy】--->Response DataURL拷貝響應的DataURI(一個特定資源的協議),格式規范: data:[<mimetype>][;charset=<charset>][;base64],<encoded data>,這項技術一般用於圖片內嵌頁面; 【Copy】--->Full Summary將session列表顯示的信息及表頭復制到剪貼板,通過tab分割。便於在Excel或其他編輯器中查看編輯; |
|
Save保存:
【Save】--->Selected Sessions選擇Sessions; 【Save】--->Selected Sessions---> in ArchiveZIP將選擇的sessions保存為SAZ格式壓縮文件; 【Save】--->Selected Sessions--->as Text將所選Session保存為txt格式文件; 【Save】--->Selected Sessions---> as Text(Headers only)將所選sessions的請求和響應頭一起保存為txt格式文件; |
|
Remove刪除: 【Remove】--->Selected Sessions刪除選中的sessions 【Remove】--->Unselected Sessions刪除未選中的sessions; 【Remove】--->All Session刪除所有sessions |
|
Filter Now快捷過濾: 選中一個session右鍵會出現Filter Now選項,Fiddler會根據你選擇的session快速生成隱藏/顯示條件;
當我們選則隱藏某一個條件后,session list會隱藏符合條件的session; |
|
Mark標記所選的會話: Mark--->Strikeout失敗; Mark--->Red紅色; Mark--->Blue藍色; Mark--->Gold金色; Mark--->Green綠色; Mark--->Orange橙色; Mark--->Purple紫色; Mark--->Unmark未標記; |
|
Replay重新請求此地址: 【Replay】--->Reissue Requests 將選中的請求以原來的形式重新發送。如果按住Shift鍵,可以鍵入重復次數。或是選中sessions后按Shift+R; 【Replay】--->Reissue Unconditionally無條件的發送選中請求,告訴服務器不要返回HTTP/304響應,快捷鍵Shift+U; 【Replay】--->Reissue and Edit把選中的請求以原來的形式重新發送,在每個session中設置請求斷點,在請求被發送到服務器前,使用Fiddler的Inspector修改請求; 【Replay】--->Reissue and Verify把選中的請求以原來的形式重新發送,驗證Response狀態碼和Response body; 重新發送的請求會被標記出背景色,綠色代表驗證通過,紅色表示驗證失敗,在comments中會提示失敗原因和對比的session id; 【Replay】--->Reissue Sequentially將選中的請求重新發送,等待前一個響應回來后,在發送下一個; 【Replay】--->Reissue from Composer將選中的請求克隆到Fiddler右側的Composer模塊中(Composer后續博客講解); 【Replay】--->Revisit in IE將sessions的url在IE中打開。注意IE總是使用GET方法,而且用自己的header和cookie,不管session中提供了什么HTTP方法和請求頭; |
|
Select選擇: 【Select】--->Parent Request當前請求是從那個頁面來的,相當於當前請求頭中的Refere字段值。鼠標放在session上按P鍵可執行; 【Select】--->Child Requests與1相反; 【Select】--->Duplicate Requests選中Session列表中和當前的Session的URL和HTTP方法相同的所有Session; 【Select】--->Matching Values值匹配選擇,可以根據Session列表中的任意值匹配,鼠標放任意一列,點擊Alt+左鍵,就會匹配出相同值的session; |
(五)選項卡
|
【Statidtics】--->對選中多個Sessions統計; 【Inspectors】--->請求頭和響應體 【AutoResponder】--->重新定向 【Composer】--->模擬進行發送 【FiddlerScript】--->腳本 【Log】--->日志 【Fiters】--->過濾 【No Host Filter】不設置域名過濾; 【Hide the following Hosts】設置的這些域名相關會話將在左側會話列表中被隱藏; 【Show only the following Hosts】只在會話列表中顯示與設置的這些域名相關的會話; 【Flag the following Hosts】與設置的域名相關會話將在左側會話列表中高亮想顯示。 【Timeline】--->瀑布流時間圖 |
(六)請求查看器
|
【Headers】--->請求頭信息顯示為一個分級視圖,包含了web客戶端信息、Cookie、傳輸狀態等; 【TextView】--->顯示POST請求的body部分為文本; 【SyntaxView】--->顯示腳本(安裝SyntaxView插件) 【WebForms】--->以直觀的界面顯示QueryString的值和Body的值,這里的Body應該是 application/x-www-form-urlen-coded格式; 【HexView--->請求內容的16進制顯示; 【Auth】--->顯示hearer中Proxy-Authorization和【Authoriization】信息; 【Cookies】--->以直觀的界面顯示Header中Cookie的值; 【Raw】--->將整個請求顯示為純文本; 【JSON】--->通過JOSN格式顯示; 【XML】--->如果請求的body是XML格式,就是用分級的XML樹來顯示它; |
(七)響應查看器
|
【Transformer】--->響應信息的壓縮編碼格式; 【Headers】--->用分級視圖顯示響應的header; 【TextView】--->使用文本顯示相應的body; 【SyntaxView】--->顯示腳本(安裝SyntaxView插件) 【ImageView】--->響應內容如果是圖片則顯示圖片,左側灰色區域會顯示圖片的大小、寬高、文件格式等信息,在下方還可以選擇縮放模式:自動縮放、縮放以適應顯示區域大小、無縮放; 【HexView】--->響應內容的16進制顯示; 【WebView】--->; 【Auth】--->顯示hearer中Proxy-Authorization和Authoriization信息; 【Caching】--->緩存; 【Cookies】--->以直觀的界面顯示Header中Cookie的值; 【Raw】--->將整個響應顯示為純文本; 【JSON】--->通過JOSN格式顯示; 【XML】--->如果響應的body是XML格式,就是用分級的XML樹來顯示它; |
四、Fiddler實戰-抓取手機端數據
由於整理的時候使用word文檔去整理,內容太多,反而查閱比較麻煩,索性這里將實戰部分當一個大塊兒去詳細的講解。這里請閱讀“《Fiddler系列二:Fiddler實戰抓取手機端數據》”
五、總結
Fiddler是一個功能強大的網絡抓包工具,本文對如何用Fiddler抓取HTTP、HTTPS、手機APP會話數據報介紹了,另外還補充介紹了數據包過濾的功能。當然,Fiddler的功能遠不止這些,不過本文介紹的操作用於一般的網絡爬蟲數據包分析足以。
對於小白初次了解的話,請打開Fiddler工具和文檔同步操作,這也學習起來效果最佳,可能在閱讀“Fiddler界面介紹”的時候內容比較枯燥,但是學習和成長的道路上不就是這樣的一個過程嘛!加油讀者們,希望對你們有所幫助!
最后如果在線的讀者你喜歡的話可以留下一個小小的“筆芯”,同時在本文中有什么問題,或者有錯誤的地方,也可以添加以下QQ群進行學習交流。同時在文章發布之前,你們在網頁上所看到的文章我已經編寫好了離線文檔,如果有需要,同樣也可以加群下載。
學習和成長本就是這樣,痛並快樂着,而又是一個漫長的過程,因為有你們的分享和大家的互相監督學習,才能夠不斷的進步和成長。
如果喜歡,可以繼續深入閱讀:《Fiddler系列二:Fiddler實戰抓取手機端數據》