Fiddler抓包原理和使用詳解

iddler抓包工具在APP開發過程當中使用很是頻繁,對開發者理解HTTP網絡傳輸原理以及分析定位網絡方面的問題很是有幫助。今天抽點時間出來總結一下Fiddler在實際開發過程當中的應用。
瀏覽器


我開發過程當中使用的比較多的抓包工具主要有MiniSniffer,Fiddler和Wireshark。其中MiniSniffer是一款體積小巧的老牌網絡抓包工具,嗅探、捕獲各類程序開啓的網絡鏈接數據。Wireshark是一款很是流行,功能十分強大的網絡數據分析工具,能夠顯示網絡封包的詳細信息,須要網絡協議有必定的瞭解才比較容易看懂Wireshark。Fiddler是一款定位http/https調試的工具,能記錄全部客戶端和服務器的http和https請求,容許你監視,設置斷點,甚至修改輸入輸出數據。若是平時開發過程當中只是涉及到http/https上層網絡協議的話,使用Fiddler足夠了,這裏主要總結下Fiddler的使用。
本文涉及的內容有:安全

  1. Fiddler概述
  2. Fiddler工做原理
  3. Fiddler抓取Https報文原理
  4. Fiddler基本配置安裝
  5. Fiddler抓取Https配置安裝
  6. FiddlerCertMaker插件安裝
  7. 手機端證書安裝

 

1、概述

Fiddler是一款免費且功能強大的數據包抓取軟件。它經過代理的方式獲取程序http通信的數據,能夠用其檢測網頁和服務器的交互狀況,可以記錄全部客戶端和服務器間的http請求,支持監視、設置斷點、甚至修改輸入輸出數據等功能。fiddler包含了一個強大的基於事件腳本的子系統,而且可以使用.net框架語言擴展。服務器

2、Fiddler工做原理

Fiddler是位於客戶端和服務器端之間的HTTP代理, 它可以記錄客戶端和服務器之間的全部 HTTP(S)請求,能夠針對特定的HTTP(S)請求,分析網絡傳輸的數據,還能夠設置斷點、修改請求的數據和服務器返回的數據。
Fiddler在瀏覽器與服務器之間創建一個代理服務器,Fiddler工做於七層中的應用層,可以捕獲經過的HTTP(S)請求。Fiddler啓動後會自動將代理服務器設置成本機,默認端口爲8888。Fiddler不只能記錄PC上瀏覽器的網絡請求數據,還能夠記錄同一網絡中的其餘設備的HTTP(S)請求數據。數據傳遞流程大體以下:

1) 客戶端像WEB服務器發送HTTP(S)請求時,請求會先通過代理Fiddler代理服務器。
2) Fiddler代理服務器截取客戶端的請求報文,再轉發到WEB服務器,轉發以前能夠作一些請求報文參數修改的操做。
3) WEB服務器處理完請求之後返回響應報文,Fiddler代理服務器會截取WEB服務器的響應報文。
4) Fiddler處理完響應報文後再返回給客戶端。網絡

3、Fiddler抓取HTTPS原理

如今APP中的數據傳輸基本上都使用HTTS傳輸,傳輸的數據都是通過加密的,這增長了咱們分析數據包的難度,還好Fiddler除了能夠抓取HTTP數據包,還能夠抓取HTTPS數據包。因爲HTTPS傳輸須要使用到CA證書,因此抓取抓取HTTPS數據包時須要作一些特殊配置。Fiddler截取HTTPS報文的流程大體以下:

1) 客戶端請求創建HTTPS連接,發送客戶端支持的加密協議及版本列表等信息給服務器端。
2) Fiddler接受客戶端請求並假裝成客戶端向WEB服務器發送相同的請求。
3) WEB服務器收到Fiddler的請求之後,從請求中篩選合適的加密協議。並返回服務器CA證書,證書中包括公鑰信息。
4) Fiddler收到WEB服務器的響應後保存服務器證書並自簽名一個CA證書,假裝成服務器,把該證書下發給客戶端。
5) 客戶端驗證證書合法性。(Fiddler可否抓取到HTTPS報文關鍵看這一步)
6) 客戶端生產對稱密鑰,經過證書的公鑰加密發送給服務器。
7) Fiddler攔截客戶端的請求之後,使用私鑰解密該報文,獲取對稱加密祕鑰,並使用服務器證書中帶的公鑰加密該對稱密鑰發送給WEB服務器。此時對稱密鑰已經泄露了,之後可使用該祕鑰界面客戶端和服務器端傳輸的數據。
8) WEB服務器接收到客戶端發送的加密的對稱密鑰後使用私鑰解密,並使用對稱密鑰加密測試數據傳給客戶端。
9) Fiddler使用前面獲取的對稱密鑰解密報文。
10) 客戶端驗證數據無誤之後HTTPS鏈接就創建完成,客戶端開始向服務器發送使用對稱密鑰加密的業務數據
11) Fiddler使用前面獲取的對稱密鑰解密客戶端發送的數據並從新加密轉發給客戶端。app

4、Fiddler配置流程

1. 下載安裝

a) 能夠到官網下載Fiddler免費安裝包:https://www.telerik.com/fiddler。因爲舊版本的Fiddler抓包HTPPS時須要用到FiddlerCertMaker插件,因此我這裏打包了一個壓縮包,包含fiddler和FiddlerCertMaker,可點擊這裏下載。

b) 點擊Fiddler安裝文件(我這裏演示用的是Fiddler5.0版本)安裝Fiddler。框架

2. Fiddler基本配置

若是隻是須要監聽本機瀏覽器HTTP數據包的話不須要作任何額外配置,打開Fiddler便可直接使用。通常咱們須要監聽遠程終端設備的網絡請求,須要作如下配置。打開Fiddler,在菜單欄中選擇Tools->Options->Connections。輸入監聽端口(默認是8888),選擇Allow remotecomputers to connect,點擊確認而後重啓Fiddler。

因爲咱們須要監手機端的網絡請求,因此還須要對手機端進行設置。首先確保手機網絡和安裝Fiddler的電腦網絡處於同一個wifi網絡中。能夠點擊Fiddler主界面的右上角的「Online」按鈕查看Fiddler所在主機的主機名和IP地址,配置手機網絡時須要使用到這個IP地址。
工具

打開手機網絡設置,選擇跟Fiddler主機在統一網絡,打開wifi設置界面,進入wifi的高級設置(不一樣手機設置不同,有一些手機長按選中的wifi名稱能夠出來,有一些手機是點擊wifi名稱後面的按鈕,本身嘗試)。Fiddler自己就是代理服務器,在wifi高級設置中的代理欄下面選擇手動設置,設置輸入Fiddler主機的IP地址(上一步顯示的IP)和監聽端口號(前面默認8888那個),點擊確認。

這些配置按成之後,你在APP中打開有網絡請求的操做,便可在Fiddler中看到。

在右邊的Inspectors窗口中能夠看到這個請求的請求報文和響應報文信息。

以上配置只能監聽到HTTP報文,對於HTTPS報文沒法顯示內容,還須要作其餘配置。測試

3. Fiddler抓包HTTPS

前面也講了,HTTPS數據報文傳輸的時候涉及到證書及數據加密的問題,因此Fiddler須要抓取HTTPS報文的話還須要作其餘配置。
首先仍是打開Fiddler配置:Tools->Options->HTTPS:

勾選Capture HTTPS CONNECTS和Decrypt HTTPS traffic選項,若是隻是想抓取本機或者遠程終端的數據報文,能夠在…from all processes這個下拉框中選擇。這裏還有一點須要注意的就是,低版本的Fiddler自簽名的CA證書有一些問題,後面導入到手機上時無效,這裏就須要安裝上面說的FiddlerCertMaker插件。安裝後要重啓Fiddler,若是安裝成功在上圖Certificates generated by CertEnroo engine的位置的內容就會顯示安裝的FiddlerCertMaker插件信息。
設置完成之後點擊OK,重啓Fiddler。此時在手機端操做一些有https傳輸的app就會發現能夠看到傳輸的內容,可是有侷限性,只有設置了信任全部證書的APP中的HTTPS報文才能查看到,這類APP是很是不安全的。若是須要抓取大部分HTTPS報文怎麼辦呢?
你們都知道手機系統中集成了系統認爲可信的CA根證書,若是服務器的證書是這些機構頒發了,HTTPS請求時系統才認爲是安全的,不然SSL握手失敗(前提是APP中使用系統默認證書信任機機制)。Fiddler自簽名證書確定不在系統信任的證書列表中,那怎麼辦呢?咱們能夠在手機中把Fiddler自簽名的證書導入到信任證書列表中就能夠解決這個問題了。
接下來打開手機中的瀏覽器,在地址欄輸入Fiddler監聽的IP:端口,好比:192.168.1.106:8888。

點擊頁面中的FiddlerRoot Certificate,下載並安裝證書(若是下載了沒有自動提示安裝,可進入設置->系統安全->從存儲設備安裝中手動安裝)。

輸入證書名稱,這裏命名fiddler,點擊確認。若是安裝成功在系統安全->信任的憑據->用戶中能夠看到剛纔安裝的證書(若是證書名稱是亂碼,多是Fiddler生成的證書有問題,須要安裝FiddlerCertMaker插件,從新操做)。
咱們在手機端打開有HTTPS連接的APP發現能夠抓取HTTPS中的數據報文了。


這樣就大功告成了,你們發現大部分HTTPS請求是能夠抓取到的。你們有沒有發現好像HTTPS傳輸也不是100%安全,怎麼保證不被抓包呢,下次整理一篇文章總結一下怎麼防止APP被抓包。加密

5、總結

以上哪裏寫的不對或者有待改進,歡迎你們提意見,謝謝!
原文出處:http://www.luoxudong.com/?p=306spa

相關文章
相關標籤/搜索