Как использовать прокси в SeleniumBase на Python
В этом руководстве я расскажу, как настроить прокси с помощью SeleniumBase в Python. С помощью этого метода веб-скрапинг станет более эффективным и надежным, позволяя обходить распространенные препятствия и без проблем собирать нужные данные.
Что такое SeleniumBase?
SeleniumBase - это фреймворк, построенный на базе Selenium WebDriver, который предоставляет расширенные возможности автоматизации веб-процессов. Он упрощает автоматизацию браузера, тестирование и веб-скрапинг, предлагая инструменты для управления взаимодействием с браузером. Он полезен для создания наборов сквозных тестов и выполнения задач веб-скрапинга, связанных со сложными сценариями работы с браузером, такими как обработка всплывающих окон, отправка форм и загрузка динамического контента.
Зачем использовать прокси в веб-скрапинге?
Веб-сайты часто ограничивают число запросов, которые один IP-адрес может отправить за короткий промежуток времени. Сайт может заблокировать IP-адрес, если ваш скрипт отправляет слишком много запросов. Использование прокси-серверов поможет этого избежать:
- Ротация IP-адресов: Периодически меняйте IP-адрес, чтобы запросы выглядели так, будто они поступают из разных источников.
- Геотаргетинг: Доступ к контенту, ограниченному для определенных регионов, с помощью прокси-серверов из определенных мест.
- Анонимность: Скрытие вашего IP-адреса, чтобы вас не пометили как бота.
Лучшие прокси-сервисы для работы с SeleniumBase
Одного знания о том, как настраивать прокси в SeleniumBase, недостаточно. Я хочу представить вам некоторые из самых надежных прокси-сервисов, уделяя особое внимание резидентские прокси. Резидентные прокси позволяют легко управлять ротацией и считаются наиболее безопасным типом IP-адресов для веб-скрапинга.
- Яркие данные — Крупнейший провайдер, точное таргетирование, Proxy Manager, от $5.04 за ГБ
- Oxylabs — Обширная сеть, точный таргетинг, выделенная поддержка, от $4/ГБ
- Smartproxy — Большой пул, широкое покрытие локаций, самообслуживание, от $2.2/ГБ
- Webshare — Возможности настройки, самообслуживание, доступная цена, от $4.5 за ГБ
- SOAX — Гибкая ротация, точный таргетинг, поддержка 24/7, от $2.2/ГБ
Читать подробнее здесь. Я не связан ни с одним из поставщиков 🙂 .
Настройка SeleniumBase
Прежде чем начать работу с SeleniumBase, убедитесь, что на вашем компьютере установлен Python. Выполните следующие шаги, чтобы настроить SeleniumBase:
Установите SeleniumBase через pip:
pip install seleniumbase
Установите драйвер веб-браузера.
Для Chrome можно установить ChromeDriver:
seleniumbase install chromedriver
Проверьте установку:
Выполните простую команду, чтобы проверить, что SeleniumBase установлен правильно.
проверка базы данных
Использование прокси в SeleniumBase
Чтобы настроить прокси в SeleniumBase, нужно передать параметры прокси в сессию браузера. SeleniumBase позволяет задавать прокси, изменяя параметры запуска браузера. Ниже приведены способы настройки прокси:
Настройка прокси для одного запроса
Вы можете настроить прокси для одноразового запроса, указав прокси-сервер при настройке браузера. Вот базовый пример:
с сайта seleniumbase импорт BaseCase
класс ProxyTest(BaseCase):
def test_with_proxy(себя):
# Укажите прокси-сервер
прокси = "http://your_proxy_ip:port"
# Добавить параметры прокси-сервера
chrome_options = {
"прокси": {
"httpProxy": прокси,
"sslProxy": прокси,
"proxyType": "MANUAL",
}
}
# Откройте браузер с настройками прокси-сервера
себя.открыть("http://example.com", chrome_options=chrome_options)
# Проверка заголовка страницы или другие действия
self.assert_title("Пример домена")
Замените "your_proxy_ip:port" на IP-адрес и порт вашего прокси-сервера.
Вращающиеся прокси-серверы
Возможно, вам придется чередовать прокси для больших проектов по скраппингу, чтобы избежать обнаружения. Вот как можно использовать список прокси-серверов и переключаться между ними при каждом запросе:
импорт случайно
с сайта seleniumbase импорт BaseCase
класс RotatingProxyTest(BaseCase):
def test_with_rotating_proxies(себя):
# Список прокси-серверов
прокси = [
"http://proxy1_ip:port",
"http://proxy2_ip:port",
"http://proxy3_ip:port"
]
# Выберите случайный прокси из списка
прокси = random.choice(proxies)
# Добавить параметры прокси-сервера
chrome_options = {
"прокси": {
"httpProxy": прокси,
"sslProxy": прокси,
"proxyType": "MANUAL",
}
}
# Откройте браузер с настройками прокси-сервера
себя.открыть("http://example.com", chrome_options=chrome_options)
# Выполните необходимые действия
self.assert_title("Пример домена")
При таком подходе скрипт будет выбирать для каждого запроса свой прокси из списка, что поможет минимизировать риск обнаружения.
Использование прокси-серверов с защитой аутентификации
Если ваш прокси требует аутентификации, вы должны настроить учетные данные перед использованием прокси. Вот как это можно сделать:
с сайта selenium.webdriver импорт ChromeOptions
с сайта seleniumbase импорт BaseCase
класс AuthProxyTest(BaseCase):
def test_with_auth_proxy(себя):
# Установите прокси-сервер и учетные данные
прокси = "proxy_ip:port"
имя пользователя = "ваше_имя_пользователя"
пароль = "ваш_пароль"
# Параметры настройки Chrome
chrome_options = ChromeOptions()
chrome_options.add_argument(f' - proxy-server={proxy}')
# Обход аутентификации через прокси-сервер с помощью расширения Chrome
chrome_options.add_extension('proxy_auth_plugin.zip')
# Открыть браузер с опциями
self.driver = self.get_new_driver(chrome_options=chrome_options)
self.открыть("http://example.com")
# Проверьте некоторые условия
self.assert_title("Пример домена")
Приведенный выше код использует расширение Chrome для обработки аутентификации через прокси-сервер, для чего необходимо создать файл расширения (proxy_auth_plugin.zip) с учетными данными.
Проблемы и лучшие практики при работе с прокси-серверами в SeleniumBase
Использование прокси не лишено сложностей. Ниже приведены некоторые советы и стратегии, позволяющие получить максимальную отдачу от прокси-серверов при веб-скреппинге:
- Избегайте бесплатных прокси-серверов: Бесплатные прокси часто ненадежны, медленны и могут уже быть отмечены веб-сайтами. Для достижения лучших результатов инвестируйте в платные прокси-сервисы с хорошей репутацией.
- Мониторинг состояния прокси-сервера: Регулярно проверяйте состояние прокси-серверов, чтобы убедиться, что они работают как положено.
- Рандомизация времени запроса: Добавьте случайные задержки между запросами вместо того, чтобы отправлять их все сразу, чтобы снизить риск блокировки.
- Используйте режим без головы с умом: Хотя использование безголового режима может ускорить скраппинг, оно также может увеличить вероятность быть отмеченным как бот. Используйте его осторожно и сочетайте с другими техниками, например с подменой пользовательского агента.
- Как справляться с CAPTCHA: Если на сайте возникают проблемы с CAPTCHA, возможно, потребуется подключить сервис решения CAPTCHA.
Дополнительные техники для скрапинга с помощью прокси-серверов
Сочетание использования прокси с другими методами может сделать ваши усилия по скраппингу более эффективными. Вот несколько продвинутых стратегий:
- Подмена пользовательского агента: Случайным образом меняйте строку user-agent, чтобы имитировать запросы от разных браузеров и устройств.
- Управление сеансами: Эффективно управляйте cookies и сессиями, чтобы не провоцировать срабатывание механизмов защиты от ботов.
- Настройки безголового браузера: Используйте безголовые браузеры для поиска без отображения графического интерфейса, но измените настройки отпечатков пальцев браузера, чтобы избежать обнаружения.
Заключение
Прокси — мощный инструмент для обхода антискрапинговых мер и эффективного сбора данных. В SeleniumBase прокси настраиваются очень просто, независимо от того, нужен ли вам один прокси для тестирования или ротация для крупномасштабного скрапинга. Не забывайте соблюдать лучшие практики и постоянно контролировать производительность прокси. Сочетание прокси с такими методами, как подмена User-Agent и управление сессиями, помогает свести помехи к минимуму и собрать нужные данные.

