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