歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux技術 >> Linux系統中如何從命令行嗅探HTTP流量

Linux系統中如何從命令行嗅探HTTP流量

日期:2017/3/1 17:55:58   编辑:Linux技術

假設你出於某個原因而想嗅探網絡上的實時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並未出現在基本軟件庫中。所以要使用其源代碼來構建它:

  1. ___FCKpd___0nbsp;sudo apt-get install gcc make git libpcap0.8-dev ___FCKpd___0nbsp;git clone https://github.com/jbittel/httpry.git
  2. ___FCKpd___0nbsp;cd httpry ___FCKpd___0nbsp;make
  3. ___FCKpd___0nbsp;sudo make install

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

  1. ___FCKpd___1nbsp;sudo yum install httpry

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

  1. ___FCKpd___2nbsp;sudo yum install gcc make git libpcap-devel ___FCKpd___2nbsp;git clone https://github.com/jbittel/httpry.git
  2. ___FCKpd___2nbsp;cd httpry ___FCKpd___2nbsp;make
  3. ___FCKpd___2nbsp;sudo make install

httpry的基本用法

httpry的基本使用場合如下:

  1. ___FCKpd___3nbsp;sudo httpry -i <network-interface>

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

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

想把原始的HTTP數據包保存到二進制文件中:

  1. ___FCKpd___4nbsp;sudo httpry -i eth0 -b output.dump

回放已保存的HTTP數據包:

  1. ___FCKpd___5nbsp;httpry -r output.dump

請注意:當你使用“-r”選項讀取轉儲文件時,就不需要根權限。

想將httpry的輸出結果保存到文本文件中:

  1. ___FCKpd___6nbsp;sudo httpry -i eth0 -o output.txt

httpry的高級用法

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

  1. ___FCKpd___7nbsp;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一段時間。一旦你獲得了輸出文件,使用下面這個命令,運行一次腳本:

  1. ___FCKpd___8nbsp;cd httpry/scripts ___FCKpd___8nbsp;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數據包,但防患未然總歸不是件壞事。你覺得這款工具如何?謝謝閱讀,希望能幫到大家,請繼續關注腳本之家,我們會努力分享更多優秀的文章。

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

Copyright © Linux教程網 All Rights Reserved