如何在Linux上從命令列嗅探HTTP流量

pythontab發表於2014-10-23

假設你出於某個原因而想嗅探網路上的實時HTTP Web流量(比如HTTP請求和回應)。比如說,你可能在測試網站伺服器的試驗性功能,或者在除錯Web應用程式或充分利用REST的服務,抑或是你想要為PAC(代理自動配置)排查故障,或檢查從某個網站偷偷下載的任何惡意軟體檔案。不管出於什麼原因,嗅探HTTP流量大都有幫助,對系統管理員、開發人員、甚至終端使用者來說都是如此。

雖然tcpdump等資料包嗅探工具廣泛用於實時的資料包轉儲,你還是需要建立合理的過濾機制,以便只捕獲HTTP流量;即使那樣,通常無法很容易地在HTTP協議層面解讀它們的原始輸出。ngxtop等實時網站伺服器日誌分析工具提供了人類可讀的實時網站流量痕跡,但只有在完全訪問實時網站伺服器日誌的情況下才適用。

雖然擁有tcpdump之類的嗅探工具不錯,但只針對HTTP流量。實際上,httpry正是我們所需的一款HTTP資料包嗅探工具。httpry可捕獲網路上的實時HTTP資料包,並且以一種人類可讀的格式,顯示HTTP協議層面的內容。我們在本教程中將看看如何使用httpry來嗅探HTTP流量。

將httpry安裝到Linux上

在基於Debian的系統上(Ubuntu或Linux Mint),httpry並未出現在基本軟體庫中。所以要使用其原始碼來構建它:

$ sudo apt-get install gcc make git libpcap0.8-dev
$ git clone https://github.com/jbittel/httpry.git
$ cd httpry
$ make
$ sudo make install

在Fedora、CentOS或RHEL上,你可以使用yum來安裝httpry,如下所示。在CentOS/RHEL上,先啟用EPEL軟體庫,再執行yum。

$ sudo yum install httpry

如果你仍想在基於RPM的系統上使用原始碼來構建httpry,很容易做到這一點,只要:

$ sudo yum install gcc make git libpcap-devel
$ git clone https://github.com/jbittel/httpry.git
$ cd httpry
$ make
$ sudo make install

httpry的基本用法

httpry的基本使用場合如下:

$ sudo httpry -i <network-interface>

httpry隨後偵聽某個特定的網路介面,並實時顯示捕獲的HTTP請求/回應。

不過在大多數情況下,由於大量資料包進進出出,你會看到快速滾動的輸出結果。所以,你應該儲存已捕獲的HTTP資料包以便離線分析。為此,使用“-b”或“-o”選項。“-b”選項讓你可以將原始的HTTP資料包儲存到二進位制檔案中,然後可以使用httpry回放HTTP資料包。另一方面,“-o”選項將httpry人類可讀的輸出結果儲存到文字檔案中。

想把原始的HTTP資料包儲存到二進位制檔案中:

$ sudo httpry -i eth0 -b output.dump

回放已儲存的HTTP資料包:

$ httpry -r output.dump

請注意:當你使用“-r”選項讀取轉儲檔案時,就不需要根許可權。

想將httpry的輸出結果儲存到文字檔案中:

$ sudo httpry -i eth0 -o output.txt

httpry的高階用法

如果你只想監視特定的HTTP方法(比如GET、POST、PUT、HEAD和CONNECT等),可以使用“-m”選項:

$ sudo httpry -i eth0 -m get,head

如果你下載了httpry的原始碼,就會注意到原始碼隨帶一系列有助於分析httpry輸出結果的Perl指令碼。這些指令碼位於httpry/scripts/plugins目錄中。如果你想編寫自定義的指令碼來分析httpry的輸出結果,這些指令碼就是可供參考的好例子。其中一些功能如下:

•hostnames:顯示獨特主機名稱和主機數量的列表。

•find_proxies:檢測網站代理系統。

•search_terms:查詢並計數搜尋服務中輸入的搜尋詞語。

•content_analysis:查詢含有特定關鍵詞的URL。

•xml_output:將輸出結果轉換成XML格式。

•log_summary:生成日誌摘要。

•db_dump:將日誌檔案資料轉儲到MySQL資料庫中。

在使用這些指令碼之前,先使用“-o”選項執行httpry一段時間。一旦你獲得了輸出檔案,使用下面這個命令,執行一次指令碼:

$ cd httpry/scripts
$ perl parse_log.pl -d ./plugins <httpry-output-file>

你可能會遇到幾個外掛的警告資訊。比如說,如果你沒有建立帶DBI介面的MySQL資料庫,db_dump外掛就可能會出錯。要是某個外掛未能初始化,它會自動被禁用。所以,你可以忽視那些警告資訊。

在parse_log.pl完成之後,你會在httpry/scripts目錄下看到許多分析結果(*.txt/xml)。比如說,log_summary.txt看起來就像下面這樣:

總而言之,如果你碰到需要解讀實時HTTP資料包的情況,httpry就幫得上大忙。普通的Linux使用者可能不常解讀實時HTTP資料包,但防患未然總歸不是件壞事。你覺得這款工具如何?

相關文章