🖧 Использование команды cURL на PowerShell |

🖧 Использование команды cURL на PowerShell

Мануал

cURL (Client URL) – это классический инструмент командной строки *nix для работы с URL-запросами.

Он позволяет отправлять HTTP/HTTP-запросы, скачивать или отправлять файл на сервер, получать доступ к API, аутентифицироваться в веб-сервисе и т. д.

В этой статье рассказывается о том, как использовать утилиту cURL в среде Windows.

Пользователи Windows часто путают команду cURL с командой Invoke-WebRequest.

Проблема заключается в том, что до PowerShell Core 6.x команда cURL в PowerShell была алиасом для команды Invoke-WebRequest.

🖧 Wcurl: Удобная обёртка Curl для лёгкой загрузки файлов

В PowerShell Core 6.x и 7.x команда cURL запускает инструмент C:\Windows\system32\curl.exe.

Начиная с Windows 10 1803 и Windows Server 2019 команда curl.exe доступна по умолчанию.

Подсказка. Чтобы удалить алиас curl, выполните следующую команду в Windows PowerShell 5.1:

code $profile

Добавьте следующую команду в профиль PowerShell:

Remove-Item Alias:\curl

Убедитесь, что cURL установлен, и проверьте его версию:

curl -V

Синтаксис команды Invoke-WebRequest и утилиты cURL.exe сильно отличаются.

Если вы привыкли использовать команду cURL в среде Linux, вам может показаться сложным перевести знакомые команды в синтаксис PowerShell.

Давайте рассмотрим несколько примеров типичных команд cURL и их эквивалентов в PowerShell.

Получение исходного HTML-содержимого веб-страницы и статуса ответа HTTP:

curl https://itsecforu.ru
PS: Invoke-WebRequest -Uri "https://itsecforu.ru"

Получение только статуса страницы и заголовка:

curl -I  https://itsecforu.ru
PS: Invoke-WebRequest -Uri "https://itsecforu.ru" -Method Head

Доступ к веб-странице с использованием определенного User-Agent:

curl -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135" https://itsecforu.ru
PS: $response = Invoke-WebRequest -Uri "https://itsecforu.ru" -UserAgent "Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:135.0) Gecko/20100101 Firefox/135"

Скачать всю веб-страницу:

curl -o C:\PS\itsecforu.html https://itsecforu.ru
PS: Invoke-WebRequest -Uri "https://itsecforu.ru" -OutFile "C:\PS\theitbros_home2.html"

Получение размера файла (размер в байтах, указанный в поле Content-Length):

curl -IL https://download.sysinternals.com/files/PSTools.zip
PS:
$response = Invoke-WebRequest -Uri "https://download.sysinternals.com/files/PSTools.zip" -Method Head
$response.Headers["Content-Length"]

Скачать файл (файл будет сохранен в текущем каталоге: pwd):

curl -O https://itsecforu.ru/test.zip
PS: Invoke-WebRequest -Uri "https://itsecforu.ru/test" -OutFile "C:\Downloads\file.zip"

Выполните POST-запрос:

curl -d "key1=value1&key2=value2" -X POST http://service
PS:
$body = @{
"key1" = "value1"
"key2" = "value2"
}
$response = Invoke-WebRequest -Uri "http://service" `
-Method Post `
-ContentType "application/x-www-form-urlencoded" `
-Body $body

Загрузим файл в формате JSON:

curl -d "@data.json" -H "Content-Type: application/json" -X POST http://service
PS:
$response = Invoke-WebRequest -Uri "http://api.service" `
-Method Post `
-ContentType "application/json" `
-InFile "data.json"

Отправка HTTP POST-запросов с данными в формате JSON:

curl -X POST https://api.service/data \
-H "Content-Type: application/json" \
-d '{"Country": "UK", "Index": 220}'
PS:
$response = Invoke-WebRequest -Uri "https://api.service/data" `
-Method Post `
-ContentType "application/json" `
-Body "{`"Country`": `"UK`", `"Index`": 220}"

Пройдите аутентификацию с помощью основных учетных данных:

curl -u username:password http://service
PS:
$username = "username"
$password = ConvertTo-SecureString "password" -AsPlainText -Force
$credential = New-Object System.Management.Automation.PSCredential($username, $password)
$response = Invoke-WebRequest -Uri "http://service" `
-Credential $credential `
-Authentication Basic `
-AllowUnencryptedAuthentication

Основное различие между командой WebRequest и командой cURL заключается в том, что PowerShell работает с объектами и возвращает их, а не просто обычный текст. Команда cURL возвращает необработанный текст.

Этот текст должен быть разобран отдельно.

Однако cURL удобнее, если вам нужно отправить сложный HTTP-запрос или автоматически разобрать объект JSON.

см. также:

Пожалуйста, не спамьте и никого не оскорбляйте. Это поле для комментариев, а не спамбокс. Рекламные ссылки не индексируются!
Добавить комментарий