Как использовать curl для отладки HTTP, то есть для отправки на сервер HTTP-запросов. У меня потребности небольшие, поэтому здесь только конкретно нужные мне команды. Оформлено всё традиционно: описание задачи, решение, описание решения.
Отправить GET-запрос и показать ответ вместе с заголовками¶
curl -Gi http://google.com
Опция -G
указывает использовать HTTP GET, опция -i
— включить заголовки в вывод.
Отправить GET-запрос, показать только полученные заголовки¶
curl -X GET -I http://google.com
Опция -X GET
указывает, какой именно запрос отправлять (по умолчанию отправляется HEAD
), опция -I
указывает, что нужно только заголовки получить.
Отправить POST-запрос и передать сырые данные¶
curl -X POST -d 'RAW-DATA_HERE' http://google.com
Или с данными из файла data.txt
curl -X POST -d @data.txt http://google.com
Отправить HEAD-запрос и посмотреть ответ¶
curl -I http://google.com
Здесь всё просто, поскольку в ответе на HTTP HEAD приезжают только заголовки.
Показать отправляемые заголовки GET-запроса¶
curl -v -o /dev/null -s -G http://google.com
Примерно в таком стиле, вывод, к сожалению, не самый вменяемый. Опция -v
включает «подробный» режим, опция -o /dev/null
отправляет вывод результата (то есть тело ответа) в /dev/null, опция -s
включает «тихий» режим без показа прогрессбара, а опция -G
означает, что нужно отправить именно HTTP GET-запрос, если вместо -G
указать -I
, то будет отправлен HTTP HEAD-запрос.
Трассировка запроса¶
curl --trace-ascii - http://google.com
Тут особых комментариев не нужно, вывод будет содержать детальную информацию обо всех отправленных и принятых данных
Загрузка файла на сервер¶
Загрузка на сервер файла /tmp/filename.data
в параметре с именем file
в POST-запросе.
curl -F 'file=@/tmp/filename.data'
Можно больше деталей запроса увидеть, если указать параметр -v
:
curl -v -F 'file=@/tmp/filename.data'
В последних версиях cURL: -v/--verbose overrides an earlier trace/verbose option
... и большое спаибо за блог.
А как проще всего узнать какие параметры запрашивает страничка что указать их в курле?