萬盛學電腦網

您现在的位置: 萬盛學電腦網 >> 作業系統 >  >> Linux 教學

Linux 下使用 httpry 實時嗅探與分析 HTTP 流量完整指南

無論是調試 REST API、排查 Web 洩漏、分析惡意軟件下載行為,還是單純想看看網絡裡跑了什麼 HTTP 請求,httpry 都是比 tcpdump 更直觀、比 Wireshark 更輕量的選擇。它專注於 HTTP 協議層,實時解析並以人類可讀格式輸出請求/響應頭、方法、URL、User-Agent 等關鍵字段。本文涵蓋安裝、基礎/進階用法、數據導出與插件分析全流程。

為什麼選 httpry?

  • 協議感知: 直接顯示 HTTP 方法、狀態碼、Header、Body 片段,無需手寫複雜 BPF 過濾器。
  • 零依賴輕量: 僅依賴 libpcap,單二進制 ~100KB,適合嵌入式/容器環境。
  • 多種輸出模式: 終端實時、文本日誌、二進制 pcap 回放、插件擴展 (MySQL、XML、統計摘要)。
  • 腳本友好: 文本輸出易於 grep/awk 管道處理,Perl 插件系統支援二次開發。

安裝 httpry

Debian / Ubuntu / Linux Mint (源碼編譯)

sudo apt update
sudo apt install -y gcc make git libpcap-dev
git clone https://github.com/jbittel/httpry.git
cd httpry
make
sudo make install

Fedora / CentOS / RHEL (EPEL)

sudo dnf install -y epel-release   # CentOS/RHEL 需此步
sudo dnf install -y httpry

或同樣用源碼編譯 (替換 libpcap-devel)。

基礎用法:實時抓包

# 指定網卡 (用 ip link 或 ifconfig 確認名稱,如 eth0, ens33)
sudo httpry -i eth0

輸出示例:

2024-05-20 14:32:11  192.168.1.5  192.168.1.100  >  GET  https://example.com/api/v1/users  HTTP/1.1
2024-05-20 14:32:11  192.168.1.100  192.168.1.5  <  HTTP/1.1  200  OK  application/json  1024

欄位含義: 時間戳 | 源IP | 目的IP | 方向(>請求/<響應) | 方法/狀態碼 | URL/原因短語 | 協議版本 | Content-Type | Content-Length

進階捕獲控制

1. 過濾 HTTP 方法

# 僅捕獲 GET 和 HEAD
sudo httpry -i eth0 -m get,head

2. 持久化存儲

sudo httpry -i eth0 -b traffic.dumpsudo httpry -i eth0 -o traffic.log
模式命令用途
二進制原始包離線回放、Wireshark 深度分析、證據保全
文本日誌文本檢索、腳本處理、長期歸檔

回放二進制文件 (無需 root):

httpry -r traffic.dump

插件系統:將原始日誌變為可視化洞察

源碼目錄 scripts/plugins/ 預置多種分析腳本:

  • hostnames:統計唯一主機名與計數
  • find_proxies:檢測代理特徵 (Via、X-Forwarded-For 等)
  • search_terms:提取搜索引擎關鍵詞
  • content_analysis:關鍵詞 URL 過濾
  • xml_output:轉換為 XML 便於程式解析
  • log_summary:生成流量摘要報告
  • db_dump:導入 MySQL 做歷史查詢

一鍵分析流程

生成文件示例:

  • log_summary.txt:總請求數、唯一主機數、Top 10 URL、狀態碼分布等
  • hostnames.txt:主機名清單
  • search_terms.txt:搜索詞統計
  • xml_output.xml:結構化數據

log_summary.txt 示例輸出

實戰場景速查

sudo httpry -i eth0 -m post,put,patch -o api_debug.logsudo httpry -i eth0 -o suspect.log | grep -iE '\.(exe|apk|sh|php)$'sudo httpry -i eth0 | grep 'api.example.com'sudo httpry -i eth0 -o - | logstash -f http.conf (需自定義 grok)docker run --rm --net=host --cap-add=NET_RAW jbittel/httpry -i eth0
場景命令範例
調試 API 介面
排查惡意下載
監控特定域名
導入 ELK Stack
容器網絡抓包

注意事項與最佳實踐

  1. 權限: 抓包需 CAP_NET_RAW 或 root;讀取 dump 文件不需要。
  2. 性能: 高流量下終端輸出會成為瓶頸,生產環境務必用 -o 或 -b 落盤。
  3. HTTPS: httpry 無法解密 TLS 加密流量。如需分析 HTTPS,需配合 mitmproxy (中間人) 或導入會話密鑰至 Wireshark。
  4. drop 統計:運行時按 Ctrl+C 會顯示丟包統計,若 drop 非零,說明內核緩衝區溢出,需增大 /proc/sys/net/core/netdev_max_backlog 或使用 -b 寫入磁盤。

總結

httpry 以「專注 HTTP、輕量高效、輸出多樣」填補了 tcpdump 過於底層與 Wireshark 過於笨重之間的空白。掌握 -m 過濾、-b/-o 持久化、插件分析三大核心技能,即可應對 90% 的 HTTP 流量排查場景。下次遇到「為什麼這個 API 返回 500?」時,打開 httpry,真相就在數據包裡。

copyright © 萬盛學電腦網 all rights reserved