max*_*zig 32 http-logging http
我正在寻找一个命令行工具来侦听给定的部分,很高兴地排除每个 HTTP POST 请求并将其转储。
我想将它用于测试目的,即用于测试发出 HTTP POST 请求的客户端。
这意味着我正在搜索对应物curl -F
(我可以使用它来将测试 HTTP POST 发送到 HTTP 服务器)。
也许类似socat TCP4-LISTEN:80,fork,bind=127.0.0.1 ...
- 但 socat 是不够的,因为它不谈 HTTP。
Tob*_*ias 57
我自己也在寻找这个并遇到了 Node.js http-echo-server:
npm install http-echo-server -g
PORT=8081 http-echo-server
Run Code Online (Sandbox Code Playgroud)
它接受所有请求,并将包括标头在内的完整请求回显到命令行。
ger*_*ijk 17
像nc
, 之类的简单核心命令行工具socat
似乎无法处理正在发生的特定 HTTP 内容(数据块、传输编码等)。因此,与与真正的 Web 服务器交谈相比,这可能会产生意外的行为。因此,我的第一个想法是分享我所知道的设置小型 Web 服务器并使其只做您想做的事情的最快方法:转储所有输出。
我能想到的最短的使用Python Tornado:
#!/usr/bin/env python
import tornado.ioloop
import tornado.web
import pprint
class MyDumpHandler(tornado.web.RequestHandler):
def post(self):
pprint.pprint(self.request)
pprint.pprint(self.request.body)
if __name__ == "__main__":
tornado.web.Application([(r"/.*", MyDumpHandler),]).listen(8080)
tornado.ioloop.IOLoop.instance().start()
Run Code Online (Sandbox Code Playgroud)
替换该pprint
行以仅输出您需要的特定字段,例如self.request.body
或self.request.headers
。在上面的示例中,它在所有接口上侦听端口 8080。
(我非常面向 Python,抱歉)
如果您不喜欢它的输出方式,请无论如何运行它并尝试tcpdump
这样:
tcpdump -i lo 'tcp[32:4] = 0x484f535420'
Run Code Online (Sandbox Code Playgroud)
查看所有 HTTP-POST 请求的真实原始转储。或者,只需运行 Wireshark。
小智 8
使用nc
(发音为“ netcat ”)。
你告诉它监听哪个端口
nc -kl 8888
Run Code Online (Sandbox Code Playgroud)
然后在单独的终端窗口中向其发送请求
curl localhost:8888 -d hello=world
Run Code Online (Sandbox Code Playgroud)
它会打印您发送给它的数据,在本例中是 HTTP 请求:
POST / HTTP/1.1
Host: localhost:8888
User-Agent: curl/7.84.0
Accept: */*
Content-Length: 11
Content-Type: application/x-www-form-urlencoded
hello=world
Run Code Online (Sandbox Code Playgroud)
该-k
选项意味着它将监听请求并无限期地打印它们。如果没有该选项(即nc -l 8888
),它将在第一个请求后退出。
小智 5
https://hub.docker.com/r/jmalloc/echo-server/
跑
$ docker run -t --rm -p 8080:8080 jmalloc/echo-server
Unable to find image 'jmalloc/echo-server:latest' locally
latest: Pulling from jmalloc/echo-server
fbf67b0844fa: Pull complete
Digest: sha256:617a99b927c3b761621681eb4716582260391c0853b6da904e0f9f1d37785e7a
Status: Downloaded newer image for jmalloc/echo-server:latest
Echo server listening on port 8080
Run Code Online (Sandbox Code Playgroud)
邮政
$ curl -XPOST -H"ThisTook: 2 minutes to find" localhost:8080/asdf
Request served by a2d8fa109b92
HTTP/1.1 POST /asdf
Host: localhost:8080
User-Agent: curl/7.54.0
Accept: */*
Thistook: 2 minutes to find
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
22825 次 |
最近记录: |