Настройка прокси в Selenium для веб-парсинга

Этот урок посвящён настройке прокси в Selenium для анонимности при веб-парсинге элементов <address> с классом email на странице parsertools.ru/test.

Опции прокси

Эти параметры позволяют настроить работу браузера через прокси-сервер, что полезно для анонимизации, обхода блокировок и тестирования сетевых условий:

--proxy-server

Задаёт адрес и порт прокси-сервера, через который будет идти весь трафик браузера. Это удобно для обхода геоблокировок, тестирования сайтов из разных регионов или скрытия реального IP. Поддерживаются различные типы прокси, включая HTTP, HTTPS и SOCKS. Без этой опции браузер использует прямое соединение с интернетом. Часто применяется в автоматизации и парсинге для распределения нагрузки или обхода ограничений.

--proxy-bypass-list

Позволяет указать список доменов или IP-адресов, которые должны подключаться напрямую, минуя прокси. Это полезно, если нужно использовать прокси только для определённых сайтов, а внутренние или локальные ресурсы обходить напрямую. Можно задавать маски и диапазоны адресов. Опция делает конфигурацию более гибкой и безопасной. Без неё весь трафик браузера будет идти через указанный прокси.

Пример по этой теме с описанием можно посмотреть здесь.

Пример парсинга

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

# Настройка Selenium с прокси
options = webdriver.ChromeOptions()
options.add_argument('--proxy-server=http://127.0.0.1:8080')
options.add_argument('--proxy-bypass-list=*.google.com')

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)
url = "https://parsertools.ru/test/"
try:
    driver.get(url)
    time.sleep(3)
    print("****** Находим элементы с классом email ******")
    address_tags = driver.find_elements(By.CLASS_NAME, 'email')
    if address_tags:
        for i, address in enumerate(address_tags, 1):
            print(f"Элемент {i}: {address.text.strip()}")
    else:
        print("Класс 'email' не найден")
finally:
    driver.quit()

Как работает код

  • Прокси: Направляет запросы через указанный сервер.
  • Парсинг: Извлекает текст из <address> с классом email.

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

Пример структуры страницы:

Результат:

  • Элемент 1: Автор: admin@parsertools.ru

Оптимизация

  • Явное ожидание: Используйте WebDriverWait.
  • Прокси: Убедитесь, что прокси-сервер работает.

Этические аспекты

Проверяйте robots.txt, избегайте перегрузки сервера, соблюдайте правила использования данных.

Ограничения

  • Прокси: Требуется действующий сервер прокси.

Заключение

Настройка прокси в Selenium повышает анонимность. Экспериментируйте на parsertools.ru/test.

Больше уроков по парсингу на parsertools.ru/lessons.