Http
只轉儲 POST 請求的通用 HTTP 伺服器?
我正在尋找一個命令行工具,它可以偵聽給定部分,愉快地排除每個 HTTP POST 請求並將其轉儲。
我想將它用於測試目的,即用於測試發出 HTTP POST 請求的客戶端。
這意味著我正在搜尋對應的
curl -F
(我可以使用它來將測試 HTTP POST 發送到 HTTP 伺服器)。也許類似
socat TCP4-LISTEN:80,fork,bind=127.0.0.1 ...
- 但 socat 還不夠,因為它不支持 HTTP。
簡單的核心命令行工具,例如
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()
替換該
pprint
行以僅輸出您需要的特定欄位,例如self.request.body
或self.request.headers
。在上面的範例中,它在所有介面上偵聽埠 8080。(我非常面向 Python,抱歉)
如果您不喜歡它的輸出方式,請執行它並嘗試
tcpdump
如下:tcpdump -i lo 'tcp[32:4] = 0x484f535420'
查看所有 HTTP-POST 請求的真實原始轉儲。或者,只需執行 Wireshark。
我自己也在尋找這個並遇到了 Node.js http-echo-server:
npm install http-echo-server -g PORT=8081 http-echo-server
它接受所有請求並將包括標頭在內的完整請求回顯到命令行。