Перейти к основному содержимому

Как пользоваться cURL

·321 слово·2 минут
Блог о Сетях, Инфраструктуре и DevOps
Автор
Блог о Сетях, Инфраструктуре и DevOps
DevOps, Infrastructure Engineer, Expert Cyber Security

Как пользоваться cURL
#

cURL (client URL) — это инструмент командной строки на основе библиотеки libcurl для передачи данных с сервера и на сервер при помощи различных протоколов, в том числе HTTP, HTTPS, FTP, FTPS, IMAP, IMAPS, POP3, POP3S, SMTP и SMTPS.

Начиная с Windows 10 (build 1803) и Server 2019, исполняемый файл C:\Windows\System32\curl.exe поставляется в комплекте.

⚠️ Важный момент:
В PowerShell используется curl как алиас для Invoke-WebRequest, а не настоящий curl, поэтому в PowerShell нужно использовать curl.exe

curl.exe по умолчанию в Windows использует провайдер SChannel и смотрит корневые сертификаты в системных хранилищах Windows через CryptoAPI/CNG.
SChannel (Secure Channel) — это встроенный в Windows Security Support Provider (SSP), который реализует TLS/SSL, DTLS и другие протоколы безопасности для защищённых сетевых соединений.

Ниже примеры в СMD:
#

C:\Users\adm> where curl
C:\Windows\System32\curl.exe

C:\Users\adm> curl --version
curl 8.13.0 (Windows) libcurl/8.13.0 Schannel zlib/1.3.1 WinIDN
Release-Date: 2025-04-02
Protocols: dict file ftp ftps http https imap imaps ipfs ipns mqtt pop3 pop3s smb smbs smtp smtps telnet tftp ws wss
Features: alt-svc AsynchDNS HSTS HTTPS-proxy IDN IPv6 Kerberos Largefile libz NTLM SPNEGO SSL SSPI threadsafe Unicode UnixSockets

Отправка GET-запроса
#

curl http://www.asterisker.com
curl https://www.asterisker.com

Скачать файл
#

curl -O https://www.asterisker.com/far.tar.gz
curl -O https://www.asterisker.com/far.tar.gz -O https://www.asterisker.com/far2.tar.gz
# или
curl -o far-new.tar.gz https://www.asterisker.com/far.tar.gz

Получение заголовков HTTP
#

curl -I https://www.asterisker.com

Игнорирование ошибки сертификатов
#

curl -k https://www.asterisker.com

Отправка POST-запроса
#

curl --data "param1=test1&param2=test2" https://www.asterisker.com
# или
curl -d '{"param1":"test1","param2":"test2"}' https://www.asterisker.com

Telnet
#

curl -v telnet://www.asterisker.com:22

Получить внешний IP адрес
#

curl ipinfo.io
# или
curl ifconfig.me

Подмена IP домена
#

# Альтернатива правки /etc/hosts
# TCP-подключение идёт к 127.0.0.1:443 (локальный хост), а не к IP, который вернул бы обычный DNS
curl --resolve www.asterisker.com:443:127.0.0.1 https://www.asterisker.com
# или
curl --resolve www.asterisker.com:443:[::1] https://www.asterisker.com

Отправка GET-запроса через локальный Unix-сокет /var/run/docker.sock
#

curl --unix-socket /var/run/docker.sock http://localhost/version

Отправка GET-запроса через локальный SOCKS5 Proxy 127.0.0.1:8888
#

# DNS запросы идут НЕ через прокси
curl --socks5 127.0.0.1:8888 https://ifconfig.me

# DNS запросы идут через прокси
curl --socks5-hostname 127.0.0.1:8888 https://ifconfig.me