Estou procurando uma ferramenta de linha de comando que escute uma determinada parte, exceda felizmente cada solicitação HTTP POST e a despeje.
Eu quero usá-lo para fins de teste, ou seja, para testar clientes que emitem solicitações HTTP POST.
Isso significa que estou pesquisando a contraparte curl -F
(a qual posso usar para enviar POSTs HTTP de teste para um servidor HTTP).
Talvez algo como socat TCP4-LISTEN:80,fork,bind=127.0.0.1 ...
- mas o socat não é suficiente porque não fala HTTP.
http
http-logging
maxschlepzig
fonte
fonte
netcat
(nc
em alguns sistemas) as opções-l
(escutar) e-p
(número da porta).nc
para testes parciais - mas vejo as seguintes desvantagens: 1) ele não envia o código de status HTTP 2) eu tenho que pressionar Ctrl + D depois de ver a solicitação para fechar a conexão 3) ele não sabe como reagir em cima, em seguida, 'esperado: 100-continue' cabeçalho 4) ele não sabe como lidar com o 'Transfer-Encoding: blocos' cabeçalho - é, provavelmente, apenas exibe o primeiro (provavelmente) pedaço vazioRespostas:
Ferramentas básicas simples de linha de comando
nc
, como ,socat
parecem não conseguir lidar com o material HTTP específico em andamento (pedaços, codificações de transferência etc.). Como resultado, isso pode produzir um comportamento inesperado em comparação com a conversa com um servidor da Web real. Portanto, meu primeiro pensamento é compartilhar o modo mais rápido que conheço de configurar um pequeno servidor Web e fazê-lo fazer o que você deseja: despejar toda a saída.O mais curto que pude usar o Python Tornado :
Substitua a
pprint
linha para gerar apenas os campos específicos necessários, por exemploself.request.body
ouself.request.headers
. No exemplo acima, ele escuta na porta 8080, em todas as interfaces.Alternativas para isso são muitas. web.py , garrafa etc.
(Eu sou bastante orientado para Python, desculpe)
Se você não gostar do modo de saída, execute-o de qualquer maneira e tente
tcpdump
assim:para ver um despejo bruto real de todas as solicitações HTTP-POST. Como alternativa, basta executar o Wireshark.
fonte
pprint.pprint(self.request.body)
. Observe emself.request.body
vez deself.body
. O mesmo paraself.request.headers
. Veja tornado.readthedocs.org/en/latest/…Eu estava procurando por isso mesmo tão bem e correu para o Node.js http-eco-servidor :
Ele aceita todas as solicitações e faz eco da solicitação completa, incluindo o cabeçalho da linha de comando.
fonte