Skip to content
intermediate

Как направить инструменты командной строки Linux через SOCKS5-прокси ProxyScrape

Отправляйте curl, wget, git, proxychains и Python через HTTP- и SOCKS5-эндпоинты ProxyScrape на Linux с безопасной обработкой учётных данных и настройкой SOCKS5h без утечек DNS.

Linux SOCKS5 Веб-скрейпинг

Обзор

В Linux большинство инструментов не читают единую глобальную настройку прокси — каждая программа обращается к своему файлу конфигурации или к переменным окружения http_proxy, https_proxy и all_proxy. ProxyScrape поддерживает HTTP и SOCKS5, и это руководство показывает, как направить распространённые инструменты командной строки на ваш эндпоинт.

Предпочитайте SOCKS5 со схемой socks5h, когда хотите, чтобы DNS-запросы выполнялись на прокси, а не локально. Это позволяет избежать утечек DNS и предотвращает сбои, когда целевой ресурс использует имена, которые не видит ваш локальный резолвер.

Шаги

  1. Соберите данные эндпоинта. В панели ProxyScrape запишите хост, HTTP-порт, SOCKS5-порт, а также ваши имя пользователя и пароль.

  2. Экспортируйте учётные данные для вашей сессии оболочки. Избегайте ввода паролей прямо в командах, где они попадают в историю оболочки:

    read -rsp "ProxyScrape username: " PS_USER && echo
    read -rsp "ProxyScrape password: " PS_PASS && echo
    export PS_HOST="your-host"
    export PS_HTTP_PORT="your-http-port"
    export PS_SOCKS_PORT="your-socks5-port"
    
  3. Проверьте HTTP-прокси с помощью curl.

    curl -x "http://$PS_USER:$PS_PASS@$PS_HOST:$PS_HTTP_PORT" https://ipinfo.io/ip
    
  4. Проверьте SOCKS5. --socks5-hostname выполняет разрешение DNS через прокси. Аутентификация SOCKS5 по имени пользователя и паролю требует curl 7.51.0 или новее:

    curl --socks5-hostname "$PS_HOST:$PS_SOCKS_PORT" -U "$PS_USER:$PS_PASS" https://ipinfo.io/ip
    
  5. Задайте переменные окружения для инструментов, которые их учитывают.

    export http_proxy="http://$PS_USER:$PS_PASS@$PS_HOST:$PS_HTTP_PORT"
    export https_proxy="$http_proxy"
    export no_proxy="localhost,127.0.0.1,.local"
    

    Для SOCKS5 используйте export all_proxy="socks5h://$PS_USER:$PS_PASS@$PS_HOST:$PS_SOCKS_PORT". Не каждая программа учитывает all_proxy; проверьте с помощью curl -v или документации самого инструмента.

  6. Настройте wget. wget не поддерживает SOCKS-прокси, поэтому используйте HTTP-порт в ~/.wgetrc:

    use_proxy = yes
    http_proxy = http://USER:PASS@HOST:PORT
    https_proxy = http://USER:PASS@HOST:PORT
    

    Затем ограничьте доступ с помощью chmod 600 ~/.wgetrc.

  7. Направляйте произвольные бинарники через proxychains-ng. Установите proxychains-ng и добавьте ваш эндпоинт в proxychains.conf:

    socks5 HOST PORT USER PASS
    

    proxychains-ng принимает необязательные поля имени пользователя и пароля после порта; если ваша сборка их отклоняет, проверьте документацию вашего дистрибутива для этой версии. Затем добавьте префикс к любой команде:

    proxychains4 curl https://ipinfo.io/ip
    
  8. Используйте его из Python.

    import os, requests
    url = f"http://{os.environ['PS_USER']}:{os.environ['PS_PASS']}@{os.environ['PS_HOST']}:{os.environ['PS_HTTP_PORT']}"
    proxies = {"http": url, "https": url}
    print(requests.get("https://ipinfo.io/ip", proxies=proxies, timeout=15).text)
    

    Установите requests[socks], если предпочитаете SOCKS5-порт.

  9. Не храните секреты в открытых файлах. Предпочитайте переменные окружения или ~/.netrc с chmod 600, и помните, что учётные данные, переданные прямо в командной строке, могут быть видны другим пользователям через ps aux.