Http

只轉儲 POST 請求的通用 HTTP 伺服器?

  • April 17, 2020

我正在尋找一個命令行工具,它可以偵聽給定部分,愉快地排除每個 HTTP POST 請求並將其轉儲。

我想將它用於測試目的,即用於測試發出 HTTP POST 請求的客戶端。

這意味著我正在搜尋對應的curl -F(我可以使用它來將測試 HTTP POST 發送到 HTTP 伺服器)。

也許類似socat TCP4-LISTEN:80,fork,bind=127.0.0.1 ...- 但 socat 還不夠,因為它不支持 HTTP。

簡單的核心命令行工具,例如ncsocat似乎無法處理正在進行的特定 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.bodyself.request.headers。在上面的範例中,它在所有介面上偵聽埠 8080。

替代品很多。web.py瓶子等。

(我非常面向 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

它接受所有請求並將包括標頭在內的完整請求回顯到命令行。

引用自:https://unix.stackexchange.com/questions/57938