|
Fiddler在使用的過程中經常會碰到一些問題。這章補充一些Fiddler的用法。 2.1 Fiddler必須要做的3個設置Fiddler需要進行3個設置,這樣做使用Fiddler的過程才能順暢。 2.1.1 第1個設置:在Fiddler中安裝證書大部分網站都是使用HTTPS協(xié)議,所以必須安裝證書,這樣才能捕獲HTTPS,如圖2-1所示。 如果證書沒有安裝成功,那么Fiddler只能抓到HTTP請求,抓不到HTTPS請求,如圖2-2所示。所以一定要想辦法把證書安裝好。 圖2-1 Fiddler安裝證書 圖2-2 沒有抓到HTTPS 2.1.2 第2個設置:自動解壓HTTP響應在Fiddler工具欄中選中“Decode”按鈕,如圖2-3所示。這樣就會自動解壓HTTP響應,否則我們看到的HTTP響應是亂碼。 圖2-3 Fiddler選中Decode按鈕 2.1.3 第3個設置:隱藏“Tunner to”請求可以在Fiddler中隱藏“CONNECT Tunnels”請求,如圖2-4所示。隱藏的方法是選擇菜單欄中的Rules→Hide CONNECTs。這樣Fiddler就不會捕獲大量無用的握手驗證請求,如圖2-5所示。這些“Tunnel to”的請求對我們沒什么用處。因為我們平常根本不關心HTTPS是如何建立連接的。我們抓包是為了看HTTP請求和響應的數據內容,抓HTTPS也是看數據內容,而不關心HTTPS的通信是怎么建立的。 圖2-4 在Fiddler中選中Hide CONNECTs 圖2-5 Fiddler中的握手驗證請求 2.2 不允許抓包軟件開發(fā)商并不希望自己的軟件被人抓包,抓包意味著自己的接口全部被人看得一清二楚,存在很多安全隱患。有很多App采取各種措施來防止被抓包。 2.2.1 某些App抓不到包某些App為了不被抓包,直接會在代碼里設置不允許使用代理,這樣Fiddler就抓不到了。 有些App能抓包,說明Fiddler的設置是正確的。某些App不能抓包,原因有很多,如下。
2.2.2 HTTP請求和響應全部加密圖2-6是一個查違章的App的抓包內容,可以看到這個App可以被抓包,但是其HTTP請求和HTTP響應全部被加密了,安全性很高。 圖2-6 查違章App的接口全部被加密 2.2.3 不讓抓包銀行的App對安全性要求很高,所以一般不允許抓包。某款銀行App在用Fiddler抓包的時候,App會提示網絡錯誤,不讓抓包,如圖2-7所示。 圖2-7 某銀行App不讓抓包 2.3 Fiddler抓不到包在使用Fiddler的過程中,有時候會發(fā)現Fiddler抓不到包。下面介紹如何解決抓包失敗的問題。 2.3.1 Fiddler的抓包開關Fiddler有一個抓包的開關。打開狀態(tài)欄的時候,狀態(tài)欄的最左邊有個“Capturing”圖標,如圖2-8所示。如果沒有這個圖標,當然抓不到包了。初學者很容易忘記這個開關。 圖2-8 Fiddler的抓包開關 2.3.2 瀏覽器抓不到包Fiddler能抓包是因為它是一個代理服務器。需要抓包的程序必須把代理指向Fiddler才行。如果瀏覽器抓不到包,可能是因為瀏覽器的代理設置沒有指向Fiddler。我們可以先重啟Fiddler,然后查看瀏覽器的代理服務器設置,或者換不同的瀏覽器試試。 我們先來看一下Fiddler的抓包原理圖,如圖2-9所示。 圖2-9 瀏覽器的抓包原理 如果是某一個瀏覽器抓不到包,解決方案是換其他的瀏覽器。比如IE和Chrome都能抓到,只是Firefox抓不到包,說明Fiddler本身沒有問題,可能是Firefox的代理設置沒有指向Fiddler。 如果是所有的瀏覽器都抓不到包,這說明整個Fiddler都不工作。那么要先重啟Fiddler,再檢查下系統(tǒng)的代理設置,如圖2-10所示。 圖2-10 系統(tǒng)代理設置 設置系統(tǒng)代理的打開方式為:控制面板→Internet選項→連接→局域網設置→代理服務器。 2.3.3 能抓HTTP不能抓HTTPS如果發(fā)現Fiddler可以抓到HTTP的請求,但是抓不到HTTPS的請求,這說明沒有安裝Fiddler的證書或者安裝Fiddler證書失敗。Fiddler可能會提示你安裝證書。解決辦法是重新安裝證書,再重啟Fiddler,如圖2-11所示。 圖2-11 重新安裝證書 重新安裝證書的操作是Options→Actions→Trust Root Certificate。 2.3.4 抓不到手機中的包很多人會碰到這種情況:Fiddler能抓本地計算機瀏覽器的包,但是抓不到手機的包。本地計算機和手機位于同一個網絡,各種配置也正常,但是手機的包就是抓不到。 出現這樣的問題的原因是Fiddler所在的計算機和手機之間的網絡不通。即使Fiddler所在的計算機和手機連的是同一個Wi-Fi,也可能網絡不通。在同一個Wi-Fi下,網絡不一定是通的。操作系統(tǒng)上的防火墻或者其他軟件的設置都會影響網絡的通信。我們需要通過下面的步驟來檢測網絡是否是通的。 第1步:測試Fiddler能否捕獲本地計算機的瀏覽器的包,如果本地瀏覽器都不能抓包,那就說明Fiddler的配置有問題。 第2步:如果Fiddler所在的計算機的IP地址是192.168.0.100,那么Fiddler證書網站的網址是http://192.168.0.100:8888。用計算機的瀏覽器訪問Fiddler證書網站,如圖2-12所示。 圖2-12 Fiddler Echo Service網頁 第3步:在手機沒有設置代理的情況下,在手機上用瀏覽器打開Fiddler的證書網站。 如果網頁打不開,說明網絡不通,原因可能如下。
只有Fiddler證書網站能打開,才能說明手機和計算機的網絡是通的。再去修改手機上的代理設置,Fiddler才能對App進行抓包。 2.3.5 經過上面的設置,還是抓不到包可以考慮換臺計算機、換個手機試試,或者換別的抓包工具試試。 2.3.6 mac OS系統(tǒng)上抓包Fiddler是用C#開發(fā)的,目前對mac OS的支持不太友好?,F在很多人都用Mac筆記本辦公,在mac OS系統(tǒng)上抓包可以考慮用另外兩個工具:瀏覽器開發(fā)者工具和Charles。 2.3.7 Fiddler證書安裝不成功有時候會碰到Fiddler安裝證書不成功的情況,如圖2-13所示。 圖2-13 證書安裝不成功 這種情況一般在Windows7系統(tǒng)中出現,可以試圖用下面介紹的兩種方法來解決。 方法1:從別的機器中復制一個Fiddler根證書“FiddlerRoot.cer”放到Fiddler的安裝目錄下面,然后再重新配置證書,如圖2-14所示。 圖2-14 Fiddler證書 方法2:使用Fiddler證書制作工具來重新制作證書,詳細步驟如下。 第1步:在Fiddler中刪除證書。打開Fiddler,依次打開Tools→Options,取消選中Decrypt HTTP traffic,并且在Actions中單擊“Remove Interception Certificates”,如圖2-15所示。 圖2-15 Fiddler刪除證書 第2步:卸載證書。找到Fiddler的安裝目錄,其中有個unCert.exe文件。如果沒有unCert.exe就不需要卸載,如圖2-16所示。 第3步:使用Fiddler證書制作工具來重新制作證書。下載Certificate Make插件,運行下載的文件之后會生成新的證書。 第4步:在Fiddler中重新配置證書。 圖2-16 Fiddler卸載證書 2.3.8 iOS系統(tǒng)10.3以上,手動信任證書若iOS系統(tǒng)版本是10.3以上,那么證書可能沒有被信任,需要手動設置信任證書。依次打開設置→通用→關于本機→證書信任設置,將Fiddler證書啟用即可,如圖2-17所示。 圖2-17 iOS中啟用Fiddler證書 2.4 Fiddler包太多找不到自己想要的Fiddler啟動后,Web Session列表就會抓到很多HTTP請求,初學者往往會比較迷茫,因為找不到自己要抓的包。下面介紹幾個方法來找到自己要抓的包。 2.4.1 停止抓包最推薦使用這個方法。在抓包之前,先把Web Session里面抓到的數據包全部清空,然后再操作網頁。在抓到想要的包后,就暫停抓包,這個方法簡單、實用。熟練使用這個方法后,就不需要使用其他過濾的方法了。抓包開關如圖2-18所示。 圖2-18 抓包開關 2.4.2 只抓手機,不抓本地的包在專門抓App的包的時候,Fiddler里面混雜了本地計算機和手機App的包,如果只想抓手機App的包,這時候可以選擇“…from remote clients only”,如圖2-19所示。 圖2-19 設置只抓遠程的包 2.4.3 過濾會話Fiddler有非常強大的過濾會話的功能,假如不想看到localhost的數據包,就可以把它隱藏。過濾的設置如圖2-20所示。注意,在設置時兩個Host之間要用分號隔開。 圖2-20 用Filters選項卡隱藏localhost 注意:使用了Filters選項卡后,記得取消Filters選項卡??赡芟麓巫グ臅r候,忘記設置Filters選項卡而抓不到包。很多人犯過這個錯誤。 2.4.4 只抓特定的進程在狀態(tài)欄中選擇Web Browsers或者Non-Browser來選擇進程,如圖2-21所示。此外,工具欄中還有個按鈕:Any Process,單擊這個按鈕把十字圖標拖曳到想要抓包的程序上面,就只會抓特定進程的包,如圖2-22所示。 圖2-21 狀態(tài)欄上按進程過濾 圖2-22 只抓特定的進程 2.4.5 觀察URL和HOST觀察圖2-23中的URL,可知這是登錄相關的數據包。URL的命名都會是有意義的。比如登錄的接口會包含login,注銷的URL中會包含logout。 圖2-23 觀察URL 2.4.6 查看進程發(fā)包進程是計算機中程序的一次運行活動。Fiddler的Process列對應本地Windows進程。通過這一列我們可以知道是哪個進程在發(fā)包,如圖2-24所示。 圖2-24 在Fiddler中查看進程 2.5 HTTPS是否安全Fiddler能分析HTTPS流量是不是意味著HTTPS協(xié)議不安全? HTTPS是安全的,Fiddler抓HTTPS的時候安裝了一個Fiddler的證書,所以Fiddler可以解密HTTPS的內容。HTTPS請求從計算機上發(fā)送到網絡后,HTTPS的內容全部是加密的。 2.6 計算機連接手機熱點抓包在沒有Wi-Fi的情況下,我們用手機開熱點,計算機連接手機的熱點來上網,這個時候計算機上的Fiddler能否抓到手機上的包呢?答案是不能。因為手機開熱點后,采用的是GPRS手機流量上網,這個時候手機不能設置代理服務器的,如圖2-25所示。 圖2-25 WLAN熱點 如果有兩個手機,一臺計算機,那么就可以抓包了。一個手機當成熱點,另外一臺手機和計算機都使用這個熱點上網,手機的代理就可以指向計算機了。 客戶端如何抓包如果程序是用.NET開發(fā)的,那么Fiddler可以抓到包。因為.NET程序默認會使用系統(tǒng)代理。如果程序是用別的語言開發(fā)的,只要這個程序支持用戶自定義代理,那么Fiddler也可以抓到包,比如Fiddler可以抓QQ。 如果客戶端程序不支持代理,那么Fiddler就抓不到包了。 2.7 Fiddler測試App升級Fiddler常用于App的升級測試,我們可以利用Fiddler偽造響應來測試App升級。 2.7.1 App升級原理App是否升級的檢查是在啟動App訪問服務器時進行的,把本地計算機上App的最新版本號與服務器端的最新版本號作對比,如果不一致就提示升級。 App升級的時候,App會發(fā)送一個HTTP請求,來問服務器有沒有最新版。如圖2-26所示,如果沒有最新版,服務器返回的HTTP響應中會說沒有更新。 圖2-26 App沒有新版本 如果有最新版,服務器返回的響應會告知有新版本,并且App端會有彈窗提示,如圖2-27和圖2-28所示。 圖2-27 App有新版本 圖2-28 App更新提示 2.7.2 App升級的測試在實際測試中,我們一般不會去修改服務器,因為修改服務器會遇到下述問題。
用Fiddler來模擬升級比較簡單,如圖2-29所示。 圖2-29 Fiddler模擬 我們用Fiddler偽造一個HTTP響應就可以了??梢杂孟聰帱c的方式修改HTTP響應,或者用Fiddler中的AutoResponder。接下來以堅果云為例介紹一下升級。 2.7.3 堅果云的升級堅果云每次啟動的時候,都會調用一個latestVersion的接口來查詢服務器,看客戶端有沒有更新的版本,如圖2-30所示。 對比HTTP響應中的版本和本地版本,如果服務器返回的版本更高,那么客戶端就會彈出對話框,提醒用戶升級App。 圖2-30 堅果云的升級 2.8 短鏈接短鏈接就是把普通網址轉換成比較短的網址(如https:///8oVtHHyH)。在微博或者其他限制字數的應用里,短鏈接有很多好處:網址短、字符少、美觀、便于發(fā)布和傳播。 我們平常工作中寫郵件使用短鏈接也會讓郵件更加簡潔和美觀。 2.8.1 短鏈接原理解析當我們在瀏覽器里輸入https:///8oVtHHyH時:
2.8.2 使用短鏈接短鏈接的服務提供商有很多,比如:百度短網址http://,如圖2-31所示。 圖2-31 使用百度短網址 2.8.3 Fiddler抓包短鏈接打開Fiddler,再打開瀏覽器,輸入網址https:///8oVtHHyH。用Fiddler抓包短鏈接如圖2-32所示。 圖2-32 Fiddler抓包短鏈接 從圖2-32中可以看到短鏈接的原理很簡單,利用HTTP協(xié)議的跳轉,用301或者302都可以。 2.9 本章小結本章介紹了Fiddler的常用使用技巧,包括抓包設置、抓不到包的解決方法等。讀者可以對照本章排查Fiddler使用過程中遇到的問題。此外,讀者還可以了解用Fiddler測試App升級和短鏈接的概念。 本文摘自:《HTTP抓包之接口自動化測試》 本書的內容都是我多年從事接口測試的經驗總結,非常貼近我們的實際工作,能幫助大家解決實際工作中的難題。 本書的內容比較簡單,實例豐富,讀者閱讀起來會感覺比較輕松、容易上手,讀完本書不需要花費太多時間。通過本書的學習,如果讀者能夠自行開發(fā)出一個訂票工具,或者實現一個電商網站的自動下訂單操作,那么恭喜你,已經掌握了本書的所有知識。 本書的主要內容有HTTP的基礎知識;如何使用Fiddler來抓HTTP包;如何分析HTTP包;如何通過JMeter和Postman等發(fā)送HTTP包,從而實現軟件自動化測試和接口的自動化測試;如何使用抓包工具來實現安全測試和性能測試等;幾個日常生活中應用比較廣泛的綜合實例。 |
|
|