NP NEONPROXYPROXY NETWORK
КупитьЦеныFAQПартнёркаБлог Прокси-чекерМой IPAPI TG-бот

Прокси в Selenium WebDriver: Python и Chrome

Selenium WebDriver — классический инструмент UI-автоматизации и E2E-тестов. В связке с Python и Chrome он покрывает сценарии от регрессионных тестов до сбора данных с JS-heavy страниц. Прокси направляет трафик драйвера через внешний IP NEONPROXY. Ниже — рабочие рецепты для HTTPS- и SOCKS5-прокси с авторизацией. Применяйте их только в рамках robots.txt и Terms of Service целевых ресурсов.

HTTP-прокси через ChromeOptions

Базовая настройка без логина — один аргумент --proxy-server:

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

PROXY = "123.45.67.89:8080"

options = Options()
options.add_argument(f"--proxy-server=http://{PROXY}")

driver = webdriver.Chrome(options=options)
driver.get("https://api.ipify.org?format=json")
print(driver.page_source)
driver.quit()

Для прокси с логином и паролем Chrome не принимает credentials в аргументе — нужен ZIP-расширение или selenium-wire.

SVYAZVPN — свобода без границ

Авторизация через расширение Chrome

Универсальный способ для NEONPROXY — сгенерировать минимальное расширение on-the-fly:

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

def create_proxy_extension(host, port, user, password):
    manifest = """
    {
      "version": "1.0.0",
      "manifest_version": 2,
      "name": "Proxy Auth",
      "permissions": ["proxy", "tabs", "unlimitedStorage", "storage",
                      "webRequest", "webRequestBlocking", "<all_urls>"],
      "background": {"scripts": ["background.js"]}
    }
    """
    background = """
    var config = {
      mode: "fixed_servers",
      rules: {
        singleProxy: {
          scheme: "http",
          host: "%s",
          port: parseInt(%s)
        },
        bypassList: ["localhost"]
      }
    };
    chrome.proxy.settings.set({value: config, scope: "regular"}, function(){});
    chrome.webRequest.onAuthRequired.addListener(
      function(details) {
        return {authCredentials: {username: "%s", password: "%s"}};
      },
      {urls: ["<all_urls>"]},
      ["blocking"]
    );
    """ % (host, port, user, password)

    plugin_path = "proxy_auth_plugin.zip"
    with zipfile.ZipFile(plugin_path, "w") as zp:
        zp.writestr("manifest.json", manifest)
        zp.writestr("background.js", background)
    return plugin_path

options = Options()
options.add_extension(create_proxy_extension(
    "123.45.67.89", "8080", "login", "password"
))
driver = webdriver.Chrome(options=options)

SOCKS5 через selenium-wire (альтернатива)

Пакет selenium-wire упрощает SOCKS5 и HTTP auth без расширений:

from seleniumwire import webdriver

options = {"proxy": {
    "http": "socks5://login:password@123.45.67.89:1080",
    "https": "socks5://login:password@123.45.67.89:1080",
    "no_proxy": "localhost,127.0.0.1"
}}

driver = webdriver.Chrome(seleniumwire_options=options)
driver.get("https://example.com")

Подробнее о протоколах — SOCKS5 vs HTTPS.

Ротация пула

Для парсинга создавайте новый driver на каждый прокси и закрывайте его после задачи. Стратегии — в гайде по ротации:

proxies = ["1.2.3.4:8080", "5.6.7.8:8080"]

for proxy in proxies:
    options = Options()
    options.add_argument(f"--proxy-server=http://{proxy}")
    driver = webdriver.Chrome(options=options)
    try:
        driver.get("https://example.com")
        # ... сбор данных ...
    finally:
        driver.quit()

Отладка и проверка IP

Если страница не грузится — проверьте прокси в чекере и сверьте IP через «Мой IP». Типичные ошибки: неверный порт, истёкший срок аренды, блокировка headless Chrome на стороне сайта (не прокси).

Для простых HTTP-запросов без браузера используйте requests — быстрее и легче Selenium.

Headless и стабильность

Добавьте options.add_argument("--headless=new") для серверных воркеров. Закрепляйте версию ChromeDriver через webdriver-manager. Список прокси подгружайте из API NEONPROXY.

Выбор IPv4 vs IPv6 — в как выбрать прокси. Сравнение с Playwright — отдельная статья. Заказ — здесь.