需要即時觀察 HTTP 請求/回應、除錯 REST API、排查惡意下載、或分析代理自動配置(PAC)?httpry 專為 HTTP 協議設計,比 tcpdump 更易讀、比 ngxtop 不需存取日誌、比 Wireshark 更輕量。本文涵蓋安裝、即時抓包、儲存/回放、方法過濾、Perl 腳本深度分析完整流程。
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
# 啟用 EPEL (RHEL/CentOS)
sudo dnf install -y epel-release # Fedora 不需要
sudo dnf install -y httpry
# 或源碼編譯(版本較新)
sudo dnf install -y gcc make git libpcap-devel
git clone https://github.com/jbittel/httpry.git
cd httpry && make && sudo make install
sudo pacman -S httpry
# 指定網卡介面(用 ip link 或 ifconfig 確認名稱,如 eth0、ens33)
sudo httpry -i eth0
輸出範例(即時滾動):
2024-01-15 10:30:45 192.168.1.100 192.168.1.200 > GET https://example.com/api/users HTTP/1.1
2024-01-15 10:30:45 192.168.1.200 192.168.1.100 < HTTP/1.1 200 OK application/json
欄位:時間、來源 IP、目的 IP、方向(> 請求 / < 回應)、方法、URL、版本、狀態碼、Content-Type。
# 儲存
sudo httpry -i eth0 -b output.dump
# 回放(無需 root)
httpry -r output.dump
sudo httpry -i eth0 -o output.txt
| 參數 | 功能 | 範例 |
|---|---|---|
-m | 過濾 HTTP 方法 | sudo httpry -i eth0 -m get,post,put |
-d | 背景執行(daemon 模式) | sudo httpry -i eth0 -d -o /var/log/httpry.log |
-f | 自訂輸出格式(參考 man httpry) | sudo httpry -i eth0 -f "timestamp,source-ip,dest-ip,method,url" |
-n | 不解析主機名(加快速度) | sudo httpry -i eth0 -n |
-q | 安靜模式(不輸出到 stdout) | 配合 -o 或 -b 使用 |
原始碼目錄 httpry/scripts/plugins/ 含多個即用腳本:
| 腳本 | 功能 |
|---|---|
hostnames.pl | 統計唯一主機名與數量 |
find_proxies.pl | 偵測 Web 代理 |
search_terms.pl | 提取搜尋引擎關鍵字 |
content_analysis.pl | 搜尋 URL 中的關鍵字 |
xml_output.pl | 轉換為 XML 格式 |
log_summary.pl | 產生日誌摘要報表 |
db_dump.pl | 匯入 MySQL 資料庫(需 DBI/DBD::mysql) |
# 1. 先擷取一段流量存成文本
sudo httpry -i eth0 -o /tmp/httpry.log -t 300 # 抓 5 分鐘
# 2. 執行分析腳本
cd httpry/scripts
perl parse_log.pl -d ./plugins /tmp/httpry.log
完成後在 scripts/ 目錄產生 *.txt/*.xml 報告,如 log_summary.txt:
Total requests: 12,345
Unique hosts: 87
Top 10 URLs: ...
Method distribution: GET 85%, POST 12%, HEAD 3%
Response codes: 200 11,200 | 304 800 | 404 200 | 500 45
sudo httpry -i eth0 -m get,post -f "timestamp,method,url,status-code,content-type" | grep "/api/v1/orders"
sudo httpry -i eth0 -o /tmp/traffic.log
# 事後分析
grep -E "\.(exe|apk|sh|php|jar)(\?|$)" /tmp/traffic.log
awk '$NF > 1000000' /tmp/traffic.log # 依 Content-Length 找大檔案
sudo httpry -i eth0 -m get -f "method,url" | grep -E "(wpad|proxy\.pac|pac\.js)"
tcpdump -i eth0 -w http.pcap port 80 → Wireshark 深度分析 TCP 重傳、握手、TLS 解密。httpry → 快速掌握 HTTP 語義層面(方法、URL、狀態碼、Header)。tcpdump 存 pcap,httpry 即時看或存文本。-i)。PF_RING、DPDK 或專用網卡。httpry 以「專注 HTTP、輕量、可腳本化」填補了 tcpdump 與 Wireshark 之間的空白。無論是開發除錯、安全審計、流量審計,幾條指令即可獲得可讀、可分析的 HTTP 流量資料,是 Linux 系統管理員與開發者工具箱的必備利器。
Oracle Linux 5 遠端 Telnet 出現 Unencrypted connection 拒絕連線解決法
Linux fuser 工具實戰:查詢檔案/目錄/連接埠/檔案系統佔用進程並一鍵殺掉
Linux more 指令完整操作指南:分頁檢視、搜尋、跳轉、編輯器呼出
Linux 取得指令幫助的六大管道:內建、man、info、文件、原始碼、搜尋引擎
Linux 下優化 Chrome 字體渲染:Fontconfig 微調 + Stylish 強制指定字體
Linux 修改 IP 位址完整指令集:即時生效 vs 永久生效、NetworkManager/nmcli 現代做法