Перейти к содержимому

Как использовать Proxy с Selenium: Complete Guide

TL;DR

Настройте GProxy proxy с Selenium WebDriver для автоматизации браузера и парсинга. Охватывает Chrome, Firefox, headless режим и proxy аутентификацию.

Язык: Python

Что вам понадобится

  • Установленный Python 3.8+
  • Установленный Selenium 4.x (pip install selenium)
  • ChromeDriver или GeckoDriver, соответствующий вашей версии браузера
  • Аккаунт GProxy с активным тарифным планом proxy

Пошаговая настройка

1

Установка Selenium

Установите Selenium и webdriver-manager

pip install selenium webdriver-manager
2

Настройка Chrome с proxy

Настройте Chrome WebDriver с использованием GProxy

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

opts = Options()
opts.add_argument('--proxy-server=http://proxy.gproxy.net:1000')
driver = webdriver.Chrome(options=opts)
3

Обработка аутентификации proxy

Для прокси с аутентификацией создайте расширение Chrome

import zipfile, json

manifest = {"version": "1.0.0", "manifest_version": 2,
  "name": "Proxy Auth",
  "permissions": ["proxy","webRequest","webRequestBlocking","<all_urls>"],
  "background": {"scripts": ["background.js"]}}

bg_js = 'chrome.webRequest.onAuthRequired.addListener(function(d) { return {authCredentials: {username:"USER", password:"PASS"}}; }, {urls:["<all_urls>"]}, ["blocking"]);'

with zipfile.ZipFile('proxy_auth.zip','w') as zp:
    zp.writestr('manifest.json', json.dumps(manifest))
    zp.writestr('background.js', bg_js)

opts.add_extension('proxy_auth.zip')
4

Добавление логики ротации

Ротируйте IP, создавая новые экземпляры driver

def get_driver():
    opts = Options()
    opts.add_argument('--headless=new')
    opts.add_argument('--proxy-server=http://proxy.gproxy.net:1000')
    return webdriver.Chrome(options=opts)

for url in urls:
    driver = get_driver()
    driver.get(url)
    # ... extract data
    driver.quit()
5

Тестирование настройки

Проверьте, что proxy работает

driver.get('https://httpbin.org/ip')
print(driver.find_element('tag name', 'pre').text)

Примеры кода

Chrome с расширением Proxy Auth · python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
import zipfile, json

def create_proxy_extension(proxy_host, proxy_port, proxy_user, proxy_pass):
    manifest = {
        "version": "1.0.0", "manifest_version": 2,
        "name": "GProxy Auth",
        "permissions": ["proxy", "webRequest", "webRequestBlocking", "<all_urls>"],
        "background": {"scripts": ["background.js"]}
    }
    bg_js = f'chrome.webRequest.onAuthRequired.addListener(function(details) {{ return {{authCredentials: {{username: "{proxy_user}", password: "{proxy_pass}"}}}}; }}, {{urls: ["<all_urls>"]}}, ["blocking"]);'
    ext_path = '/tmp/proxy_auth.zip'
    with zipfile.ZipFile(ext_path, 'w') as zp:
        zp.writestr('manifest.json', json.dumps(manifest))
        zp.writestr('background.js', bg_js)
    return ext_path

opts = Options()
opts.add_argument('--proxy-server=http://proxy.gproxy.net:1000')
opts.add_extension(create_proxy_extension('proxy.gproxy.net', 1000, 'USER', 'PASS'))
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=opts)
driver.get('https://httpbin.org/ip')
print(driver.find_element('tag name', 'pre').text)
driver.quit()
Firefox с proxy · python
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', 'proxy.gproxy.net')
opts.set_preference('network.proxy.http_port', 1000)
opts.set_preference('network.proxy.ssl', 'proxy.gproxy.net')
opts.set_preference('network.proxy.ssl_port', 1000)
driver = webdriver.Firefox(options=opts)
driver.get('https://httpbin.org/ip')
print(driver.page_source)
driver.quit()
Ротация Multi-Session · python
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from concurrent.futures import ThreadPoolExecutor

def scrape_with_proxy(url):
    opts = Options()
    opts.add_argument('--headless=new')
    opts.add_argument('--proxy-server=http://proxy.gproxy.net:1000')
    opts.add_argument('--no-sandbox')
    driver = webdriver.Chrome(options=opts)
    try:
        driver.set_page_load_timeout(30)
        driver.get(url)
        return driver.page_source
    finally:
        driver.quit()

urls = ['https://example.com/page1', 'https://example.com/page2']
with ThreadPoolExecutor(max_workers=4) as pool:
    results = list(pool.map(scrape_with_proxy, urls))

Зачем использовать proxy в Selenium?

Selenium автоматизирует реальные браузеры, что делает его идеальным для скрапинга сайтов с большим количеством JavaScript. Однако запуск автоматизированных браузеров с одного IP быстро активирует анти-бот системы. Более 10M+ резидентных IP от GProxy позволяют вам ротировать выходной IP вашего браузера, благодаря чему каждая сессия выглядит как уникальный посетитель из любой из 150+ стран.

Настройка proxy в Chrome WebDriver

Chrome поддерживает конфигурацию proxy через аргументы ChromeOptions. Для простых настроек proxy без аутентификации передайте аргумент --proxy-server. Для прокси с аутентификацией, таких как GProxy, вам понадобится расширение Chrome, которое обрабатывает аутентификацию proxy, так как Chrome не поддерживает формат username:password в URL proxy нативном уровне.

Настройка proxy в Firefox WebDriver

Firefox управляет конфигурацией proxy через настройки FirefoxProfile или Options. В отличие от Chrome, Firefox поддерживает аутентификацию proxy через настройки профиля, что делает его настройку с аутентифицированными эндпоинтами GProxy немного проще.

Особенности Headless режима

Запуск Selenium в режиме headless часто используется для развертывания на серверах. И Chrome, и Firefox поддерживают работу в headless режиме с proxy. Обратите внимание, что некоторые анти-бот системы обнаруживают headless браузеры — резидентные IP от GProxy помогают в этом, но также рассмотрите возможность использования undetected-chromedriver или добавления реалистичных отпечатков браузера.

Стратегия ротации proxy

В отличие от библиотек HTTP, Selenium поддерживает сессию браузера, поэтому вы не можете легко ротировать proxy для каждого запроса. Вместо этого ротируйте их для каждой сессии: создавайте новый экземпляр WebDriver с другим proxy для каждой задачи. Backconnect эндпоинт GProxy упрощает это — каждое новое соединение автоматически получает свежий IP.

Советы по производительности

Автоматизация браузера ресурсоемка. Чтобы максимизировать пропускную способность: используйте headless режим, отключайте загрузку изображений и CSS, когда это не требуется, устанавливайте тайм-ауты загрузки страниц и запускайте несколько экземпляров браузера параллельно с различными эндпоинтами GProxy для разнообразия IP.

Сценарии применения

JavaScript-Heavy Scraping

Скрапинг SPA и динамических веб-сайтов, требующих полного рендеринга в браузере.

Form Automation

Автоматизация отправки форм и многошаговых рабочих процессов через проксированные браузеры.

Visual Testing

Создание скриншотов из различных гео-локаций с использованием целевых резидентных прокси.

Account Management

Управление несколькими аккаунтами с уникальными IP на каждую сессию для безопасной автоматизации.

Pro советы
Используйте undetected-chromedriver для обхода Cloudflare и anti-bot систем. Отключите изображения через prefs, чтобы ускорить загрузку страниц, когда вам нужен только текст. Установите page_load_timeout на 30s, чтобы избежать зависаний на медленных страницах. Используйте sticky sessions в GProxy для многостраничных рабочих процессов, которым требуются стабильные IP.

FAQ

Работает ли Selenium с SOCKS5 прокси? +
Да, используйте --proxy-server=socks5://host:port для Chrome. Firefox поддерживает SOCKS5 через настройки профиля.
Можно ли менять прокси в середине сессии? +
Нет без перезапуска браузера. Для ротации на каждый запрос рассмотрите возможность использования Playwright или Puppeteer, которые поддерживают смену прокси на уровне контекста.
Как избежать обнаружения при использовании Selenium? +
Используйте undetected-chromedriver, резидентные IP от GProxy, реалистичные user agents и избегайте паттернов обнаружения headless-режима.
Selenium медленнее, чем requests? +
Да, автоматизация браузера в 5-10 раз медленнее. Используйте Selenium только для контента с JS-рендерингом; используйте requests/Scrapy для статических страниц.

Готовы попробовать?

Начните с GProxy за минуты — резидентные прокси от $0.85/GB, IPv6 от $0.03/прокси, оплата по факту использования.

Другие интеграции

support_agent
GProxy Support
Usually replies within minutes
Hi there!
Send us a message and we'll reply as soon as possible.