Linux 命令列下嗅探 HTTP 流量的工具:httpry

Dan Nanni發表於2014-11-02

假設由於某種原因,你需要嗅探HTTP站點的流量(如HTTP請求與響應)。舉個例子,你可能在測試一個web伺服器的實驗性功能,或者你在為某個web應用或RESTful服務排錯,又或者你正在為PAC(proxy auto config)排錯或尋找某個站點下載的惡意軟體。不論什麼原因,在這些情況下,進行HTTP流量嗅探對於系統管理、開發者、甚至終端使用者來說都是很有幫助的。

資料包嗅工具tcpdump被廣泛用於實時資料包的匯出,但是你需要設定過濾規則來捕獲HTTP流量,甚至它的原始輸出通常不能方便的停在HTTP協議層。實時web伺服器日誌解析器如ngxtop可以提供可讀的實時web流量跟蹤痕跡,但這僅適用於可完全訪問live web伺服器日誌的情況。

要是有一個僅用於抓取HTTP流量的類似tcpdump的資料包嗅探工具就非常好了。事實上,httpry就是:HTTP包嗅探工具。httpry捕獲HTTP資料包,並且將HTTP協議層的資料內容以可讀形式列舉出來。通過這篇指文章,讓我們瞭解如何使用httpry工具嗅探HTTP流量。

在Linux上安裝httpry

基於Debian系統(Ubuntu 或 LinuxMint),基礎倉庫中沒有httpry安裝包(譯者注:本人ubuntu14.04,倉庫中已有包,可直接安裝)。所以我們需要通過原始碼安裝:

$ 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系統上,執行yum之前使其能夠訪問EPEL repo

$ 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請求/相應。

在大多數情況下,由於傳送與接到的資料包過多導致刷屏很快,難以分析。這時候你肯定想將捕獲到的資料包儲存下來以便離線分析。可以使用'b'或'-o'選項儲存資料包。'-b'選項將資料包以二進位制檔案的形式儲存下來,這樣可以使用httpry軟體開啟檔案以瀏覽。另一方面,'-o'選項將資料以可讀的字元檔案形式儲存下來。

以二進位制形式儲存檔案:

$ 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的原始碼,你會發現原始碼下有一些Perl指令碼,這些指令碼用於分析httpry輸出。指令碼位於目錄httpry/scripts/plugins。如果你想寫一個定製的httpry輸出分析器,則這些腳可以作為很好的例子。其中一些有如下的功能:

  • hostnames: 顯示唯一主機名列表。
  • find_proxies: 探測web代理。
  • search_terms: 查詢及統計在搜尋服務裡面的搜尋詞。
  • content_analysis: 查詢含有指定關鍵的URL。
  • xml_output: 將輸出轉換為XML形式。
  • log_summary: 生成日誌彙總。
  • db_dump: 將日誌檔案資料儲存資料庫。

在使用這些指令碼之前,首先使用'-o'選項執行httpry。當獲取到輸出檔案後,立即使用如下命令執行指令碼:

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

你可能在使用外掛的時候遇到警告。比如,如果你沒有安裝帶有DBI介面的MySQL資料庫,那麼使用db_dump外掛時可能會失敗。如果一個外掛初始化失敗的話,那麼只是這個外掛不能使用,所以你可以忽略那些警告。

當parse_log.pl完成後,你將在httpry/scripts 目錄下看到數個分析結果。例如,log_summary.txt 與如下內容類似。

總的來說,當你要分析HTTP資料包的時候,httpry非常有用。它可能並不被大多Linux使用者所熟知,但會用總是有好處的。你覺得這個工具怎麼樣呢?


via: http://xmodulo.com/2014/08/sniff-http-traffic-command-line-linux.html

作者:Dan Nanni 譯者:DoubleC 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出

相關文章