POST 요청 만 덤프하는 일반 HTTP 서버? 즉 HTTP POST 요청을 발행하는 클라이언트를

주어진 부분에서 수신 대기하고 모든 HTTP POST 요청을 제외하고 그것을 덤프하는 명령 줄 도구를 찾고 있습니다.

테스트 목적, 즉 HTTP POST 요청을 발행하는 클라이언트를 테스트하는 데 사용하고 싶습니다.

이는 상대방을 검색하고 있음을 의미합니다 curl -F(테스트 HTTP POST를 HTTP 서버로 보내는 데 사용할 수 있음).

아마도 같은 것입니다 socat TCP4-LISTEN:80,fork,bind=127.0.0.1 ...-그러나 socat은 HTTP를 말하지 않기 때문에 충분하지 않습니다.



답변

같은 간단한 핵심 명령 행 도구 nc, socat(청크 전송 인코딩 등)에가는 특정의 HTTP 물건을 처리 할 수없는 것 같다. 결과적으로 실제 웹 서버와 대화하는 것과 비교하여 예기치 않은 동작이 발생할 수 있습니다. 그래서 첫 번째 생각은 작은 웹 서버를 설정하고 원하는 모든 작업을 수행하는 가장 빠른 방법을 공유하는 것입니다. 모든 출력을 덤프하십시오.

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

(나는 꽤 파이썬 지향적입니다, 미안합니다)


출력 방법이 마음에 들지 않으면 어쨌든 실행하고 다음과 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

모든 요청을 수락하고 명령 줄에 헤더를 포함하여 전체 요청을 에코합니다.


답변