Довідник cURL · 1 хв читання

curl через SOCKS5-проксі: повний довідник

Вичерпний довідник по curl і проксі: SOCKS5 проти SOCKS5h, прапорці -x і --socks5-hostname, змінні оточення, постійний .curlrc та вузли s4m з автентифікацією. Готово до копіювання.

SOCKS5 проти SOCKS5h — і чому це важливо

curl підтримує HTTP- і SOCKS-проксі. socks5:// розв’язує імена цілей локально; socks5h:// передає ім’я хоста проксі для розв’язання. Параметр --socks5-hostname також обирає віддалений DNS. Це не шифрує узгодження SOCKS чи автентифікацію за логіном і паролем. HTTPS із перевіркою сертифіката захищає вміст застосунку. За потреби захищайте шлях від клієнта до проксі зашифрованим тунелем; віддалений DNS його не замінює.

s4m дає обидва протоколи на одному акаунті: SOCKS5 на порту 1080 і HTTP на порту 3128, обидва з автентифікацією USER:PASS на proxy.s4m.online. Універсальний прапорець -x / --proxy приймає повний URL разом зі схемою, тож одного прапорця вистачає на всі випадки. Про основи роботи curl через проксі — гайд про curl і проксі; ця сторінка — глибша довідка про SOCKS5, змінні середовища та постійний конфіг. Теорія протоколів — у що таке SOCKS5.

curl · RFC 1929

Усі способи задати проксі — в одному місці

Використовуйте хост і облікові дані, видані вашому акаунту. У прикладах проксі вибрано явно. Перегляньте наявну конфігурацію перед редагуванням: наведені рядки конфігурації є коментарями, а не командами перезапису файлу.

bash
# Replace the host and dummy USER:PASS with your issued configuration.
PROXY_HOST='HOST_FROM_ACCOUNT'

# SOCKS5 with remote target DNS; this does not encrypt SOCKS authentication.
curl --noproxy "" --proxy "socks5h://$PROXY_HOST:1080" --proxy-user USER:PASS https://api.ipify.org

# Equivalent remote-DNS option with explicit authentication.
curl --noproxy "" --socks5-hostname "$PROXY_HOST:1080" --proxy-user USER:PASS https://api.ipify.org

# SOCKS5 with local target DNS, if that is specifically intended.
curl --noproxy "" --proxy "socks5://$PROXY_HOST:1080" --proxy-user USER:PASS https://api.ipify.org

# Plain HTTP proxy carrying HTTPS with CONNECT; keep TLS verification on.
curl --noproxy "" --proxy "http://$PROXY_HOST:3128" --proxy-user USER:PASS https://api.ipify.org

# Example default-config entries: edit your existing ~/.curlrc, preserving
# other settings. Protect a file containing credentials; do not commit it.
# proxy = "socks5h://HOST_FROM_ACCOUNT:1080"
# proxy-user = "USER:PASS"
# connect-timeout = 10

# Ignore the default config for this call while KEEPING an explicit proxy.
# -q must be the first curl option. Empty --noproxy clears bypass exclusions.
curl -q --noproxy "" --proxy "socks5h://$PROXY_HOST:1080" --proxy-user USER:PASS https://api.ipify.org

Постійний проксі для curl

Задайте явні налаштування за замовчуванням і перевірте фактичний маршрут, включно з правилами обходу проксі.

Оберіть схему

Використовуйте socks5h:// для DNS цілі на проксі або http:// для HTTP-проксі, що передає HTTPS через CONNECT. Перевіряйте виданий хост, порт і підтримуваний трафік. Жоден варіант сам по собі не шифрує з’єднання від клієнта до проксі.

Створіть ~/.curlrc

Перед редагуванням перегляньте наявний файл конфігурації за замовчуванням. Збережіть інші параметри й захистіть облікові дані у файлі. curl зазвичай читає його першим; -q як перший параметр пропускає його. Під час перевірки без файлу задавайте проксі явно.

Задайте змінні середовища для інших інструментів

Перевіряйте кожен інструмент окремо. У curl змінні проксі для конкретної схеми мають пріоритет над ALL_PROXY; NO_PROXY може обходити проксі. Інші інструменти не обов’язково підтримують ті самі змінні чи схеми SOCKS.

Перевірте і додайте винятки

Перевірте вихідний IP фактичного запиту через відповідний сервіс. NO_PROXY та --noproxy навмисно дозволяють прямі з’єднання з відповідними хостами; додавайте винятки лише тоді, коли такий обхід справді потрібний.

Способи автентифікації, пріоритет і NTLM

Задавайте облікові дані в URL проксі або через -U / --proxy-user. Кодуйте зарезервовані символи, коли вставляєте облікові дані в URL. Не записуйте секрети в журнали чи спільні файли. curl читає свій типовий ~/.curlrc перед звичайними параметрами командного рядка; пізніше явне налаштування проксі може перевизначити попереднє. Конфігурація проксі має пріоритет над запасними значеннями з оточення, а NO_PROXY все одно може спричинити обхід. Задавайте -q першим параметром, щоб пропустити типовий файл, а потім явно задавайте потрібний проксі.

Узгодження логіна й пароля SOCKS5 та автентифікація HTTP Basic на проксі є різними протоколами; обмін SOCKS не є HTTP Basic. Жоден із них сам по собі не забезпечує шифрування. --proxy-ntlm призначений для HTTP-проксі, яким потрібен NTLM, а не для звичайного доступу SOCKS5 за логіном і паролем. За 407 Proxy Authentication Required перевіряйте метод автентифікації HTTP-проксі та видані облікові дані; збій SOCKS5 має іншу протокольну відповідь. Дивіться посібник про 407, посібник wget, інструменти й окремий список безкоштовних публічних проксі.

FAQ

Відповіді на питання

Яка різниця між socks5 і socks5h у curl?

socks5:// розв’язує ім’я цілі локально; socks5h:// доручає це проксі. --socks5-hostname також обирає розв’язання на проксі. Це не шифрує автентифікацію SOCKS; залишайте перевірку HTTPS-сертифікатів увімкненою для трафіку застосунку.

Як змусити curl ходити через проксі в кожній команді?

Налаштуйте типовий проксі в наявній конфігурації curl або використовуйте підтримувані змінні оточення. Явні параметри проксі, змінні конкретної схеми й винятки обходу впливають на результат. -q пропускає типовий файл, але сам по собі не обирає і не зберігає проксі.

Чи потрібна для s4m автентифікація NTLM?

Використовуйте метод, указаний для виданої адреси. Узгодження логіна й пароля SOCKS5 не є HTTP Basic; HTTP-проксі може використовувати HTTP Basic. --proxy-ntlm застосовується лише до HTTP-проксі, яким потрібен NTLM, а не до звичайного доступу SOCKS5.

Чому я отримую 407 Proxy Authentication Required?

HTTP-проксі запитує автентифікацію. Перевірте видані логін і пароль та підтримуваний метод автентифікації. Кодуйте зарезервовані символи, якщо облікові дані вставлено в URL. Збої автентифікації SOCKS5 повідомляються інакше; не діагностуйте їх як HTTP 407.

Один ендпоінт — усі трюки curl

Налаштуйте доступ SOCKS5 або HTTP у s4m з обліковими даними свого акаунта.

Цю сторінку знаходять за запитами

Реальні пошукові фрази, на які відповідає ця сторінка — за посиланнями відкриються матеріали, що розкривають тему глибше.