Как направить инструменты командной строки Linux через SOCKS5-прокси ProxyScrape
Отправляйте curl, wget, git, proxychains и Python через HTTP- и SOCKS5-эндпоинты ProxyScrape на Linux с безопасной обработкой учётных данных и настройкой SOCKS5h без утечек DNS.
Обзор
В Linux большинство инструментов не читают единую глобальную настройку прокси — каждая программа обращается к своему файлу конфигурации или к переменным окружения http_proxy, https_proxy и all_proxy. ProxyScrape поддерживает HTTP и SOCKS5, и это руководство показывает, как направить распространённые инструменты командной строки на ваш эндпоинт.
Предпочитайте SOCKS5 со схемой socks5h, когда хотите, чтобы DNS-запросы выполнялись на прокси, а не локально. Это позволяет избежать утечек DNS и предотвращает сбои, когда целевой ресурс использует имена, которые не видит ваш локальный резолвер.
Шаги
-
Соберите данные эндпоинта. В панели ProxyScrape запишите хост, HTTP-порт, SOCKS5-порт, а также ваши имя пользователя и пароль.
-
Экспортируйте учётные данные для вашей сессии оболочки. Избегайте ввода паролей прямо в командах, где они попадают в историю оболочки:
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" -
Проверьте HTTP-прокси с помощью curl.
curl -x "http://$PS_USER:$PS_PASS@$PS_HOST:$PS_HTTP_PORT" https://ipinfo.io/ip -
Проверьте 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 -
Задайте переменные окружения для инструментов, которые их учитывают.
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или документации самого инструмента. -
Настройте 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. -
Направляйте произвольные бинарники через proxychains-ng. Установите
proxychains-ngи добавьте ваш эндпоинт вproxychains.conf:socks5 HOST PORT USER PASSproxychains-ng принимает необязательные поля имени пользователя и пароля после порта; если ваша сборка их отклоняет, проверьте документацию вашего дистрибутива для этой версии. Затем добавьте префикс к любой команде:
proxychains4 curl https://ipinfo.io/ip -
Используйте его из 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-порт. -
Не храните секреты в открытых файлах. Предпочитайте переменные окружения или
~/.netrcсchmod 600, и помните, что учётные данные, переданные прямо в командной строке, могут быть видны другим пользователям черезps aux.