出于调试目的,我想监视网络接口上的 http 请求。
使用幼稚的tcpdump命令行,我得到了太多底层信息,而我需要的信息却没有很清楚地表示出来。
将流量转储tcpdump到文件然后使用wireshark的缺点是它不是即时的。
我想像这样的工具用法:
$ monitorhttp -ieth0 --only-get --just-urls
2011-01-23 20:00:01 GET http://foo.example.org/blah.js
2011-01-23 20:03:01 GET http://foo.example.org/bar.html
...
Run Code Online (Sandbox Code Playgroud)
我正在使用 Linux。
我正在寻找一个命令行工具来侦听给定的部分,很高兴地排除每个 HTTP POST 请求并将其转储。
我想将它用于测试目的,即用于测试发出 HTTP POST 请求的客户端。
这意味着我正在搜索对应物curl -F(我可以使用它来将测试 HTTP POST 发送到 HTTP 服务器)。
也许类似socat TCP4-LISTEN:80,fork,bind=127.0.0.1 ...- 但 socat 是不够的,因为它不谈 HTTP。
我想要一些可以让我:
请不要用WireShark回答。我知道 WireShark 并且我已经多次使用它,它是一个很棒的应用程序。我想要一些将它的捕获限制为仅应用程序层和 HTTP(S) 流量并忽略其他 Internet 协议套件层的东西。此外,它没有我上面列出的一些功能。
我想使用 tcpflow 来监控https请求。我已经阅读了有关如何监控 http 流量的教程,但是当我使用 https 连接到主机时,输出是乱码。我以下列方式使用 tcpflow:
sudo tcpflow -s -c -i eth0 src or dst host api.linkedin.com
Run Code Online (Sandbox Code Playgroud) 我想记录来自客户请求的自定义标头。我已将“$http_my_header”添加到我的 log_format 中,并且很好地记录了 POST 请求。另一方面,所有 GET 请求都记录为空值。
GET请求示例:
GET /pws HTTP/1.1
upgrade: websocket
connection: Upgrade
sec-websocket-key: XXXX
host: XXXX
sec-websocket-origin: XXXX
sec-websocket-version: 13
X-Plumbr-sessionId: XXXX
X-Plumbr-accountId: XXXX
X-Plumbr-build: SNAPSHOT
Run Code Online (Sandbox Code Playgroud)
我的 nginx log_format 包含
"$http_x_plumbr_accountid" "$http_x_plumbr_build"
Run Code Online (Sandbox Code Playgroud)
GET 请求中的日志记录头是否需要一些特殊的配置?