curl

curl — консольный HTTP-клиент, но по факту умеет много больше: HTTP/1/2/3, FTP, SMTP, IMAP, POP3, LDAP, SMB, TFTP, SFTP, RTMP, gopher, dict, telnet — всего ~30 протоколов. Библиотека libcurl лежит внутри половины софта в мире (git, php, python-requests-совместимые фолбэки, embedded).

История

Написал Daniel Stenberg (Швеция) в 1996. Изначально называлась httpget, потом urlget, потом curl — от «see URL». Daniel до сих пор мейнтейнер. По самооценке автора, curl запущен на ~20 миллиардах устройств: серверы, IoT, машины Tesla, приставки Sony, роутеры, консоли. Даже в марсоходах NASA.

Базовые примеры

# GET
curl https://example.com
curl -v https://example.com          # verbose: покажет заголовки
curl -sSL https://example.com        # silent, showError, follow-redirects

# HEAD (только заголовки)
curl -I https://example.com

# POST JSON
curl -X POST https://api.example.com/x   -H "Content-Type: application/json"   -d '{"key":"value"}'

# файл на диск
curl -o out.html https://example.com
curl -O https://example.com/file.zip  # имя файла с URL

# resume (докачка)
curl -C - -O https://example.com/big.iso

Флаги которые надо знать

Timing (аналог ping/traceroute для HTTP)

curl -w "\nDNS: %{time_namelookup}s\nTCP: %{time_connect}s\nTLS: %{time_appconnect}s\nTTFB: %{time_starttransfer}s\nTotal: %{time_total}s\n" \
  -o /dev/null -s https://example.com

Покажет по этапам: DNS, TCP-handshake, TLS-handshake, время до первого байта, общее. Так проще всего диагностировать «где тормозит».

Проверить VPN-ключ через curl

Работает SOCKS/HTTP-прокси или нет:

# через SOCKS5 (например, xray на 10808)
curl -x socks5h://127.0.0.1:10808 https://ifconfig.me
# ответит внешним IP выхода прокси, если работает

Разница socks5:// vs socks5h:// — первый резолвит DNS локально, второй передаёт имя серверу. Для проверки «прокси работает целиком» лучше socks5h.

HTTP/3

Не все сборки curl умеют — нужен собранный с QUIC-библиотекой (nghttp3 + ngtcp2, quiche, msh3). Проверить:

curl --version | grep -i http3
curl --http3 https://cloudflare-quic.com/

Заменители/альтернативы

Ссылки