Универсальный сервер HTTP, который просто выводит запросы POST?

Если Вы хотите исключить весь каталог, Ваш шаблон должен соответствовать тому каталогу, не файлам в нем. Использовать --exclude=/data/sub1 вместо --exclude='/data/sub1/*'

Будьте осторожны с заключением в кавычки шаблонов для защиты их от расширения оболочки.

Посмотрите этот пример с проблемой в заключительном вызове:

$ for i in 0 1 2; do mkdir -p /tmp/data/sub$i; echo foo > /tmp/data/sub$i/foo; done
$ find /tmp/data
/tmp/data
/tmp/data/sub2
/tmp/data/sub2/foo
/tmp/data/sub0
/tmp/data/sub0/foo
/tmp/data/sub1
/tmp/data/sub1/foo
$ tar -zvcf /tmp/_data.tar /tmp/data --exclude='/tmp/data/sub[1-2]'
tar: Removing leading `/' from member names
/tmp/data/
/tmp/data/sub0/
/tmp/data/sub0/foo
$ tar -zvcf /tmp/_data.tar /tmp/data --exclude=/tmp/data/sub[1-2]
tar: Removing leading `/' from member names
/tmp/data/
/tmp/data/sub0/
/tmp/data/sub0/foo
$ echo tar -zvcf /tmp/_data.tar /tmp/data --exclude=/tmp/data/sub[1-2]
tar -zvcf /tmp/_data.tar /tmp/data --exclude=/tmp/data/sub[1-2]
$ tar -zvcf /tmp/_data.tar /tmp/data --exclude /tmp/data/sub[1-2]
tar: Removing leading `/' from member names
/tmp/data/
/tmp/data/sub2/
/tmp/data/sub2/foo
/tmp/data/sub0/
/tmp/data/sub0/foo
/tmp/data/sub2/
tar: Removing leading `/' from hard link targets
/tmp/data/sub2/foo
$ echo tar -zvcf /tmp/_data.tar /tmp/data --exclude /tmp/data/sub[1-2]
tar -zvcf /tmp/_data.tar /tmp/data --exclude /tmp/data/sub1 /tmp/data/sub2
24
08.12.2012, 01:24
3 ответа

Простые базовые инструменты командной строки как nc, socat кажется, не могу обработать определенное продолжение материала HTTP (блоки, кодировка передачи, и т.д.). В результате это может произвести неожиданное поведение по сравнению с тем, чтобы говорить с реальным веб-сервером. Так, моя первая мысль состоит в том, чтобы совместно использовать самый быстрый способ, которым я знаю об установке крошечного веб-сервера и создании ее просто сделать то, что Вы хотите: выведите весь вывод.

Самое короткое я мог придумать использование Торнадо Python:

#!/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, Бутылка, и т.д.

(Я - вполне ориентированный Python, извините),


Если Вы не любите его способ произвести, просто выполняете его так или иначе и попытка tcpdump как это:

tcpdump -i lo 'tcp[32:4] = 0x484f535420'

видеть реальный необработанный дамп всех запросов HTTP-POST. С другой стороны, просто выполните Wireshark.

16
27.01.2020, 19:40
  • 1
    Для других, которые находят этот очень полезный отрывок - он делает то, что спросили - но если Вы хотите видеть тело POST, это pprint.pprint(self.request.body).Примечание: self.request.body вместо self.body. То же для self.request.headers. См. tornado.readthedocs.org/en/latest / … –  mozz100 25.09.2014, 13:17

Я сам это искал и столкнулся с http-echo-сервером Node.js :

npm install http-echo-server -g
PORT=8081 http-echo-server

Он принимает все запросы и эхос полностью выполняет запрос, включая заголовок командной строки.

40
27.01.2020, 19:40

https://hub.docker.com/r/jmalloc/echo-server/

Выполнить

$ docker run -t --rm -p 8080:8080 jmalloc/echo-server
Unable to find image 'jmalloc/echo-server:latest' locally
latest: Pulling from jmalloc/echo-server
fbf67b0844fa: Pull complete
Digest: sha256:617a99b927c3b761621681eb4716582260391c0853b6da904e0f9f1d37785e7a
Status: Downloaded newer image for jmalloc/echo-server:latest
Echo server listening on port 8080

Сообщение

$ curl -XPOST -H"ThisTook: 2 minutes to find" localhost:8080/asdf
Request served by a2d8fa109b92

HTTP/1.1 POST /asdf

Host: localhost:8080
User-Agent: curl/7.54.0
Accept: */*
Thistook: 2 minutes to find
5
17.04.2020, 04:51

Теги

Похожие вопросы