与えられた部分をリッスンするコマンドラインツールを探しています。すべての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をリッスンしています。
これに代わるものはたくさんあります。 web.py 、 Bottle など.
(私はかなり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
すべての要求を受け入れ、ヘッダーを含む完全な要求をコマンドラインにエコーします。