SOCKS5 прокси-сервер работает по аналогии с сетевым экраном (файрволом) на основе своего собственного сетевого протокола. Если привязываться к модели OSI, то происходит это на сеансовом уровне (четвёртый из семи). Как раз поэтому SOCKS5 прокси могут быть абсолютно прозрачными для конечных клиентов, следы их работы никак не выявить и не отследить, а ещё они могут работать с разными протоколами приложений: HTTP, FTP, SSH и пр.
Давайте в деталях разберёмся с тем, что такое SOCKS5 прокси-серверы, в чём их преимущества и недостатки, как использовать SOCKS5-прокси и в каких задачах или ситуациях, как их настраивать и существуют ли устоявшиеся практики.
Почему приватность важна в веб-ботах и децентрализованных системах
Все информационные системы, в которых есть обмен цифровыми данными, передают эти самые данные фактически по открытым сетям — так работает Интернет (это сеть сетей) и тут ничего не поделаешь. Но, в связи с этим, на первый план выходит проблема приватности и конфиденциальности, особенно, если речь идёт о построении своих децентрализованных систем из веб-ботов.
Веб-боты могут быть заблокированы на основе IP-адресов, гео-расположения, различных технических признаков и поведенческих метрик. Ниже перечень наиболее значимых причин, из-за которых важно уделять внимание конфиденциальности и приватности:
- Защита от блокировок, связанных с цензурой, государственным и корпоративным контролем. Из-за таких блокировок может нарушаться работоспособность веб-бота (скрапера) или децентрализованной сети (блокчейн, торренты, IPFS).
- Безопасность данных. Часто случается так, что парсеры нарушают правила сайтов, торговых площадок, соцсетей, бирж и других платформ (намеренно или непреднамеренно), а это в свою очередь может обернуться судебными исками и другими видами разбирательств. В децентрализованных системах на первое место выходит защита данных и транзакций.
- Раскрытие персональной информации. Если веб-бот или децентрализованная система не предпринимают никаких попыток защиты (шифрования трафика, запутывание следов и т.п.), то их можно отследить непосредственно до владельца.
- Опасные действия злоумышленников и слежка. Когда злоумышленник знает о вас или о вашей сети транзакций слишком много, он может использовать её уязвимости и воспользоваться ими в своих целях.
Вывод из вышесказанного достаточно простой — нужно защищаться. Протокол SOCKS и SOCKS5-прокси серверы — это одно из самых эффективных средств защиты. Давайте остановимся на них поподробнее.
Что такое SOCKS5-прокси и как они работают
Мы уже упоминали, что эти прокси работают на основе специального протокола — SOCKS. Аббревиатура очень похожа на сокращение слова SOCKetS, которая в свою очередь имеет прямое отношение к описанию работы протокола — через сокеты. Но во многих источниках расшифровка чаше трактуется как «SOCKet Secure», то есть «безопасность сокетов». Если акроним читать как обычное слово, то оно переводится на русский как «носки».
SOCKS — это сеансовый протокол, разработанный Дэвидом Кобласом и позже улучшенный и переработанный компанией Permeo Technologies (выкуплена и принадлежит корпорации Symantec), предназначен для эффективной маршрутизации трафика поверх транспортных протоколов TCP (во всех версиях протокола) и UDP (только в версии SOCKS5).
Важно! SOCKS4 и SOCKS5 протоколы несовместимы между собой. SOCKS5 намного функциональнее, он может работать поверх TCP и UDP-подключений, поддерживает авторизацию и совместим с IPv6-адресами.
SOCKS5 прокси сервер — это программная реализация прокси-сервера, работающего по протоколу SOCKS5.
В зависимости от типа IP-адресов (их принадлежности к пулам провайдеров), выделяют:
- Резидентные SOCKS5-прокси
- Мобильные SOCKS5-прокси
- Серверные или датацентровые SOCKS5-прокси
Чтобы было понятнее, сравним SOCKS5 прокси с обычными HTTP-прокси и с VPN:
Характеристика |
SOCKS5 |
HTTP-прокси |
VPN |
Уровень работы (по модели OSI + протокол) |
Поверх транспортного, 4 уровень (TCP/UDP) |
Поверх прикладного, 7 уровень (HTTP/HTTPS) |
Весь трафик (TUN/TAP) |
Анонимность |
Высокая |
Средняя (может добавлять свои HTTP-заголовки) |
Максимальная |
Шифрование |
Нет (но можно поверх TLS) |
Нет (если не HTTPS) |
Да (AES, WireGuard и др.) |
Скорость |
Высокая |
Зависит от реализации |
Зависит от шифрования |
Материалы по теме: общее сравнение прокси, IP-генераторов и VPN и сравнение SOCKS-прокси vs HTTP-прокси.
Клиенты могут арендовать подходящее сетевое оборудование, чтобы самостоятельно установить и настроить SOCKS5-прокси, а могут приобрести и воспользоваться готовым приватным SOCKS5 прокси-сервисом, таким как Froxy.
В каких ситуациях SOCKS5 прокси подходят для рабочих процессов веб-ботов
SOCKS5-прокси будут полезны в разных ситуациях и задачах, от масштабирования многопоточного парсинга контента до обхода гео-ограничений контента в региональных библиотеках стриминговых сервисов.
Наиболее востребование направления для веб-ботов — это обход блокировок по IP (с ротацией) и имитация поведения пользователей (с созданием правдоподобных цифровых отпечатков в паре с безголовыми или антидетект-браузерами). Давайте рассмотрим применение на примерах, заодно покажем, как настраивать SOCKS5 прокси в Python.
Пример: Извлечение гео-ограниченного контента с помощью SOCKS5 и Python
Допустим, нам нужно получить доступ к библиотеке стримингового сервиса из США, пусть это будет Netflix.
Для работы с SOCKS-протоколом устанавливаем библиотеку PySocks, она перенаправляет весь трафик через SOCKS5-прокси.
Сокеты (подключения) подменяются глобально, поэтому даже DNS-запросы будут идти через прокси, (что крайне важно для анти-бот систем.
Целевой сайт видит IP-адрес прокси (например, американский), а не ваш реальный, поэтому отдаёт контент, предназначенный для США.
Код на Python:
import requests
import socket
import socks # не забудьте предварительно установить пакет: pip install PySocks
# Настройка SOCKS5 прокси, замените данные на свои (их нужно получить у своего провайдера прокси)
socks.set_default_proxy(socks.SOCKS5, "your-proxy-server.zone", 1080, username="USR1", password="Pa$$W0rD")
socket.socket = socks.socksocket # Здесь происходит подмена сокетов системы
# Теперь все запросы идут только через прокси
url = "https://www.netflix.com/" # Пример гео-защищённого сайта
headers = {"User-Agent": "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/136.0.0.0 Safari/537.36 "} # Представляемся браузером Chrome версии 136
response = requests.get(url, headers=headers) #Отправляем запрос к целевому сайту
print(response.text) # Выводим в консоли HTML-код страницы
Пример: Puppeteer с прокси SOCKS5 для эмуляции поведения бота
Так как многие современные сайты представляют собой сложные web-приложения, написанные на JavaScript, то для доступа к их содержимому может потребоваться не просто полноценный браузер, но и эмулирование поведения пользователя (с подменой цифрового отпечатка).
Допустим, нам нужно автоматизировать вход в Instagram с разных IP, избегая блокировок со стороны целевого сервиса.
Примерно так будет выглядеть парсер на JavaScript, код базовый и требует расширения (для подключения к headless-браузеру используем библиотеку Puppeteer):
const puppeteer = require('puppeteer');
// Скрипт будет работать асинхронно
(async () => {
const browser = await puppeteer.launch({
args: [
'--proxy-server=socks5://user:pass@your-proxy.serv:1080', //Укажите здесь свои параметры подключения к SOCKS5 прокси-серверу
'--disable-features=site-per-process' // Важно для некоторых сайтов
]
});
//Открываем браузер и новую вкладку
const page = await browser.newPage();
// Переходим на сайт
await page.goto('https://www.instagram.com/', {waitUntil: 'networkidle2'});
// Вводим логин/пароль и выполняем другие действия...
await page.type('input[name="username"]', 'your_login');
await page.type('input[name="password"]', 'your_password');
await page.click('button[type="submit"]');
// Делаем скриншот страницы
await page.screenshot({path: 'instagram.png'});
//Закрываем браузер
await browser.close();
})();
Варианты использования в блокчейне и криптовалюте
Благодаря своим преимуществам, SOCKS5-прокси будут более чем полезны в децентрализованных системах. Например, их можно использовать для анонимного взаимодействия с нодами, кошельками и скриптами, для обхода блокировок RPC-узлов (например, Infura в санкционных странах), а также для сокрытия IP при работе кошельками — защита от атак «посередине» (с перехватом пароля или других данных в открытой сети).
Пример: Подключение web3.py к узлу Ethereum через SOCKS5
Предположим, что нам нужно отправить транзакцию в сеть Ethereum, скрыв реальный IP. Скрипт на Python может выглядеть так (схематично):
# Импортируем библиотеки, не забудьте установить отсутствующие
from web3 import Web3
import socks
import socket
# Настройка SOCKS5 прокси
socks.set_default_proxy(socks.SOCKS5, "your-proxy.serv", 1080, username="USR1", password=" Pa$$W0rD ") # Замените данные на свои
socket.socket = socks.socksocket
# Подключение к Ethereum через Infura (или через свою ноду)
# Infura или другая нода видит только IP прокси, а не ваш реальный адрес
web3 = Web3(Web3.HTTPProvider('https://mainnet.infura.io/v3/YOUR_API_KEY'))
# Проверка подключения
print(web3.is_connected()) # Должно быть True
# Пример: Получение баланса кошелька
balance = web3.eth.get_balance('0xYourWalletAddress')
print(web3.from_wei(balance, 'ether'))
Пример: Использование ethers.js с прокси SOCKS5 для скриптов кошелька
Задействуем Node.js (с соответствующим окружением) и библиотеку ethers.js. Пусть задача будет — отправка транзакций через SOCKS5 прокси-сервер, для скрытия своего реального IP.
Код:
// Подключаем библиотеки
const { ethers } = require("ethers");
const { SocksProxyAgent } = require('socks-proxy-agent');
// Настройка SOCKS5 прокси
// Замените данные для подключения на свои
const proxyAgent = new SocksProxyAgent('socks5:// your-proxy.serv:1080');
// Подключение к провайдеру через прокси
const provider = new ethers.JsonRpcProvider(
{
url: 'https://mainnet.infura.io/v3/YOUR_API_KEY',
agent: proxyAgent // Передаём SOCKS5-агент
}
);
// Пример: Получение баланса кошелька
async function getBalance() {
const balance = await provider.getBalance('0xYourWalletAddress');
console.log(ethers.formatEther(balance));
}
getBalance();
Пример маршрутизации трафика с помощью прокси Froxy
Самая главная фишка ротируемых прокси — их не нужно «вращать» вручную (пусть даже на уровне специального кода). Достаточно подключить прокси один раз, а все остальные настройки и логика замены настраивается в личном кабинете (через онлайн-версию дашборда или через API).
Froxy — это надёжный прокси-сервис для аренды ротируемых HTTP и SOCKS5-прокси со всего мира (200+ локаций, таргетинг до города и оператора связи). В наличии 10+ млн. качественных SOCKS5 proxy под любые задачи.
Базовая ситуация — ротация региональных прокси
Предположим, что вам нужно следить за обновлением IP SOCKS5-прокси: чтобы адрес подбирался из конкретной локации и всегда был работоспособным.
В этом случае вам ничего не нужно делать на уровне кода. Достаточно приобрести пакет прокси, настроить прокси-фильтр в личном кабинете (таргетинг, правила ротации, например, выбрать опцию замены при каждом новом запросе) и просто подключить прокси одной строкой (актуальные данные нужно взять в личном кабинете Froxy).
Пример скрипта, который получает на входе URL-сайта, анализирует страницу и обходит все найденные URL (в рамках обозначенного лимита, внешние URL сохраняются в отдельный файл, использование SOCKS5-прокси можно выключить через флаг USE_PROXY):
# Не забудьте установить отсутствующие библиотеки: pip install requests[socks] beautifulsoup4 tldextract
import requests
from bs4 import BeautifulSoup
from urllib.parse import urljoin, urlparse
import csv
import tldextract
from collections import deque
# Настройки
MAX_URLS = 500
MAX_RETRIES = 3
USE_PROXY = True
SOCKS5_PROXY = "socks5://proxy_user:PASSWRD@proxy.froxy.com:9000" # Замените на нужный
START_URL = "https://site.com" # Замените на нужный адрес
# Очередь и множества
visited_urls = set()
internal_urls = []
external_urls = []
def is_internal(url, base_domain):
extracted = tldextract.extract(url)
full_domain = f"{extracted.domain}.{extracted.suffix}"
return base_domain in full_domain
def extract_meta(soup):
title = soup.title.string.strip() if soup.title else ""
description = ""
desc_tag = soup.find("meta", attrs={"name": "description"})
if desc_tag and "content" in desc_tag.attrs:
description = desc_tag["content"].strip()
return title, description
def fetch(url):
tries = 0
proxies = {"http": SOCKS5_PROXY, "https": SOCKS5_PROXY} if USE_PROXY else None
while tries < MAX_RETRIES:
try:
response = requests.get(url, timeout=10, proxies=proxies)
if response.status_code == 200:
return response.text
except Exception:
pass
tries += 1
return None
def crawl(start_url):
parsed_base = urlparse(start_url)
base_domain = tldextract.extract(start_url).domain
queue = deque([start_url])
while queue and len(visited_urls) < MAX_URLS:
current_url = queue.popleft()
if current_url in visited_urls:
continue
visited_urls.add(current_url)
html = fetch(current_url)
if not html:
continue
soup = BeautifulSoup(html, "html.parser")
title, description = extract_meta(soup)
internal_urls.append([current_url, title, description])
for tag in soup.find_all("a", href=True):
link = tag["href"]
full_url = urljoin(current_url, link)
clean_url = full_url.split("#")[0]
if clean_url in visited_urls:
continue
parsed_url = urlparse(clean_url)
if not parsed_url.scheme.startswith("http"):
continue
if is_internal(clean_url, base_domain):
queue.append(clean_url)
else:
external_urls.append([clean_url])
def save_to_csv(filename, rows, headers):
with open(filename, mode="w", encoding="utf-8", newline="") as f:
writer = csv.writer(f)
writer.writerow(headers)
writer.writerows(rows)
# Запуск
if __name__ == "__main__":
crawl(START_URL)
save_to_csv("internal_urls.csv", internal_urls, ["URL", "Title", "Description"])
save_to_csv("external_urls.csv", external_urls, ["URL"])
print("The crawl is completed, data are saved in files: internal_urls.csv and external_urls.csv.")
Для тестирования работы SOCKS5-прокси можете взять код из любого другого готового парсера, который мы описывали ранее:
- Скрапинг сайтов с динамическим контентом с Python
- Веб-скрапинг с помощью Puppeteer: Практический подход
- Как создать TikTok-парсер: легальность и основные шаги
Посмотрите и другие мануалы в разделе с парсингом.
Прокси SOCKS5
Идеальные прокси для автоматизации и приватного веб-серфинга.
Лучшие практики для безопасного взаимодействия ботов и узлов
- Позаботьтесь о белых списках. Настройте SOCKS5-прокси сервер так, чтобы он принимал подключения только от доверенных IP-адресов и с парой логин+пароль (чтобы исключить доступ посторонних). Периодически проверяйте подключения на предмет подозрительной активности. Если у вы пользуетесь готовым прокси-сервисом, как Froxy, то нужно мониторить потребление трафика и периодически менять пароли для прокси-фильтров. Изучите как установить SOCKS5 прокси в документации провайдера.
- Шифруйте трафик. Напомним, SOCKS5-прокси не умеют шифровать данные, они только отвечают за прозрачные редиректы. Поэтому, если вы передаёте в поток чувствительную информацию, позаботьтесь о её закрытии от посторонних глаз. В интернете она передаётся всегда в открытом виде.
- Следите за разграничением прав и политиками доступа в команде, а также в разных ботах. Мы рекомендуем каждого отдельного парсера или бота (а ещё лучше — для каждого отдельного потока) подключать отдельный прокси-порт или фильтр. Так вы сможете лучше контролировать расход трафика и надёжно изолировать разрозненные среды. Например, если речь об антидетект-браузере, то SOCKS5-прокси нужно прописать для каждого отдельного браузерного профиля.
- Журналируйте всё (ведите логи). А ещё лучше — организуйте свою систему автоматизированного сбора данных об угрозах. С анализом логов и с поиском угроз на основе сигнатур могут помочь нейросети.
- Никогда не храните чувствительную информацию в коде скриптов. API-ключи, сертификаты шифрования, логины и пароли, параметры подключения к прокси и т.п. лучше всего хранить на уровне переменных среды или отдельно от основного кода. Особо опасная ситуация, когда ваш код хранится где-то в общем хранилище — GitHub, GitLab и пр.
Материал по теме: Гайд по успешному скрапингу без блокировок
Заключение и рекомендации
Используйте качественные прокси! Если нет сил и желания настраивать свою инфраструктуру, всегда найдутся готовые профильные сервисы. Но и здесь тоже свои подводные камни. Если не хотите оглядываться по сторонам, выбирайте Froxy.
Мы предоставляем ротируемые резидентные, мобильные и серверные прокси. Количество параллельных портов может быть до 1000 на один аккаунт. В сети свыше 10 млн. IP, таргетинг до уровня города (200+ стран присутствия) и провайдера связи. В наличии API и простое подключение, а ротация прокси по времени или при каждом новом запросе.