1 引言
在編寫網(wǎng)絡(luò)爬蟲時,第一步(也是極為關(guān)鍵一步)就是對網(wǎng)絡(luò)的請求(request)和回復(fù)(response)進(jìn)行分析,尋找其中的規(guī)律,然后才能通過網(wǎng)絡(luò)爬蟲進(jìn)行模擬。瀏覽器大多也自帶有調(diào)試工具可以進(jìn)行抓包分析,但是瀏覽器自帶的工具比較輕量,復(fù)雜的抓包并不支持。且有時候需要編寫手機(jī)APP爬蟲,這時候就必須需要用到其他的專業(yè)抓包工具,例如本篇介紹的Fiddler。
Python學(xué)習(xí)資料或者需要代碼、視頻加Python學(xué)習(xí)群:960410445
2 Fiddler簡介
Fiddler是位于客戶端和服務(wù)器端的HTTP代理,也是目前最常用的http抓包工具之一,它能夠記錄客戶端和服務(wù)器之間的所有 HTTP請求,可以針對特定的HTTP請求,分析請求數(shù)據(jù)、設(shè)置斷點(diǎn)、調(diào)試web應(yīng)用、修改請求的數(shù)據(jù),甚至可以修改服務(wù)器返回的數(shù)據(jù),功能非常強(qiáng)大,是web調(diào)試的利器。
當(dāng)然,除了Fiddler之外,抓包工具還有Firebug、Wireshark、Httpwatch等,為什么我們要選擇fiddler呢?原因如下:
?。?)Firebug雖然可以抓包,但是對于分析http請求的詳細(xì)信息,不夠強(qiáng)大。模擬http請求的功能也不夠,且firebug常常是需要“無刷新修改”,如果刷新了頁面,所有的修改都不會保存。
?。?)Wireshark是通用的抓包工具,但是比較龐大,對于只需要抓取http請求的應(yīng)用來說,似乎有些大材小用,總有一點(diǎn)殺雞用牛刀的感覺。
(3)Httpwatch也是比較常用的http抓包工具,但是只支持IE和firefox瀏覽器(其他瀏覽器可能會有相應(yīng)的插件),對于想要調(diào)試chrome瀏覽器的http請求,似乎稍顯無力,而Fiddler 是一個使用本地 127.0.0.1:8888 的 HTTP 代理,任何能夠設(shè)置 HTTP 代理為 127.0.0.1:8888 的瀏覽器和應(yīng)用程序都可以使用 Fiddler。
3 Fiddler界面介紹
Fiddler界面如下:

Fiddler界面左側(cè)的小窗口列表展示的是所有Fiddler抓取的包,各個包每個字段還有圖標(biāo)的含義如下表所示:

數(shù)據(jù)包屬性第一列的圖標(biāo)含義如下表所示:

Fiddler界面右側(cè)是用來顯示選中數(shù)據(jù)報的詳細(xì)信息,上半部分顯示的是數(shù)據(jù)報的請求信息,下半部分顯示的是回復(fù)信息:

4 PC端網(wǎng)頁會話數(shù)據(jù)包捕獲
4.1 HTTP會話數(shù)據(jù)包捕獲
Fiddler打開后,會自動將瀏覽器代理設(shè)置為“127.0.0.1:8888”,關(guān)閉時自動修改為原來的代理,這一點(diǎn)上Fiddler還是比較方便的。當(dāng)然你也可以手動設(shè)置瀏覽器代理。開始抓包是必須確保猜到了file下的Capture Traffic是勾選上的,當(dāng)然也可以通過下方的Capturing按鈕開啟或關(guān)閉。
所以,若是要捕獲HTTPS協(xié)議會話信息,要進(jìn)行進(jìn)一步的配置。配置過程如下:
第一步:打開Tools – Options,然后將彈出窗口內(nèi)HTTPS選項(xiàng)下的所有可選項(xiàng)都勾選上。


? 有的網(wǎng)上教程說到此點(diǎn)擊OK就可以了,但事實(shí)證明,如果就設(shè)置到這一步,打開HTTPS網(wǎng)頁會失敗,出現(xiàn)警告“您的連接并不安全”,如下圖所示。所以還要進(jìn)行第二步操作。

第二步:還是在第一步中打開的彈出窗口內(nèi),點(diǎn)擊action,然后選擇第二項(xiàng),將證書到處到桌面。

? 第三步:打開firefox瀏覽器,選項(xiàng)-隱私與安全,在最下面找到證書設(shè)置項(xiàng),點(diǎn)擊“查看證書”,導(dǎo)入在第二步中到處到桌面的證書,勾選兩個信任之后確認(rèn)退出。


此時,再次打開百度首頁,查看Fiddler捕獲的信息,發(fā)現(xiàn)可以正常訪問百度,且Fiddler沒有報警報信息,且成功捕獲如下所示:?

5 手機(jī)端APP會話信息采集
除了采集電腦瀏覽器的網(wǎng)頁會話外,F(xiàn)iddler還能采集手機(jī)APP的會話信息。當(dāng)然,這還是需要經(jīng)過一番設(shè)置才行。步驟如下:
第一步:用電腦開啟一個無線網(wǎng)(360WiFi、獵豹wifi等都可以實(shí)現(xiàn)),然后讓手機(jī)通過電腦開啟的無線網(wǎng)上網(wǎng)。
第二步:依次點(diǎn)擊打開Tools-Options-Connections,然后勾選第二項(xiàng)“Allow remote compute to connect”。


第三步:到手機(jī)中將手機(jī)的網(wǎng)絡(luò)代理改為電腦的fiddler。首先查看電腦的ip地址,然后在手機(jī)中一次打開“設(shè)置-無線和網(wǎng)絡(luò)-wlan”,連接上電腦上剛創(chuàng)建的無線網(wǎng),然后長按該無線網(wǎng),依次點(diǎn)擊“修改網(wǎng)絡(luò)-顯示高級設(shè)置-代理-手動”,將服務(wù)器主機(jī)名設(shè)置為電腦的ip地址,端口設(shè)置為8888。如下圖所示:




設(shè)置好后,我們Fiddler就可以成功捕獲手機(jī)APP的會話信息了。
6 會話過濾功能
當(dāng)我們打開Fiddler進(jìn)行會話捕獲時,在默認(rèn)情況下,F(xiàn)iddler會不會所有的會話,這樣就造成不會的會話過多,不利于我們分析,這時候我們可以用到Filters功能進(jìn)行會話過濾。Filters三種過濾模式供選擇:
No Host Filter:不設(shè)置域名過濾;
Hide the following Hosts:設(shè)置的這些域名相關(guān)會話將在左側(cè)會話列表中被隱藏;
Show only the following Hosts:只在會話列表中顯示與設(shè)置的這些域名相關(guān)的會話;
Flag the following Hosts:與設(shè)置的域名相關(guān)會話將在左側(cè)會話列表中高亮想顯示。
如果要設(shè)置多個域名,域名之間用分號分開。切記,選好后要點(diǎn)擊Actions按鈕,然后點(diǎn)擊Runfiltersets now讓設(shè)置生效。如果我們只想顯示百度和CSDN的會話信息,設(shè)置過程如下圖所示:

7 總結(jié)
Fiddler是一個功能強(qiáng)大的網(wǎng)絡(luò)抓包工具,本文對如何用Fiddler抓取HTTP、HTTPS、手機(jī)APP會話數(shù)據(jù)報介紹了,另外還補(bǔ)充介紹了數(shù)據(jù)包過濾的功能。當(dāng)然,F(xiàn)iddler的功能遠(yuǎn)不止這些,不過本文介紹的操作用于一般的網(wǎng)絡(luò)爬蟲數(shù)據(jù)包分析足以。