Перейти до вмісту

Як використовувати Proxy з Selenium: повний гайд

TL;DR

Налаштуйте GProxy proxy за допомогою Selenium WebDriver для автоматизації браузера та скрапінгу. Охоплює Chrome, Firefox, headless mode та proxy authentication.

Мова: 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

Для 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()
Ротація мульти-сесій · 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. Для автентифікованих proxy, таких як 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

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

Visual Testing

Створення скріншотів з різних географічних локацій за допомогою таргетованих резидентських proxy.

Account Management

Керування кількома акаунтами з унікальними IP для кожної сесії для безпечної автоматизації.

Поради професіоналів
Використовуйте undetected-chromedriver, щоб обійти Cloudflare та антибот-системи. Вимкніть зображення за допомогою prefs, щоб прискорити завантаження сторінок, коли вам потрібен лише текст. Встановіть page_load_timeout на 30s, щоб уникнути зависання на повільних сторінках. Використовуйте GProxy sticky sessions для багатосторінкових робочих процесів, які потребують стабільних IP.

FAQ

Чи працює Selenium з SOCKS5 проксі? +
Так, використовуйте --proxy-server=socks5://host:port для Chrome. Firefox підтримує SOCKS5 через налаштування профілю.
Чи можу я ротувати проксі посеред сесії? +
Ні без перезапуску браузера. Для ротації на кожен запит розгляньте використання Playwright або Puppeteer, які підтримують зміну проксі для кожного контексту.
Як уникнути виявлення з Selenium? +
Використовуйте undetected-chromedriver, GProxy residential IPs, реалістичні user agents та уникайте патернів headless detection.
Чи Selenium повільніший за requests? +
Так, автоматизація браузера в 5-10 разів повільніша. Використовуйте Selenium лише для JS-rendered контенту; використовуйте 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.