如何抓取http(s)數據包?Fiddler抓包軟件詳解

Fiddler簡介

Fiddler是一個http協議調試代理工具,它能夠記錄並檢查所有你的電腦和互聯網之間的http通訊,設置斷點,查看所有的“進出”Fiddler的數據(指cookie,html,js,css等文件)。 Fiddler 要比其他的網絡調試器要更加簡單,因為它不僅僅暴露http通訊還提供了一個用戶友好的格式.

Fiddler使用c#語言開發,是一個開源軟件。它包含一個簡單卻功能強大的基於JScript .NET 事件腳本子系統,它的靈活性非常棒,可以支持眾多的http調試任務,並且能夠使用c#語言進行擴展。他還提供一系列接口以支持插件開發。

Fiddler是基於代理模式工作的,簡單來說,當你打開Fiddler軟件,他會開始監聽本機8888端口。然後將系統默認代理設置為127.0.0.1:8888。這樣本機所有使用系統代理的軟件包括瀏覽器會先把數據發送到Fiddler,然後Fiddler再將數據發送到服務器。服務器返回的數據先發送給Fiddler,再由Fiddler發送到指定的程序。在這個過程中Fiddler起到了轉發數據(代理)的作用。由於數據無論是請求還是響應都通過Fiddler進行轉發,所以Fiddler有權限對數據進行獲取、存儲、修改等操作。

Fiddler安裝

打開https://www.telerik.com/fiddler,點擊Free download進行下載。

安裝過程很簡單綠色,選擇好安裝路徑,點擊Install就可以了。這裡特別注意下,你要記住你的安裝路徑,因為Fiddler默認不會創建桌面快捷方式,需要你去安裝目錄打開程序或者手動創建快捷方式。

如何抓取http(s)數據包?Fiddler抓包軟件詳解

Fiddler安裝

界面簡介

如何抓取http(s)數據包?Fiddler抓包軟件詳解

Fiddler界面

使用及設置

Fiddler功能繁雜,不好以圖文的形式把每一項講清楚。下面我講一些日常使用的、關鍵的按鈕、功能和設置。

安裝完成後我們一般先進行幾項很重要的設置,首先點擊Tools->options->Connections

如何抓取http(s)數據包?Fiddler抓包軟件詳解

Fiddler

在這裡我們可以修改Fiddler監聽的端口,勾選紅圈標示出來的這項,允許遠程計算機連接。以便在以後我們抓取手機等移動設備的數據包。勾選之後在手機Wifi設置裡設置代理為 “內網IP:8888"(如 192.168.1.2:8888)就可以抓取手機的HTTP數據包。

然後再將標籤頁切換到HTTPS,以設置Fiddler可以抓取https數據包

如何抓取http(s)數據包?Fiddler抓包軟件詳解

Fiddler設置

勾選以上幾項,期間會彈出證書安裝,一路確認下去。完成之後,你的Fiddler就可以抓取本機的https數據包

如何抓取http(s)數據包?Fiddler抓包軟件詳解

Fiddler工具欄

工具欄中我們主要介紹紅圈選中的幾個功能。X是用來清空當前數據記錄的。

Decode選中之後會自動嘗試解壓響應的內容,包括但不限於以下格式(gzip、deflate、bzip2、brotli)。

"Keep 1000 sessions"表示顯示多少條數據記錄,默認顯示全部,這裡建議設置為500或者1000,默認全部的話,時間久了會把你電腦內存耗光.

Any Process 這個按鈕可以拖動選擇抓指定應用程序的包,比如拖動到firefox就只顯示firefox的數據包。默認顯示全部應用程序。

如何抓取http(s)數據包?Fiddler抓包軟件詳解

Save按鈕可以把當前的數據記錄保存到硬盤,以便在方便的時候重新打開分析

Clear Cache是清除瀏覽器緩存,基本不用

TextWizard是個功能非常強大的編碼解碼工具,支持多種格式。會經常用到

如何抓取http(s)數據包?Fiddler抓包軟件詳解

TextWizard

鼠標放到Online按鈕上,會顯示你當前的網卡信息、內網IP。方便給手機設置代理的時候查看。

當在左側選擇一條數據記錄時,右側會顯示該請求的具體信息

如何抓取http(s)數據包?Fiddler抓包軟件詳解

請求數據

Headers會顯示請求頭的一些信息,例如是GET還是POST、瀏覽器UA、cookie等

Textview和SyntaxView功能基本一樣,用來顯示post數據的原始明文格式(UTF-8),如果是二進制數據則顯示亂碼

WebForms會更清晰的展示你的post內容(僅限於&連接格式的post內容,如果是json格式,這裡不顯示)

HexView,以16進制顯示你的整個請求包

Cookie,用來顯示請求攜帶的cookie信息

raw,以明文(utf-8)顯示整個請求頭信息包含post內容

json,以json格式顯示post內容

xml,以xml格式顯示post內容

以下是服務器響應的響應信息截圖

如何抓取http(s)數據包?Fiddler抓包軟件詳解

Headers顯示響應頭信息

TextView和SyntaxView作用相似,用來顯示服務器返回的具體內容。當返回內容非常大的時候TextView會卡死很久才顯示。SyntaxView比TextView響應快很多

ImageView,如果服務器返回的是圖片流的話,會在這個標籤顯示圖片

HexView,以16進制顯示返回內容

WebView,如果返回的是html代碼,這個標籤會解析html並顯示網頁

Caching,顯示緩衝

Cookie,顯示服務器返回的cookie

Raw,以明文(utf-8)顯示完整的響應數據包

Json,以json格式顯示返回內容

XML,以xml格式顯示返回內容

Composer工具介紹

Composer工具在Fiddler中使用率非常高,常常用來模擬一些數據的提交

如何抓取http(s)數據包?Fiddler抓包軟件詳解

如何抓取http(s)數據包?Fiddler抓包軟件詳解

服務器給我們返回以上詞義。返回格式為json格式。

Fiddler命令行

在命令行中我們基本只需要掌握bpu命令就可以了,這是一個數據劫持命令

如何抓取http(s)數據包?Fiddler抓包軟件詳解

我們把我們提交的china關鍵詞改成japan,發現服務器給我們返回了japan的翻譯

如何抓取http(s)數據包?Fiddler抓包軟件詳解

通過這個命令,我們既可以修改請求,也可以修改響應。常常用來劫持數據,例如你玩的某個遊戲裡,你有100個金幣,通過劫持數據,你可以吧自己的金幣數量修改成1萬甚至更多。

抓包實戰

如何抓取http(s)數據包?Fiddler抓包軟件詳解

通過逐條查看,或者搜索china字樣,我們找到了一個異步請求數據包,這個包是用來做詞義聯想的,雖然不是最終的翻譯數據包,但是該包相對簡單也可以實現翻譯功能,我們就來模擬這個包實現翻譯功能。

我們按住這條記錄,拖動到Composer工具裡,簡單調試去除一下無用的頭部信息,看瀏覽器是否能正常返回。我們精簡後的請求為下圖示例

如何抓取http(s)數據包?Fiddler抓包軟件詳解

下面我們使用python編程模擬這個請求

如何抓取http(s)數據包?Fiddler抓包軟件詳解

如何抓取http(s)數據包?Fiddler抓包軟件詳解

import http

import json

from urllib import parse

keyword=input('請輸入要翻譯的單詞:')

#構造請求頭信息

headers={'User-Agent':'Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36\

(KHTML, like Gecko) Chrome/55.0.2883.87 UBrowser/6.2.3964.2 Safari/537.36'

,'Content-Type':'application/x-www-form-urlencoded; charset=UTF-8'}

conn = http.client.HTTPConnection("fanyi.baidu.com") #創建HTTP連接

body = {'kw': keyword} #構造post信息

body = parse.urlencode(body) #對post內容進行url編碼

conn.request("POST","/sug",body=body,headers=headers) #開始請求

response = conn.getresponse() #獲取響應

if(response.status==200): #判斷服務器響應代碼為200的話即返回正常

result = response.read().decode('utf-8'); #獲取響應數據

result = json.loads(result) #解析json

print('翻譯內容為:',result['data'][0]['v']) #輸出翻譯內容

else:

print('出現錯誤') #如果服務器響應代碼不是200,是500或者404或者其他錯誤代碼,都顯示為錯誤


下篇文章會詳細講解如何使用Fiddler抓取手機包,如何設置代理,安裝證書等。


分享到:


相關文章: