Запуска нескольких контейнеров Chrome с отдельными прокси-серверами
Для запуска нескольких контейнеров Chrome с отдельными прокси-серверами можно использовать Selenium, Docker и proxychains или сетевые алиасы Docker. Вот несколько подходов:
1. Использование аргументов прокси в Chrome
Если у вас есть разные прокси (например, proxy1:port1, proxy2:port2), вы можете запускать контейнеры с указанием прокси через chrome_options:
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 с разными прокси
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, а chrome2 — proxy2_net. Если в сети настроен прокси (например, через Squid), контейнеры будут выходить через него.
3. Использование proxychains для SOCKS5
Если прокси — это SOCKS5, можно использовать proxychains в контейнере:
apt update && apt install -y proxychains4
strict_chain proxy_dns tcp_read_time_out 15000 tcp_connect_time_out 8000
[ProxyList] socks5 127.0.0.1 9050 # Например, TOR-прокси
proxychains google-chrome --headless --disable-gpu
Этот метод подойдет, если вам нужно использовать SOCKS5-прокси, например, через TOR.
- HTTP(S) прокси → проще всего передавать аргумент
--proxy-serverв Chrome. - Разные контейнерные сети → можно использовать
docker-composeи bridge-сети. - SOCKS5 → нужен
proxychainsили расширение для Chrome.