Вариант 1: белый список IP-адресов (рекомендуется для серверов)#
Подайте заявку с фактическим исходящим публичным IPv4 сервера в разделе «Доступ» и дождитесь активации администратором. NAT или VPN могут менять адрес, который видит шлюз. Подключение без пароля работает только после подтверждения записи для выданной услуги. Географию и сессию уточняйте отдельно: белый список не передаёт параметры имени пользователя.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
opts = Options()
opts.add_argument("--proxy-server=http://res.proxy-cyber.com:9000")
opts.add_argument("--headless=new")
driver = webdriver.Chrome(options=opts)
driver.get("https://api.ipify.org")
print(driver.find_element("tag name", "body").text)
driver.quit()Вариант 2: аутентификация WebDriver BiDi #
Пример использует поддерживаемый API WebDriver BiDi в Selenium: enable_bidi и network.add_auth_handler. До запуска задачи проверьте запрос аутентификации HTTP-прокси с установленными браузером и драйвером. Обработчик не ограничен одним хостом, поэтому используйте отдельную браузерную сессию без посторонних запросов пароля. Если ваша комбинация версий не поддерживает этот сценарий, используйте активированный белый список IP.
import os
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
options = Options()
options.enable_bidi = True
options.add_argument("--proxy-server=" + os.environ["PROXY_SERVER"])
with webdriver.Chrome(options=options) as driver:
handler = driver.network.add_auth_handler(
os.environ["PROXY_USER"], os.environ["PROXY_PASSWORD"]
)
try:
driver.get("https://api.ipify.org")
print(driver.find_element("tag name", "body").text)
finally:
driver.network.remove_auth_handler(handler)Firefox#
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
opts = Options()
opts.set_preference("network.proxy.type", 1)
opts.set_preference("network.proxy.http", "res.proxy-cyber.com")
opts.set_preference("network.proxy.http_port", 9000)
opts.set_preference("network.proxy.ssl", "res.proxy-cyber.com")
opts.set_preference("network.proxy.ssl_port", 9000)
opts.set_preference("media.peerconnection.enabled", False) # без утечки WebRTC
driver = webdriver.Firefox(options=opts) # сервер в белом списке, без запроса данныхПрактические правила#
- Используйте отдельный идентификатор сессии для каждого независимого сценария, если выданный шлюз поддерживает эту настройку. Допустимый срок и параметры географии проверяйте в реквизитах подключения. Резидентское устройство может отключиться раньше указанного срока: закреплённая сессия не гарантирует один IP на несколько дней. Для постоянного адреса сравните выделенные статические продукты.
- Используйте
--headless=newв Chrome: старый безголовый режим имеет характерный цифровой отпечаток. - Разные идентификаторы сессии разделяют настройки маршрутизации, но не cookie браузера или состояние приложения. Начните с небольшого числа процессов, измерьте ошибки и расход, затем постепенно увеличивайте нагрузку в пределах условий заказа и ограничений целевого сайта. Узкий выбор города или оператора может уменьшить доступную ёмкость.
Частые вопросы#
Почему Chrome показывает запрос учётных данных прокси при работе с Selenium?
Для постоянного сервера используйте активированный белый список IP либо проверьте обработчик аутентификации WebDriver BiDi в актуальном Selenium с вашим браузером. Новую интеграцию не стоит строить на архивированном Selenium Wire.