Сети
February 21, 2025

Запуска нескольких контейнеров Chrome с отдельными прокси-серверами

Для запуска нескольких контейнеров Chrome с отдельными прокси-серверами можно использовать Selenium, Docker и proxychains или сетевые алиасы Docker. Вот несколько подходов:

1. Использование аргументов прокси в Chrome

Если у вас есть разные прокси (например, proxy1:port1, proxy2:port2), вы можете запускать контейнеры с указанием прокси через chrome_options:

Пример для Python + Selenium:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options

def create_driver(proxy):
    chrome_options = Options()
    chrome_options.add_argument(f'--proxy-server={proxy}')
    chrome_options.add_argument('--headless')  # Запуск без GUI
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')

    driver = webdriver.Chrome(options=chrome_options)
    return driver

proxies = ["http://proxy1:port1", "http://proxy2:port2"]

drivers = [create_driver(proxy) for proxy in proxies]

# Используем браузеры
for driver in drivers:
    driver.get("http://checkip.amazonaws.com")  # Проверка IP
    print(driver.page_source)

# Закрываем все драйверы
for driver in drivers:
    driver.quit()

Этот метод удобен, если у вас HTTP(S)-прокси. Но если требуется SOCKS5, придется использовать proxychains или специальные расширения.

2. Создание сетевых алиасов в Docker

Можно запустить контейнеры с разными сетевыми интерфейсами и привязать их к разным прокси.

Docker Compose с разными прокси

Создайте docker-compose.yml:

version: '3'
services:
  chrome1:
    image: selenium/standalone-chrome
    networks:
      proxy1_net:
        ipv4_address: 192.168.1.2

  chrome2:
    image: selenium/standalone-chrome
    networks:
      proxy2_net:
        ipv4_address: 192.168.2.2

networks:
  proxy1_net:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.1.0/24
  proxy2_net:
    driver: bridge
    ipam:
      config:
        - subnet: 192.168.2.0/24

Теперь контейнер chrome1 использует proxy1_net, а chrome2proxy2_net. Если в сети настроен прокси (например, через Squid), контейнеры будут выходить через него.

3. Использование proxychains для SOCKS5

Если прокси — это SOCKS5, можно использовать proxychains в контейнере:

  • Установите proxychains в контейнере:
apt update && apt install -y proxychains4
  • Настройте /etc/proxychains.conf:
strict_chain
proxy_dns
tcp_read_time_out 15000
tcp_connect_time_out 8000
[ProxyList]
socks5 127.0.0.1 9050  # Например, TOR-прокси
  • Запускайте Chrome через proxychains:
proxychains google-chrome --headless --disable-gpu

Этот метод подойдет, если вам нужно использовать SOCKS5-прокси, например, через TOR.


  • HTTP(S) прокси → проще всего передавать аргумент --proxy-server в Chrome.
  • Разные контейнерные сети → можно использовать docker-compose и bridge-сети.
  • SOCKS5 → нужен proxychains или расширение для Chrome.

Благодарю за внимание 😊