陽光男孩 發表於2011-03-19
開發網際網路應用的過程中,常常會設立或利用網路介面。為了除錯對網路介面的使用,往往需要檢視流入和流出網路介面的網路流量或資料報。「抓包工具」就是一類用於記錄通過網路介面的資料的工具。
我們知道,網路協議是分層設計的,osi模型將網路協議分為了7個層次。不同的抓包工具,可以在網路協議的不同層次上工作。常用的wireshark就是一種在網路層上工作的抓包工具,不僅自帶大量的協議分析器,而且可以通過編寫wireshark外掛程式來識別自定義的協議。雖然wireshark功能強大,但是卻並不能解決所有的抓包問題,其原因在於:
那麼,如何抓取到https請求的明文內容呢?使用fiddler就可以辦到。
fiddler是eric lawrence編寫的http抓包軟體。fiddler工作在應用層上,作為其他程式的http**伺服器。它可以直接抓取並分析http流量,也可以作為「中間人」抓取並分析https流量。
tls是一種端到端的傳輸層加密協議,是https協議的乙個組成部分。訪問https站點時,http請求、響應都通過tls協議在瀏覽器和伺服器之間加密傳輸,並且通過數字證書技術保證資料的保密性和完整性;任何「中間人」、包括**伺服器都只能**資料,而無法竊聽或者篡改資料。
要抓取https流量的明文內容,fiddler必須解密https流量。但是,瀏覽器將會檢查數字證書,並發現會話遭到竊聽。為了騙過瀏覽器,fiddler通過使用另乙個數字證書重新加密https流量。fiddler被配置為解密https流量後,會自動生成乙個名為do_not_trust_fiddlerroot的ca證書,並使用該ca頒發每個網域名稱的tls證書。若do_not_trust_fiddlerroot證書被列入瀏覽器或其他軟體的信任ca名單內,則瀏覽器或其他軟體就會認為https會話是可信任的、而不會再彈出「證書錯誤」警告。
開啟https流量解密功能後,fiddler將會提示使用者將do_not_trust_fiddlerroot證書列入ie瀏覽器的信任ca名單。用於除錯客戶端時,這已經足夠了;firefox使用者也可以很方便的手動匯入do_not_trust_fiddlerroot證書。但是,若要在伺服器上抓取asp.net發出的https請求,這是不夠的——你必須將do_not_trust_fiddlerroot證書匯入「機器帳號」的信任ca名單。
該錄影演示了下列操作:
開啟fiddler的https流量解密功能
將do_not_trust_fiddlerroot證書匯入「機器帳號」的信任ca名單
將php指令碼的**伺服器設定為127.0.0.1:8888,並抓取https請求
fiddler的工作方式是**伺服器(埠號8888)。只要開發框架支援設定http**伺服器,都可以使用fiddler。
#php curl
$ch=curl_init('');
curl_setopt($ch,curlopt_returntransfer,1);
curl_setopt($ch,curlopt_proxy,'127.0.0.1:8888');//設定**伺服器
curl_setopt($ch,curlopt_ssl_verifypeer,0);//若php編譯時不帶openssl則需要此行
$resp=curl_exec($ch);
curl_close($ch);
如果你使用linux伺服器,請將fiddler安裝在一台windows計算機上並在tools - fiddler options - connections勾選allow remote computers to connect,並手動將fiddlerroot.cer匯入linux伺服器的信任ca名單,最後將**伺服器設定成fiddler所在ip的8888埠。
在伺服器上用Fiddler抓取HTTPS流量
開發網際網路應用的過程中,常常會設立或利用網路介面。為了除錯對網路介面的使用,往往需要檢視流入和流出網路介面的網路流量或資料報。抓包工具 就是一類用於記錄通過網路介面的資料的工具。我們知道,網路協議是分層設計的,osi模型將網路協議分為了7個層次。不同的抓包工具,可以在網路協議的不同層次上工作。常用...
伺服器上的 Git 在伺服器上搭建 Git
現在我們將討論如何在你自己的伺服器上搭建 git 服務來執行這些協議。note 這裡我們將要演示在 linux 伺服器上進行一次基本且簡化的安裝所需的命令與步驟,當然在 mac 或 windows 伺服器上同樣可以執行這些服務。事實上,在你的計算機基礎架構中建立乙個生產環境伺服器,將不可避免的使用到...
伺服器上的 Git 在伺服器上搭建 Git
現在我們將討論如何在你自己的伺服器上搭建 git 服務來執行這些協議。note 這裡我們將要演示在 linux 伺服器上進行一次基本且簡化的安裝所需的命令與步驟,當然在 mac 或 windows 伺服器上同樣可以執行這些服務。事實上,在你的計算機基礎架構中建立乙個生產環境伺服器,將不可避免的使用到...