在編寫網絡爬蟲時,第一步(也是極爲關鍵一步)就是對網絡的請求(request)和回覆(response)進行分析,尋找其中的規律,而後才能經過網絡爬蟲進行模擬。瀏覽器大多也自帶有調試工具能夠進行抓包分析,可是瀏覽器自帶的工具比較輕量,複雜的抓包並不支持。且有時候須要編寫手機APP爬蟲,這時候就必須須要用到其餘的專業抓包工具,例如本篇介紹的Fiddler。web
Fiddler是位於客戶端和服務器端的HTTP代理,也是目前最經常使用的http抓包工具之一,它可以記錄客戶端和服務器之間的全部 HTTP請求,能夠針對特定的HTTP請求,分析請求數據、設置斷點、調試web應用、修改請求的數據,甚至能夠修改服務器返回的數據,功能很是強大,是web調試的利器。chrome
固然,除了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界面以下:網絡
Fiddler界面左側的小窗口列表展現的是全部Fiddler抓取的包,各個包每一個字段還有圖標的含義以下表所示:ide
數據包屬性第一列的圖標含義以下表所示:工具
Fiddler界面右側是用來顯示選中數據報的詳細信息,上半部分顯示的是數據報的請求信息,下半部分顯示的是回覆信息:網站
Fiddler打開後,會自動將瀏覽器代理設置爲「127.0.0.1:8888」,關閉時自動修改成原來的代理,這一點上Fiddler仍是比較方便的。固然你也能夠手動設置瀏覽器代理。開始抓包是必須確保猜到了file下的Capture Traffic是勾選上的,固然也能夠經過下方的Capturing按鈕開啓或關閉。
打開後,Fiddler會自動捕獲全部HTTP會話信息。
完成上述設置以後能夠捕獲HTTP協議下的會話信息,但如今的不少網站都採用HTTPS協議,用Fiddler不會就會出問題。百度首頁採用的就是HTTPS協議,以下圖所示,當咱們嘗試使用Fiddler不會訪問百度首頁時,出現捕獲失敗:
因此,如果要捕獲HTTPS協議會話信息,要進行進一步的配置。配置過程以下:
第一步:打開Tools – Options,而後將彈出窗口內HTTPS選項下的全部可選項都勾選上。
有的網上教程說到此點擊OK就能夠了,但事實證實,若是就設置到這一步,打開HTTPS網頁會失敗,出現警告「您的鏈接並不安全」,以下圖所示。因此還要進行第二步操做。
第二步:仍是在第一步中打開的彈出窗口內,點擊action,而後選擇第二項,將證書處處到桌面。
第三步:打開firefox瀏覽器,選項-隱私與安全,在最下面找到證書設置項,點擊「查看證書」,導入在第二步中處處到桌面的證書,勾選兩個信任以後確認退出。
此時,再次打開百度首頁,查看Fiddler捕獲的信息,發現能夠正常訪問百度,且Fiddler沒有報警報信息,且成功捕獲以下所示:
除了採集電腦瀏覽器的網頁會話外,Fiddler還能採集手機APP的會話信息。固然,這仍是須要通過一番設置才行。步驟以下:
第一步:用電腦開啓一個無線網(360WiFi、獵豹wifi等均可以實現),而後讓手機經過電腦開啓的無線網上網。
第二步:依次點擊打開Tools-Options-Connections,而後勾選第二項「Allow remote compute to connect」。
第三步:到手機中將手機的網絡代理改成電腦的fiddler。首先查看電腦的ip地址,而後在手機中一次打開「設置-無線和網絡-wlan」,鏈接上電腦上剛建立的無線網,而後長按該無線網,依次點擊「修改網絡-顯示高級設置-代理-手動」,將服務器主機名設置爲電腦的ip地址,端口設置爲8888。以下圖所示:
設置好後,咱們Fiddler就能夠成功捕獲手機APP的會話信息了。
當咱們打開Fiddler進行會話捕獲時,在默認狀況下,Fiddler會不會全部的會話,這樣就形成不會的會話過多,不利於咱們分析,這時候咱們能夠用到Filters功能進行會話過濾。Filters三種過濾模式供選擇:
若是要設置多個域名,域名之間用分號分開。切記,選好後要點擊Actions按鈕,而後點擊Runfiltersets now讓設置生效。若是咱們只想顯示百度和CSDN的會話信息,設置過程以下圖所示:
Fiddler是一個功能強大的網絡抓包工具,本文對如何用Fiddler抓取HTTP、HTTPS、手機APP會話數據報介紹了,另外還補充介紹了數據包過濾的功能。固然,Fiddler的功能遠不止這些,不過本文介紹的操做用於通常的網絡爬蟲數據包分析足以。