Как пользоваться 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¶m2=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