ZaLinux.ru

Как отобразить данные POST с cURL (РЕШЕНО)

Утилита cURL может показывать HTTP заголовки, если вы используете опцию -I (означает запрос методом HEAD, то есть кроме заголовков ничего больше не будет прислано — некоторые простые веб-серверы это не поддерживают), либо при использовании аргумента -v.

К примеру:

curl -v -d "firstname=john&lastname=doe" -A 'Chrome' http://suip.biz:8080

Пример вывода:

Максимум, что можно увидеть, это информация о том, что данные полностью выгружены:

> POST / HTTP/1.1
> Content-Length: 27
> Content-Type: application/x-www-form-urlencoded
> 
* upload completely sent off: 27 out of 27 bytes
* Mark bundle as not supporting multiuse

А если вы попытаетесь использовать одновременно опцию -I и -d, то получите ошибку:

Warning: You can only select one HTTP request method! You asked for both POST
Warning: (-d, --data) and HEAD (-I, --head).

Суть в том, что нужно выбрать один из методов: POST или HEAD.

Итак, есть ли какая-либо возможность просмотреть отправленные данные, то есть как в выводе отобразить строку "firstname=john&lastname=doe"?

Конечно же, очевидно, что строка, которую мы хотим увидеть, присутствует в выполняемой команде, но имеется несколько других POST опций, таких как --form и --data-ascii и т. д. Если нам хочется увидеть, как на сервер отправляются сырые данные, есть ли для этого способ?

Кроме варианта использования сторонней программы tcpdump (смотрите, кстати «Фильтры tcpdump и pcap. Фильтры захвата Wireshark»), есть способ увидеть эти данные непосредственно в cURL, для этого используйте опцию --trace-ascii:

curl --trace-ascii /dev/stdout -d "firstname=john&lastname=doe" -A 'Chrome' http://suip.biz:8080

Теперь в выводе присутствует выгружаемые данные.

Вместо «--trace-ascii /dev/stdout» можно использовать «--trace-ascii -». Эти записи являются равнозначными, поскольку символ - (тире) означает /dev/stdout, то есть стандартный вывод.

Рекомендуемые статьи:

Оставить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *