ngrep怎样过滤HTTP头信息

联启 网络工具 15

本文目录导读:

ngrep怎样过滤HTTP头信息-第1张图片-电脑手机工具软件下载 - 免费实用工具合集 | 联启科技

  1. 过滤特定的请求方法(例如:只查看 POST 请求)
  2. 过滤包含特定请求头的 HTTP 包(例如:Authorization
  3. 过滤响应头(例如:Set-CookieContent-Type
  4. 过滤包含特定 User-Agent 的请求
  5. 过滤请求的路径或域名(HTTP Host 头)
  6. 多条件组合过滤(使用 and 逻辑)
  7. 完整抓取 HTTP 头部(包括请求行和头部)
  8. 抓取包含特定 HTTP 状态码的响应(如 404)
  9. 重要提示
  10. 示例:实时监控所有包含 password 字段的 HTTP POST 请求

ngrep 是一个强大的网络层抓包工具,虽然不如 Wireshark 那样功能全面,但通过正则表达式可以直接在应用层(HTTP 协议)进行精确匹配。

要使用 ngrep 过滤 HTTP 头信息,核心思路是利用 正则表达式 匹配 HTTP 请求或响应头的特定字段。

以下是几种常见的过滤场景及命令示例:

过滤特定的请求方法(只查看 POST 请求)

HTTP 请求行以方法名开头(如 GETPOST)。

# 过滤所有 HTTP POST 请求(抓取 80 端口)
ngrep -q -W byline "^POST" port 80
# 过滤所有 HTTP GET 请求
ngrep -q -W byline "^GET" port 80
  • -q:静默模式,减少非匹配信息输出。
  • -W byline:按行显示,让输出更易读(对于头部显示至关重要)。

过滤包含特定请求头的 HTTP 包(Authorization

如果你想看包含 Authorization 头的所有请求:

ngrep -q -W byline "Authorization:" port 80

如果你想看包含特定 Cookie 头的请求:

ngrep -q -W byline "Cookie:.*sessionid" port 80

过滤响应头(Set-CookieContent-Type

ngrep 不区分请求和响应,它匹配网络层的数据,如果你想看服务器返回的头部,直接匹配头部字段即可:

# 查看服务器返回的 Set-Cookie 响应头
ngrep -q -W byline "Set-Cookie:" port 80
# 查看服务器返回的 Content-Type
ngrep -q -W byline "Content-Type:" port 80

过滤包含特定 User-Agent 的请求

User-Agent 通常在请求头中,可以使用正则匹配:

# 匹配包含 "Mozilla" 的 User-Agent 包
ngrep -q -W byline "User-Agent:.*Mozilla" port 80
# 匹配 curl 发起的请求
ngrep -q -W byline "User-Agent:.*curl" port 80

过滤请求的路径或域名(HTTP Host 头)

如果你想监控发往特定域名的 HTTP 流量:

# 监控 Host 头为 "example.com" 的流量
ngrep -q -W byline "Host: example.com" port 80
# 监控请求路径中包含 "api" 的流量(注意:路径在请求行,而非头部)
ngrep -q -W byline "^(GET|POST|PUT|DELETE).*/api/" port 80

多条件组合过滤(使用 and 逻辑)

ngrep 本身不支持逻辑 AND,但你可以利用正则写得更长一些,查找 POST 请求且包含 JSON 数据的包:

ngrep -q -W byline "^POST.*HTTP/1.1.*Content-Type: application/json" port 80

完整抓取 HTTP 头部(包括请求行和头部)

如果你希望看到完整的 HTTP 头部(不限于某一行),可以使用 -t 显示时间戳,并使用 -d 指定网卡:

sudo ngrep -t -W byline -d eth0 "Host:" port 80

抓取包含特定 HTTP 状态码的响应(如 404)

# 注意:状态码在响应行,不在头部,但可以通过正则匹配第一行
ngrep -q -W byline "HTTP/1.1 404" port 80
参数 作用
-W byline 按行显示,强烈建议加上,否则头部信息会粘在一起
-q 只打印匹配的数据包,不打印统计和匹配过程
-d eth0 指定网卡(默认监听第一个可用网卡)
port 80 过滤端口(抓 HTTP 必须指定)
"pattern" 正则表达式模式,匹配包的任何部分

重要提示

  1. 默认只抓取 TCP 负载ngrep 默认只抓取应用层数据(如 HTTP 头部和 body),不会抓取 TCP/IP 头,因此非常适合查看头部内容。
  2. HTTPS 无效ngrep 只能过滤 明文 HTTP 流量,对于 HTTPS,你需要先解密(例如通过 MITM 代理),或者使用 tshark / Wireshark 等工具。
  3. 大小写敏感ngrep 默认大小写敏感,HTTP 头部是大小写不敏感的,如果你担心大小写变体(如 host: vs Host:),在正则中写 [Hh][Oo][Ss][Tt]: 会比较麻烦,通常实践中,大多数服务器和客户端都遵循标准的 Host: 写法。

示例:实时监控所有包含 password 字段的 HTTP POST 请求

sudo ngrep -q -W byline "^POST.*HTTP.*password" port 80

ngrep 过滤 HTTP 头的核心就是 -W byline 加上针对特定头部字段或请求行的正则匹配。

标签: ngrep HTTP头过滤

抱歉,评论功能暂时关闭!