Fiddler是一個(gè)http協(xié)議調(diào)試代理工具,它能夠記錄并檢查所有你的電腦和互聯(lián)網(wǎng)之間的http通訊,設(shè)置斷點(diǎn),查看數(shù)據(jù),修改請(qǐng)求數(shù)據(jù)等。比如當(dāng)你想抓取電腦瀏覽器打開一個(gè)網(wǎng)頁時(shí)候詳細(xì)訪問了些什么地址,或者手機(jī)在運(yùn)行某個(gè)應(yīng)用的時(shí)候訪問了些什么地址,特別是在開發(fā)應(yīng)用,想要分析一些http請(qǐng)求的時(shí)候特別有用。你一定很好奇,F(xiàn)iddler是怎樣抓取數(shù)據(jù)的?,其實(shí)當(dāng)你打開Fiddler的時(shí)候會(huì)自動(dòng)在本機(jī)上開啟一個(gè)代理服務(wù)器,關(guān)閉Fiddler時(shí)候會(huì)自動(dòng)關(guān)閉代理服務(wù)器,并且你的瀏覽器會(huì)自動(dòng)設(shè)置和取消代理,完全不需要人工再去設(shè)置。這樣你瀏覽器訪問的http請(qǐng)求都會(huì)經(jīng)過Fiddler代理(充當(dāng)中間人角色),F(xiàn)iddler就可以輕松抓取到http請(qǐng)求的數(shù)據(jù)了。對(duì)于移動(dòng)端,抓取數(shù)據(jù)需要移動(dòng)設(shè)備和電腦在同一局域網(wǎng)下,下文會(huì)詳細(xì)敘述。
fiddler抓包原理圖示
安裝
Fiddler的安裝很簡(jiǎn)單,直接從官網(wǎng)下載,直接安裝即可,F(xiàn)iddler下載地址如下:https://www.telerik.com/download/fiddler
配置
1.在菜單欄依次點(diǎn)擊Tools-->Options-->HTTPS,勾選Capture HTTPS CONNECTS、Decrypt HTTPS traffic、Ignore server certificate errors這三個(gè)選項(xiàng)前的復(fù)選框
配置好后,F(xiàn)iddler就可以截獲HTTPS請(qǐng)求,配置完后記得要重啟Fiddler
注意:第一次配置HTTPS時(shí),彈出證書安裝提示,若沒有彈出提示,勾選Actions--> Trust Root Certificate(信任根證書)
之后會(huì)彈出證書安裝提示,點(diǎn)擊Yes
接著點(diǎn)擊是(Y)
證書安裝成功
查看安裝的證書Actions—>Open Windows Certificate Manager
下面在說一下手機(jī)端抓包如何配置(確保手機(jī)和電腦在同一個(gè)局域網(wǎng)內(nèi))
在菜單欄依次點(diǎn)擊Tools-->Options-->Connections
為了減少干擾,你也可以去掉 “Act as system proxy on startup”(啟動(dòng)系統(tǒng)代理)
接著還需要對(duì)移動(dòng)端的配置,配置前先在控制臺(tái)輸入ipcinfig命令查一下電腦的IP地址(也可以將鼠標(biāo)懸浮至Fidder工具右上角Online出查看)
之后在移動(dòng)端打開瀏覽器,在地址欄中輸入代理服務(wù)器的 IP 和端口(即電腦的IP加fiddler的端口),會(huì)看到一個(gè)Fiddler 提供的頁面,然后確定安裝就好了
然后打開 WiFi 設(shè)置頁面,選擇要連接的 WiFi ,并且長(zhǎng)按(不同的移動(dòng)端可能操作不一樣),在彈出的對(duì)話框中,選擇“修改網(wǎng)絡(luò)”。在接下來彈出的對(duì)話框中,勾選“顯示高級(jí)選項(xiàng)”。在接下來顯示的頁面中,點(diǎn)擊“代理”,選擇“手動(dòng)”。代理服務(wù)器主機(jī)名設(shè)為 PC 的 IP ,代理服務(wù)器端口設(shè)為 Fiddler 上配置的端口 8888,點(diǎn)”保存”。只有移動(dòng)端使用Fidder的代理,F(xiàn)idder才能獲取數(shù)據(jù),至此配置就已經(jīng)完成。
左邊會(huì)話框介紹
1:給會(huì)話添加備注信息 2:重新加載當(dāng)前會(huì)話 3:刪除會(huì)話選項(xiàng) 4:放行,和斷點(diǎn)對(duì)應(yīng),后面詳細(xì)講解 5:響應(yīng)模式。也即是,當(dāng)Fiddler拿到遠(yuǎn)程的response后是緩存起來一次響應(yīng)給客戶端還 是以stream的方式直接響應(yīng)。 6:解碼。有些請(qǐng)求是被編碼的,點(diǎn)擊這個(gè)按鈕后可以根據(jù)響應(yīng)的編碼格式自動(dòng)解碼。 7:查找會(huì)話。 8:保存會(huì)話。 9:截屏。截屏后,會(huì)以會(huì)話的方式返回一個(gè)截圖。
會(huì)話列表標(biāo)題和圖標(biāo)說明如下:
標(biāo)題說明
圖標(biāo)說明
貼士:選中某一條會(huì)話按delete鍵可以刪除會(huì)話,使用Ctrl+X快捷鍵清除所有會(huì)話
右邊Tab面板介紹
1.Statistic
這里顯示關(guān)于HTTP請(qǐng)求的性能和其他數(shù)據(jù)分析的一些信息,比如DNS解析時(shí)間,建立TCP/IP連接時(shí)間消耗等等信息
2. Inspectors
提供headers、textview、hexview、Raw等多種方式查看單條http請(qǐng)求的請(qǐng)求報(bào)文的信息,分為上下兩個(gè)部分,上半部分是請(qǐng)求頭部分,下半部分是響應(yīng)頭部分。對(duì)于每一部分,提供了多種不同格式查看每個(gè)請(qǐng)求和響應(yīng)的內(nèi)容,下面說一些常用的格式
格式1:ImageView標(biāo)簽
使用 ImageView 就可以看到圖片,選擇一條Content-Type是image/jpeg的回話,點(diǎn)擊ImageView
格式2:TextView 標(biāo)簽
HTML/JS/CSS 使用 TextView 可以看到響應(yīng)的內(nèi)容。選擇一條Content-Type是text/html的回話,點(diǎn)擊TextView
格式3:Raw標(biāo)簽
Raw標(biāo)簽可以查看響應(yīng)報(bào)文和響應(yīng)正文,但是不包含請(qǐng)求報(bào)文
格式4:Auth標(biāo)簽
Auth則可以查看授權(quán)Proxy-Authorization 和 Authorization的相關(guān)信息
格式5:Cookies標(biāo)簽
3.AutoResponder
Fiddler 的AutoResponder tab允許你從本地返回文件,而不用將http request 發(fā)送到服務(wù)器上。下面我們舉個(gè)例子:我們?cè)跒g覽器中輸入www.baidu.com ,瀏覽器就會(huì)幫我們打開百度的網(wǎng)頁,現(xiàn)在我們?cè)贏utoResponder tab面板中添加一條規(guī)則并啟用規(guī)則,如下圖
此時(shí)再訪問www.baidu.com 時(shí),頁面如下:
小結(jié):AutoResponder功能是Fiddler最實(shí)用的功能之一,Rule可以自由地設(shè)定,可以使用搜索(默認(rèn))、精確匹配(EXACT)、正則表達(dá)式匹配(REGEX)。處理方式可以選擇使用文件,也可以選擇合適的時(shí)間暫停數(shù)據(jù)流(*bpu、*bpafter),人工干預(yù)。通過以上幾個(gè)步驟,我們演示了怎樣將HTTP請(qǐng)求重定向到本地的文件,進(jìn)行調(diào)試,這在我們?cè)\斷跟蹤一些js文件但卻不能修改js文件時(shí)非常有用。比 如:在用瀏覽器測(cè)試P頁面時(shí),P頁面引入了一個(gè)js資源文件R.js,由于R.js文件在服務(wù)器S上,而我此時(shí)又不能登錄S服務(wù)器(沒有S服務(wù)器的帳 號(hào)),此時(shí)我們就可以通過瀏覽器將R.js文件下載到本地,然后對(duì)本地的R.js文件進(jìn)行調(diào)整,最后通過設(shè)置Fiddler,將R.js文件的請(qǐng)求使用本 地的R.js文件。
4.Composer
Composer允許自定義請(qǐng)求發(fā)送到服務(wù)器,可以手動(dòng)創(chuàng)建一個(gè)新的請(qǐng)求,也可以在會(huì)話表中,拖拽一個(gè)現(xiàn)有的請(qǐng)求,Parsed模式下你只需要提供簡(jiǎn)單的URLS地址即可(如下圖,也可以在RequestBody定制一些屬性,如模擬瀏覽器User-Agent)
5.斷點(diǎn)請(qǐng)求/響應(yīng)
如圖,方框所指的位置時(shí)可以點(diǎn)擊的。共三種狀態(tài): (1)空白:不設(shè)置斷點(diǎn)。 (2)箭頭向上:表示斷點(diǎn)請(qǐng)求.此時(shí)客戶端的請(qǐng)求是無法直接到達(dá)目標(biāo)服務(wù)器的,需要手動(dòng)控制。 (3)箭頭向下:表示斷點(diǎn)響應(yīng).此時(shí)目標(biāo)服務(wù)器的響應(yīng)是無法直接到達(dá)客戶端的,需要手動(dòng)控制。
除此之外,還可以在命令行中進(jìn)行斷點(diǎn),在命令行中輸入命令如下:
bpu www.baidu.com (斷點(diǎn)請(qǐng)求) bpuafter www.baidu.com(斷點(diǎn)響應(yīng))
斷點(diǎn)請(qǐng)求并修改步驟如下:
如下圖:
斷點(diǎn)響應(yīng)修改和斷點(diǎn)請(qǐng)求操作類似,只是在響應(yīng)區(qū)域修改報(bào)文信息即可,但是在斷點(diǎn)響應(yīng)時(shí),請(qǐng)注意超時(shí)時(shí)間。
6.過濾域名
Fiddler抓包可以完成我們調(diào)試測(cè)試需求。但是多余的網(wǎng)頁請(qǐng)求和手機(jī)的其他鏈接影響我們手機(jī)開發(fā)的需求。所以我們需要排除其他無用的包,只關(guān)注我們指定的域名的請(qǐng)求包。打開fiddler,找到Filters選項(xiàng)并點(diǎn)擊打開,如圖所示
默認(rèn)情況下,這個(gè)頁面是灰色的,代表默認(rèn)不過濾任何請(qǐng)求.現(xiàn)在我們勾選 Use Filters ,如下圖
一般常用的有三種過濾條件:
(1).域名過濾,只顯示特定域名的記錄:
這里添加了www.baidu.com ,會(huì)話中只會(huì)出現(xiàn)于www.baidu.com相關(guān)的會(huì)話,其他的都會(huì)過濾掉,如下圖
(2).類型過濾,一般對(duì)各種圖片、CSS、JS這類的靜態(tài)素材也不需要看的情況下,直接全部過濾掉
(3).根據(jù)返回狀態(tài)碼,比如只想顯示200的狀態(tài),其他的不顯示
1.?(問號(hào))
格式:?+字符串 如? baidu.com ;
作用:問號(hào)(?)后邊跟一個(gè)字符串,F(xiàn)iddler 將所有會(huì)話中存在該字符串匹配的全部高亮顯示
提示:匹配的字符串是 Protocol、Host 和 URL 中的任何子字符串.
2.> 和 <
大于號(hào)(>)和小于號(hào)(<)后邊跟一個(gè)數(shù)值,表示高亮所有body大于或小于該數(shù)值的會(huì)話,比如我輸入 <200,按下回車后結(jié)果如下:
3.=
等于號(hào)(=)后邊可以接 HTTP 狀態(tài)碼或 HTTP 方法,比如=200 表示高亮所有正常響應(yīng)的會(huì)話,下圖輸入了=GET,表示希望高亮所有 GET方法的會(huì)話:
4.@
@ 后邊跟的是 Host,比如我想高亮所有百度的鏈接,我可以 @baidu.com
5.bpafter
bpafter 后邊跟一個(gè)字符串,表示中斷所有包含該字符串的會(huì)話,如bpafter baidu
6.bps
bps 后邊跟的是 HTTP 狀態(tài)碼,表示中斷所有為該狀態(tài)碼的會(huì)話。
7.bpv 或 bpm
bpv 或 bpm 后邊跟的是 HTTP 方法,表示中斷所有為該方法的會(huì)話。
8.bpu
跟 bpafter 類似,區(qū)別:bpu 是在發(fā)起請(qǐng)求時(shí)中斷,而 bpafter 是在收到響應(yīng)后中斷。
9.cls 或 clear
清除當(dāng)前的所有會(huì)話
10.dump
將所有的會(huì)話打包成 .zip 壓縮包的形式保存到 C 盤根目錄下
11.g 或 go
放行所有中斷下來的會(huì)話。
12.hide
將 Fiddler 隱藏
13.show(貌似沒啥用)
將 Fiddler 恢復(fù)。
14.urlreplace
urlreplace 后邊跟兩個(gè)字符串,表示替換 URL 中的字符串。比如 urlreplace baidu fishc 表示將所有 URL 的 baidu 替換成 fishc。溫馨提示:直接輸入 urlreplace 不帶任何參數(shù)表示恢復(fù)原來的樣子。
15.start
Fiddler 開始工作。
16.stop
Fiddler 停止工作。
17.quit
關(guān)閉 Fiddler
18.select
select 后邊跟響應(yīng)的類型(Content-Type),表示選中所有匹配的會(huì)話,比如希望 Fiddler 選中所有的圖片,可以使用 select image; select css 則選中所有的 css 文件;select html 就是選中所有的 html 文件
19.allbut 或 keeponly
與select 類似,不過 allbut 和 keeponly 會(huì)將所有無關(guān)的會(huì)話刪除。比如我只想看圖片,那么我可以 keeponly image,表示將所有與圖片無關(guān)的會(huì)話刪除
20.!dns
!dns 后邊跟一個(gè)域名,執(zhí)行 DNS 查找并在右邊的 LOG 欄打印結(jié)果,如:!dns www.baidu.com
21.!listen
設(shè)置監(jiān)聽的端口,默認(rèn)是 8888
Fiddler不僅可以抓web頁面的HTTP/HTTPS的數(shù)據(jù)報(bào)文, 也可以抓取我們手機(jī)移動(dòng)端的數(shù)據(jù)報(bào)文
這里我主要說明的是本地抓取Android 安卓手機(jī)數(shù)據(jù)報(bào)文
前提條件
手機(jī)必須處于同一個(gè)網(wǎng)絡(luò)當(dāng)中, 并且手機(jī)網(wǎng)絡(luò)代理必須設(shè)置為fiddler,當(dāng)我們的手機(jī)經(jīng)過Fiddler這一層服務(wù)!
那么接下來具體步驟如下:
手機(jī)和電腦必須在同一局域網(wǎng),手機(jī)最好也關(guān)閉4G/5G網(wǎng)絡(luò)流量, 并且使用wifi,讓手機(jī)和fiddler在同一局域網(wǎng)下!
讓android手機(jī)的網(wǎng)絡(luò)進(jìn)出口指向局域網(wǎng)中fiddler服務(wù)地址, 那么我們這里就必須要知道Fiddler的ip地址和端口號(hào)(port)
這里Fiddler的ip地址就是我們當(dāng)前電腦中的本機(jī)ip地址
那么查看我們電腦的 ip地址方法 如下:
win+R 調(diào)出運(yùn)行然后輸入 cmd打開命令行終端窗口,輸入ipconfig, 找到其中的IPv4地址即為本機(jī)ip
如圖
可以對(duì)照一下當(dāng)前所安裝的Fiddler中的ip地址是否一致,你可以直接在fiddler上 將鼠標(biāo)放置于 Online 工具上就會(huì)顯示本機(jī)ip地址,如果一樣那么久可以確保一會(huì)設(shè)置手機(jī)和電腦在同一個(gè)局域網(wǎng)內(nèi)!
在Fiddler中我們還要設(shè)置遠(yuǎn)程連接權(quán)限和端口號(hào)
找到Fiddler菜單欄中的Tools ----> Options---->Connections
勾選Allow remote computers to connect(允許遠(yuǎn)程計(jì)算機(jī)連接) 然后設(shè)置一個(gè)端口,也可以默認(rèn)為8888
如圖
以上所有Fiddler設(shè)置之后最好是重啟一下Fiddler,才可以讓配置生效!
在確定了手機(jī)和fiddler在同一局域網(wǎng)下之后, 那么我們來到android手機(jī)的設(shè)置選項(xiàng)下,找到WLAN
例如:
然后點(diǎn)擊你當(dāng)前所在的wifi網(wǎng)絡(luò)環(huán)境下的名稱
例如
然后選擇代理
如圖
把其中的無改為手動(dòng)
然后返回到上一步,輸入Fiddler的本地ip和設(shè)置Fiddler的端口號(hào)
如圖
那么到此android手機(jī)的網(wǎng)絡(luò)代理設(shè)置 就到此為止, 其他不同型號(hào)的android手機(jī)設(shè)置大同小異,以此類推!
在抓取android手機(jī)數(shù)據(jù)包的時(shí)候 跟 web端也是一樣,都需要配置證書,否則是無法正常進(jìn)行抓包的!
之前已經(jīng)在我們的android手機(jī)上配置好了Fiddler的代理服務(wù)了,那么現(xiàn)在就可以通過ip+port的方式來訪問Fiddler 從而下載對(duì)應(yīng)的證書!
方法如下:
在android手機(jī)上打開(自帶)的瀏覽器,輸入剛剛配置的ip+port來下載證書,
例如:192.168.0.109:8888, 如果不出意外的話就會(huì)出現(xiàn)如下界面:
我們點(diǎn)擊FiddlerRoot certificate(根證書)下載到android手機(jī)上!
如圖
繼續(xù)點(diǎn)擊下載
溫馨提示
這個(gè)時(shí)候可能有些android手機(jī)會(huì)出現(xiàn)以下問題,會(huì)出現(xiàn) 無法安裝證書 因?yàn)闊o法讀取證書文件的字樣
解決方案
在下載之前,你可以手動(dòng)修改證書的后綴名,修改為.crt 就可以了!
當(dāng)我們下載的時(shí)候,就可以點(diǎn)擊編輯按鈕,進(jìn)行文件名的編輯, 最后保存!
如圖
然后在手機(jī)的下載管理中 找到剛剛下載好的證書 并且打開它
如圖
最后點(diǎn)擊保存即為 安裝
完成android手機(jī)證書的安裝!
那么如果你要查看安裝的證書的話, 那么可以在手機(jī)中 打開設(shè)置-->其他設(shè)置-->設(shè)備與隱私-->信任的證書然后點(diǎn)擊用戶,就可以查看到剛剛所安裝好的Fiddler證書
如圖
其他手機(jī)可以在設(shè)置中搜索信任進(jìn)行查找,大同小異!
注意(Notice)
每連一臺(tái)電腦所安裝的fiddler提供的證書都是不一樣的,要記住這個(gè)道理 那么測(cè)試完一臺(tái)電腦之后,如果要在另外一臺(tái)電腦上測(cè)試,記得在證書管理里刪除之前的fiddler證書,因?yàn)檫@個(gè)之前的fiddler證書只對(duì)應(yīng)之前那臺(tái)電腦里面所安裝的fiddler,沒法用于連其他的fiddler, 因此換一臺(tái)電腦,測(cè)試必須重新配置一下手機(jī)證書
我們通過上面的android基本配置就全部結(jié)束了,現(xiàn)在可以愉快的android手機(jī)抓包測(cè)試了
在正式抓包之前,我們還設(shè)置一下Fiddler中的請(qǐng)求過濾
我們通過Fiddler菜單欄中的Tools--->Options-->HTTPS修改..from all processes這一項(xiàng)
把它設(shè)置為from remote clients only 只抓遠(yuǎn)程客戶端請(qǐng)求, 方便我們查看手機(jī)抓包數(shù)據(jù)!
如圖
那么現(xiàn)在打開你的android手機(jī)并且運(yùn)行手機(jī)中的一些app就可以被fiddler所截取到數(shù)據(jù)包了:
如圖
注意:
如果還是無法正常抓取數(shù)據(jù)包,并且手機(jī)也無法加載數(shù)據(jù)的情況下,那么可能還是跟證書不正確有關(guān)系
解決方案
先刪除所有證書再執(zhí)行下面的操作!
那么我們可能需要安裝一個(gè)插件 CertMaker for iOS and Android
插件介紹
iOS devices and Android devices may not work with the default HTTPS interception certificates used by Fiddler. To resolve this incompatibility, you may install a Certificate Generating plugin that generates interception certificates compatible with those platforms.
譯為:
iOS 設(shè)備和 Android 設(shè)備可能無法使用 Fiddler 使用的默認(rèn) HTTPS 攔截證書。要解決此不兼容問題,您可以安裝生成與這些平臺(tái)兼容的攔截證書的證書生成插件
插件下載:https://telerik-fiddler.s3.amazonaws.com/fiddler/addons/fiddlercertmaker.exe
下載之后直接點(diǎn)擊安裝就可以了,但是要關(guān)閉Fiddler否則無法安裝, 然后重啟Fiddler,然后在Fiddler中重置一下所有證書,點(diǎn)擊Fiddler菜單選擇Tools-> Options -> HTTPS -> Actions -> Reset All Certificates進(jìn)行重置證書 ,并且手機(jī)也要重新再一次的下載并配置證書!
如果還是不行可以嘗試 關(guān)閉系統(tǒng)防火墻
如圖
"點(diǎn)贊" "評(píng)論" "收藏"
大家的支持就是我堅(jiān)持創(chuàng)作下去的動(dòng)力!?
?如果以上內(nèi)容有任何錯(cuò)誤或者不準(zhǔn)確的地方,歡迎在下面 留個(gè)言指出、或者你有更好的想法,歡迎一起交流學(xué)習(xí)???????