网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包
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ù)雜的抓包并不支持。且有時候需要編寫手機APP爬蟲,這時候就必須需要用到其他的專業(yè)抓包工具,例如本篇介紹的Fiddler。
2 Fiddler簡介
Fiddler是位于客戶端和服務(wù)器端的HTTP代理,也是目前最常用的http抓包工具之一,它能夠記錄客戶端和服務(wù)器之間的所有 HTTP請求,可以針對特定的HTTP請求,分析請求數(shù)據(jù)、設(shè)置斷點、調(diào)試web應(yīng)用、修改請求的數(shù)據(jù),甚至可以修改服務(wù)器返回的數(shù)據(jù),功能非常強大,是web調(diào)試的利器。
當(dāng)然,除了Fiddler之外,抓包工具還有Firebug、Wireshark、Httpwatch等,為什么我們要選擇fiddler呢?原因如下:
(1)Firebug雖然可以抓包,但是對于分析http請求的詳細(xì)信息,不夠強大。模擬http請求的功能也不夠,且firebug常常是需要“無刷新修改”,如果刷新了頁面,所有的修改都不會保存。
(2)Wireshark是通用的抓包工具,但是比較龐大,對于只需要抓取http請求的應(yīng)用來說,似乎有些大材小用,總有一點殺雞用牛刀的感覺。
(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)的含義如下表所示:
| # | 抓取HTTP Request的順序,從1開始,以此遞增 |
| Result | HTTP狀態(tài)碼 |
| Protocol | 請求使用的協(xié)議,如HTTP/HTTPS/FTP等 |
| Host | 請求地址的主機名 |
| URL | 請求資源的位置 |
| Body | 該請求的大小 |
| Caching | 請求的緩存過期時間或者緩存控制值 |
| Content-Type | 請求響應(yīng)的類型 |
| Process | 發(fā)送此請求的進(jìn)程:進(jìn)程ID |
| Comments | 允許用戶為此回話添加備注 |
| Custom | 允許用戶設(shè)置自定義值 |
數(shù)據(jù)包屬性第一列的圖標(biāo)含義如下表所示:
| 請求已經(jīng)發(fā)往服務(wù)器 | |
| 已從服務(wù)器下載響應(yīng)結(jié)果 | |
| 請求從斷點處暫停 | |
| 響應(yīng)從斷點處暫停 | |
| 請求使用 HTTP 的 HEAD 方法,即響應(yīng)沒有內(nèi)容(Body) | |
| 請求使用 HTTP 的 POST 方法 | |
| 請求使用 HTTP 的 CONNECT 方法,使用 HTTPS 協(xié)議建立連接隧道 | |
| 響應(yīng)是 HTML 格式 | |
| 響應(yīng)是一張圖片 | |
| 響應(yīng)是腳本格式 | |
| 響應(yīng)是 CSS 格式 | |
| 響應(yīng)是 XML 格式 | |
| 響應(yīng)是 JSON 格式 | |
| 響應(yīng)是一個音頻文件 | |
| 響應(yīng)是一個視頻文件 | |
| 響應(yīng)是一個 SilverLight | |
| 響應(yīng)是一個 FLASH | |
| 響應(yīng)是一個字體 | |
| 普通響應(yīng)成功 | |
| 響應(yīng)是 HTTP/300、301、302、303 或 307 重定向 | |
| 響應(yīng)是 HTTP/304(無變更):使用緩存文件 | |
| 響應(yīng)需要客戶端證書驗證 | |
| 服務(wù)端錯誤 | |
| 會話被客戶端、Fiddler 或者服務(wù)端終止 |
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)閉時自動修改為原來的代理,這一點上Fiddler還是比較方便的。當(dāng)然你也可以手動設(shè)置瀏覽器代理。開始抓包是必須確保猜到了file下的Capture Traffic是勾選上的,當(dāng)然也可以通過下方的Capturing按鈕開啟或關(guān)閉。
打開后,Fiddler會自動捕獲所有HTTP會話信息。
4.2 HTTPS會話數(shù)據(jù)包捕獲
完成上述設(shè)置之后可以捕獲HTTP協(xié)議下的會話信息,但現(xiàn)在的很多網(wǎng)站都采用HTTPS協(xié)議,用Fiddler不會就會出問題。百度首頁采用的就是HTTPS協(xié)議,如下圖所示,當(dāng)我們嘗試使用Fiddler不會訪問百度首頁時,出現(xiàn)捕獲失敗:
所以,若是要捕獲HTTPS協(xié)議會話信息,要進(jìn)行進(jìn)一步的配置。配置過程如下:
第一步:打開Tools – Options,然后將彈出窗口內(nèi)HTTPS選項下的所有可選項都勾選上。
有的網(wǎng)上教程說到此點擊OK就可以了,但事實證明,如果就設(shè)置到這一步,打開HTTPS網(wǎng)頁會失敗,出現(xiàn)警告“您的連接并不安全”,如下圖所示。所以還要進(jìn)行第二步操作。
第二步:還是在第一步中打開的彈出窗口內(nèi),點擊action,然后選擇第二項,將證書到處到桌面。
第三步:打開firefox瀏覽器,選項-隱私與安全,在最下面找到證書設(shè)置項,點擊“查看證書”,導(dǎo)入在第二步中到處到桌面的證書,勾選兩個信任之后確認(rèn)退出。
此時,再次打開百度首頁,查看Fiddler捕獲的信息,發(fā)現(xiàn)可以正常訪問百度,且Fiddler沒有報警報信息,且成功捕獲如下所示:
5 手機端APP會話信息采集
除了采集電腦瀏覽器的網(wǎng)頁會話外,Fiddler還能采集手機APP的會話信息。當(dāng)然,這還是需要經(jīng)過一番設(shè)置才行。步驟如下:
第一步:用電腦開啟一個無線網(wǎng)(360WiFi、獵豹wifi等都可以實現(xiàn)),然后讓手機通過電腦開啟的無線網(wǎng)上網(wǎng)。
第二步:依次點擊打開Tools-Options-Connections,然后勾選第二項“Allow remote compute to connect”。
第三步:到手機中將手機的網(wǎng)絡(luò)代理改為電腦的fiddler。首先查看電腦的ip地址,然后在手機中一次打開“設(shè)置-無線和網(wǎng)絡(luò)-wlan”,連接上電腦上剛創(chuàng)建的無線網(wǎng),然后長按該無線網(wǎng),依次點擊“修改網(wǎng)絡(luò)-顯示高級設(shè)置-代理-手動”,將服務(wù)器主機名設(shè)置為電腦的ip地址,端口設(shè)置為8888。如下圖所示:
設(shè)置好后,我們Fiddler就可以成功捕獲手機APP的會話信息了。
6 會話過濾功能
當(dāng)我們打開Fiddler進(jìn)行會話捕獲時,在默認(rèn)情況下,Fiddler會不會所有的會話,這樣就造成不會的會話過多,不利于我們分析,這時候我們可以用到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è)置多個域名,域名之間用分號分開。切記,選好后要點擊Actions按鈕,然后點擊Runfiltersets now讓設(shè)置生效。如果我們只想顯示百度和CSDN的會話信息,設(shè)置過程如下圖所示:
7 總結(jié)
Fiddler是一個功能強大的網(wǎng)絡(luò)抓包工具,本文對如何用Fiddler抓取HTTP、HTTPS、手機APP會話數(shù)據(jù)報介紹了,另外還補充介紹了數(shù)據(jù)包過濾的功能。當(dāng)然,Fiddler的功能遠(yuǎn)不止這些,不過本文介紹的操作用于一般的網(wǎng)絡(luò)爬蟲數(shù)據(jù)包分析足以。
總結(jié)
以上是生活随笔為你收集整理的网络爬虫中Fiddler抓取PC端网页数据包与手机端APP数据包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Python面向对象中super用法与M
- 下一篇: django中使用POST方法 获取PO