⚓ Выполнение POST-запроса с помощью Curl [Практические примеры]

Мануал

Что такое Curl?

cURL, что означает Client URL, – это утилита командной строки с открытым исходным кодом, используемая разработчиками для передачи данных на сервер или с сервера по различным поддерживаемым протоколам.

Поддерживаемые протоколы включают HTTP POST, HTTP PUT, загрузку файлов на FTP, отправку веб-форм, аутентификацию пользователя, HTTP Cookies, HTTP, HTTPS, FTP, FTPS, SFTP, встроенные SSL-сертификаты и многое другое.

⚓ Как использовать команду cURL в Linux

Эта утилита установлена по умолчанию в большинстве дистрибутивов Linux и macOS, а также доступна для Windows.

Эта утилита в основном используется разработчиками для тестирования API, просмотра ответов сервера и выполнения HTTP-запросов.

🖧 Как выполнять несколько запросов curl параллельно

В этой статье мы дадим вам подробное руководство о том, как выполнить POST-запрос с помощью cURL.

🖧 В чем разница между curl и Wget?

Что такое метод запроса HTTP POST?

HyperText Transfer Protocol (HTTP) – это протокол “запрос-ответ”, который обеспечивает связь между клиентскими машинами и серверами.

Например, когда вы ищете что-то в браузере, ваш компьютер отправляет POST-запрос на сервер, который посылает ответ.

Ответ содержит информацию о состоянии отправленного запроса и запрашиваемом содержимом.

Существует несколько методов HTTP.

К ним относятся POST, GET, PUT, HEAD, DELETE, PATCH и OPTIONS. Однако наиболее распространенными являются POST и GET.

Протокол HTTP – коды состояния – формат запроса и ответа – методы HTTP на пальцах

Данные, отправленные из браузера на сервер с помощью метода HTTP POST, хранятся в теле запроса, как показано ниже.

POST /test/demo_form.php HTTP/1.1
Content-Type: application/json
Content-Length: 1024
Host: itsecforu.ru

Отправка POST-запроса с помощью Curl

Из приведенного выше кода вы можете увидеть все параметры, необходимые для отправки POST-запросов.

Сначала нам нужно указать метод HTTP с помощью параметра -X.

В данном случае это метод POST. Далее необходимо указать тип содержимого с помощью параметра -H.

Это позволит серверу определить тип данных в теле запроса и обработать его соответствующим образом.

Существует два варианта Content-Type: application/x-www-form-urlencoded, который используется при отправке веб-формы на сервер, и multipart/form-data, который используется для загрузки файлов на сервер.

Вы используете параметр -F для отправки данных с использованием типа содержимого multipart/form-data и -d для отправки данных с использованием типа содержимого application/x-www-form-urlencoded.

Последний параметр – это хост/сервер.

Здесь вы можете ввести URL вашего целевого сайта.

Синтаксис CURL по умолчанию для отправки POST-запроса приведен ниже.

curl -X POST [options] [URL]
var username = req.body.user;
var password = req.body.pass;

Первая строка var username = req.body.user; считывает пользовательский ввод в поле username и сохраняет его в переменной username.

Помните, что это поле использует имя ввода “user”, как показано в HTML-коде.

Вторая строка var password = req.body.pass; считывает данные, введенные пользователем в поле password, и сохраняет их в переменной password.

Помните, что это поле использует имя ввода “pass”, как показано в HTML-коде.

После обработки введенных пользователем данных код NodeJS выведет на экран браузера сообщение “LOGIN SUCCESS” или “INVALID CREDENTIALS”.

Поскольку нам известны имена ввода, используемые для различных полей, вместо того, чтобы запускать браузер и вводить имя пользователя и пароль напрямую, мы можем использовать CURL для отправки этой информации и вывода ответа сервера на терминал.

Разве это не интересно?

Это даже больше похоже на автоматизацию браузера.

Давайте рассмотрим синтаксис команды, которую мы будем использовать для достижения этой цели.

curl -d "[Input-Name]=[Your-UserName] & [Input-Pass]=[Your-UserPassword]" -X POST [Target-Host]

Давайте воспользуемся приведенным выше синтаксисом для написания нашей команды:

curl -d "user=johndoe & pass=12345" -X POST http://localhost:3000/

Если вы веб-разработчик или интересуетесь безопасностью веб-приложений, вы всегда можете узнать название различных полей/элементов HTML, щелкнув правой кнопкой мыши на элементе в браузере и выбрав опцию “inspect element”. Это откроет код HTML и CSS. Однако это может быть применимо не ко всем сайтам.

Укажите Content-Type в POST-запросе с помощью Curl

Если вы хотите использовать определенный заголовок или Content-Type, вы можете использовать параметр -H.
Например, мы можем изменить приведенную выше команду, включив в нее заголовок application/x-www-form-urlencoded, как показано ниже.
echo; curl -d "user=johndoe&pass=12345" -H "Content-Type: application/x-www-form-urlencoded" -X POST http://192.168.1.52:3001/; echo; echo

И вот здесь самое интересное. Давайте попробуем указать Content-Type на что-то другое, например application/json.

echo; curl -d "user=johndoe&pass=12345" -H "Content-Type: application/json" -X POST http://192.168.1.52:3001/; echo; echo

Если вы укажете Content-Type как application/json, сервер поймет, что вы отправляете данные в формате JSON, которые будут иметь вид {“name” : “johndoe”, “pass” : “12345”}.

При использовании application/x-www-form-urlencoded сервер будет обрабатывать данные в формате name=johndoe&pass=12345.

Загрузка файлов с помощью Curl с использованием метода POST

Чтобы отправить файл с помощью Curl методом POST, мы используем параметр -F и добавим символ @ в начало пути к файлу.

Пример:

curl -X POST -F 'image=@/home/ubuntu-user/image.png' http://192.168.1.52:3001/upload

Если вы хотите загрузить документ, например, pdf или файл ‘.txt’, мы установим тип ‘fileupload’.

Пример:

curl -X POST -F 'fileupload=@/home/ubuntu-user/textFile.txt' http://192.168.1.52:3001/upload

Заключение

Теперь вы хорошо понимаете команду CURL и даже знаете, как выполнять HTTP POST запросы.

Для получения дополнительной информации о Curl вы можете заглянуть на страницу официальной документации.

Есть ли у вас какие-либо вопросы или комментарии по этой теме?

Если да, пожалуйста, пишите в комментариях ниже.

 

Добавить комментарий