Настройка прокси в Selenium на Python выполняется через объект Options соответствующего браузера или с помощью специализированных библиотек вроде Selenium-wire для поддержки авторизации. Использование качественных резидентских или мобильных прокси от GProxy позволяет эффективно обходить антифрод-системы, скрывать реальный IP-адрес и имитировать действия обычных пользователей из любой точки мира.
Зачем использовать прокси в связке с Selenium
Selenium — мощный инструмент для автоматизации браузера, но его стандартное использование с одного IP-адреса быстро приводит к блокировкам при парсинге данных или тестировании систем. Веб-ресурсы используют сложные алгоритмы мониторинга, которые отслеживают частоту запросов, заголовки и репутацию IP-адреса.
Основные задачи, которые решают прокси:
- Обход лимитов (Rate Limiting): Сайты ограничивают количество действий с одного IP в единицу времени. Ротация адресов позволяет распределять нагрузку.
- Геолокация: Проверка отображения контента для пользователей из разных стран или городов.
- Анонимизация: Скрытие факта автоматизации. При использовании элитных прокси сервер не видит реальный IP и не знает, что запрос идет через посредника.
- Обход блокировок по типу сети: Многие сервисы блокируют трафик из дата-центров. Резидентские прокси GProxy решают эту проблему, так как они выглядят как трафик от реальных провайдеров (ISP).
Базовая настройка прокси в Selenium 4
В актуальной версии Selenium 4 настройка прокси для Chrome и Firefox осуществляется через классы Options. Это самый простой способ, который работает для прокси без авторизации или с привязкой по IP (IP Whitelisting).
Настройка для Google Chrome
Для Chrome используется аргумент --proxy-server. Вы можете передать как HTTP, так и SOCKS5 прокси.
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
chrome_options = Options()
# Формат: IP:PORT
proxy_server = "185.123.456.78:8000"
chrome_options.add_argument(f'--proxy-server={proxy_server}')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=chrome_options)
driver.get("https://2ip.ru")
# Проверка IP в консоли
print(driver.title)
Настройка для Firefox
В Firefox механизм реализован через объект Proxy из модуля selenium.webdriver.common.proxy, который затем передается в Options.
from selenium import webdriver
from selenium.webdriver.firefox.options import Options
from selenium.webdriver.common.proxy import Proxy, ProxyType
proxy_ip_port = "185.123.456.78:8000"
proxy = Proxy()
proxy.proxy_type = ProxyType.MANUAL
proxy.http_proxy = proxy_ip_port
proxy.ssl_proxy = proxy_ip_port
options = Options()
options.proxy = proxy
driver = webdriver.Firefox(options=options)
driver.get("https://ident.me")

Авторизация по логину и паролю
Стандартный аргумент --proxy-server в Chrome не поддерживает передачу учетных данных в формате user:pass@ip:port. Если ваши прокси от GProxy требуют авторизации, есть два основных пути: использование расширения (Proxy Auth Extension) или библиотека Selenium-wire.
Метод 1: Использование расширения для Chrome
Этот метод считается наиболее стабильным и быстрым. Мы динамически создаем ZIP-архив с расширением, которое перехватывает запрос на авторизацию и подставляет логин и пароль.
import os
import zipfile
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
def create_proxy_auth_extension(proxy_host, proxy_port, proxy_user, proxy_pass, folder):
manifest_json = """
{
"version": "1.0.0",
"manifest_version": 2,
"name": "GProxy Auth",
"permissions": [
"proxy",
"tabs",
"unlimitedStorage",
"storage",
"",
"webRequest",
"webRequestBlocking"
],
"background": {
"scripts": ["background.js"]
},
"minimum_chrome_version":"22.0.0"
}
"""
background_js = f"""
var config = {{
mode: "fixed_servers",
rules: {{
singleProxy: {{
scheme: "http",
host: "{proxy_host}",
port: parseInt({proxy_port})
}},
bypassList: ["localhost"]
}}
}};
chrome.proxy.settings.set({{value: config, scope: "regular"}}, function() {{}});
function callbackFn(details) {{
return {{
authCredentials: {{
username: "{proxy_user}",
password: "{proxy_pass}"
}}
}};
}}
chrome.webRequest.onAuthRequired.addListener(
callbackFn,
{{urls: [""]}},
['blocking']
);
"""
extension_path = os.path.join(folder, 'proxy_auth_plugin.zip')
with zipfile.ZipFile(extension_path, 'w') as zp:
zp.writestr("manifest.json", manifest_json)
zp.writestr("background.js", background_js)
return extension_path
options = Options()
proxy_ext = create_proxy_auth_extension("proxy.gproxy.site", 1000, "user123", "pass456", "temp")
options.add_extension(proxy_ext)
driver = webdriver.Chrome(options=options)
Метод 2: Selenium-wire
Библиотека selenium-wire расширяет возможности стандартного Selenium, позволяя перехватывать все запросы и легко настраивать прокси с авторизацией через словарь proxy_storage.
from seleniumwire import webdriver # Обратите внимание на импорт
options = {
'proxy': {
'http': 'http://user:pass@ip:port',
'https': 'https://user:pass@ip:port',
'no_proxy': 'localhost,127.0.0.1'
}
}
driver = webdriver.Chrome(seleniumwire_options=options)
driver.get("https://google.com")
Выбор типа прокси для Selenium
Результативность автоматизации напрямую зависит от типа используемых прокси. GProxy предоставляет различные решения под конкретные задачи.
| Тип прокси | Уровень доверия (Trust Score) | Скорость | Сценарий использования |
|---|---|---|---|
| Дата-центр (DC) | Низкий | Очень высокая | Парсинг простых сайтов без защиты, тесты скорости. |
| Резидентские (Residential) | Высокий | Средняя | Масштабируемый парсинг, обход Cloudflare, работа с соцсетями. |
| Мобильные (4G/5G) | Максимальный | Высокая | Регистрация аккаунтов, обход самых жестких антифрод-систем. |

Продвинутые сценарии и оптимизация
При работе с Selenium важно не только настроить прокси, но и правильно сконфигурировать сам браузер, чтобы избежать детектирования.
Использование SOCKS5
SOCKS5 — более совершенный протокол по сравнению с HTTP. Он передает данные в чистом виде, не добавляя HTTP-заголовков, которые могут выдать использование прокси. В GProxy поддержка SOCKS5 реализована на всех тарифах. Для использования в Selenium через add_argument укажите схему:
chrome_options.add_argument('--proxy-server=socks5://185.123.456.78:8000')
Headless режим и прокси
Запуск браузера без графического интерфейса (--headless) часто используется на серверах. Однако в этом режиме некоторые сайты ведут себя иначе. При использовании прокси в headless-режиме обязательно добавляйте user-agent, иначе стандартный заголовок выдаст автоматизацию.
options.add_argument('--headless=new')
options.add_argument('user-agent=Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/119.0.0.0 Safari/537.36')
Ротация через GProxy API
Для профессионального скрапинга недостаточно одного IP. GProxy предоставляет возможность автоматической ротации. Вы можете либо использовать "endpoint" с ротацией на стороне сервера (каждый запрос — новый IP), либо менять IP по API. Интеграция в Python выглядит так:
import requests
import time
def rotate_gproxy_ip(api_key):
# Пример вызова API для смены IP на порту
response = requests.get(f"https://api.gproxy.site/rotate?key={api_key}")
if response.status_code == 200:
print("IP успешно изменен")
time.sleep(5) # Пауза для обновления соединения
Отладка и решение проблем
Если прокси не работает, проверьте следующие моменты:
- Протокол: Убедитесь, что вы используете правильный префикс (http:// или socks5://).
- Брандмауэр: Проверьте, разрешены ли исходящие соединения на порты прокси (обычно 8000, 10000 или другие).
- Формат авторизации: Если используете Selenium-wire, проверьте корректность спецсимволов в пароле. Если в пароле есть знак
@, его нужно закодировать (URL encode). - DNS утечки: По умолчанию Selenium может использовать системный DNS. Для полной анонимности в Firefox используйте настройку
network.proxy.socks_remote_dns.
Выводы
Настройка прокси в Selenium — это фундамент для стабильной автоматизации. Для простых задач достаточно стандартных Options, но для серьезных проектов с авторизацией лучше использовать метод с расширением или selenium-wire. Выбор между типами прокси зависит от бюджета и сложности целевого ресурса: резидентские прокси GProxy являются "золотым стандартом" для обхода большинства современных защит.
Практические советы:
- Всегда проверяйте текущий IP в начале скрипта через запрос к
https://api.ipify.org?format=json, чтобы убедиться, что прокси активен. - Используйте резидентские прокси для парсинга данных и мобильные для действий, связанных с социальными сетями или регистрациями.
- Не забывайте про эмуляцию отпечатков браузера (Canvas, WebGL), так как одного прокси часто недостаточно для полной маскировки бота.
Читайте также
Использование прокси с Puppeteer для Node.js: обход ограничений
Настройка прокси в Scrapy: эффективный веб-скрейпинг без блокировок
Автоматизация смены прокси: скрипты и инструменты для разных ОС
Настройка SOCKS5 прокси на роутерах OpenWrt/DD-WRT
Сравнение интеграции прокси в Dolphin Anty и AdsPower
