Опции безопасности Selenium для веб-парсинга

Этот урок посвящён опциям безопасности Selenium, которые помогают обходить ограничения, связанные с SSL, CORS и изоляцией сайтов, при веб-парсинге элементов <address> с классом email на странице parsertools.ru/test.

Опции безопасности

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

--ignore-certificate-errors

Эта опция заставляет Chrome игнорировать любые ошибки, связанные с SSL-сертификатами. Она полезна при тестировании сайтов с самоподписанными сертификатами или недействительными цепочками доверия. Без этого параметра браузер будет блокировать такие сайты или выводить предупреждения. Использовать стоит с осторожностью, так как это снижает уровень защиты от атак «человек посередине» (MITM).

--allow-insecure-localhost

Разрешает использовать небезопасные (HTTP) соединения при работе с localhost. Это удобно для разработчиков, которые тестируют сайты и API на локальной машине без установки SSL-сертификата. В противном случае Chrome может блокировать загрузку ресурсов. Опция делает локальную отладку быстрее и проще.

--allow-running-insecure-content

Обычно браузер блокирует загрузку небезопасного контента (HTTP), если основной сайт открыт через HTTPS. Эта опция снимает такое ограничение и разрешает смешанный контент. Она может быть полезна при тестировании старых сайтов, где часть ресурсов доступна только по HTTP. Однако это ослабляет защиту пользователя, поэтому применять её стоит только в безопасной среде.

--disable-web-security

Отключает политику «Same-Origin Policy», которая предотвращает выполнение потенциально опасных скриптов с других доменов. Эта опция нужна в основном разработчикам и тестировщикам для кросс-доменных запросов без настройки CORS. Она позволяет работать с ресурсами с разных источников, будто они находятся на одном домене. Но при этом полностью убирает защиту от межсайтовых атак (XSS, CSRF), поэтому использовать её в продакшене крайне нежелательно.

--disable-site-isolation-trials

Отключает механизм изоляции сайтов, при котором каждый сайт работает в отдельном процессе для повышения безопасности. Это может улучшить производительность и снизить нагрузку на память при большом количестве открытых вкладок. Для автоматизации и тестирования иногда важно отключить эту функцию, чтобы браузер работал быстрее. Но нужно учитывать, что это уменьшает защиту от атак, связанных с межсайтовыми уязвимостями.

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

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

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('--ignore-certificate-errors')
options.add_argument('--allow-insecure-localhost')
options.add_argument('--allow-running-insecure-content')
options.add_argument('--disable-web-security')
options.add_argument('--disable-site-isolation-trials')

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()

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

  • Опции безопасности: Отключают проверки SSL и CORS, упрощая доступ к контенту.

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

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

Результат:

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

Оптимизация

  • Явное ожидание: Используйте WebDriverWait.
  • Осторожность: Отключение безопасности может быть рискованным, используйте только на доверенных сайтах.

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

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

Ограничения

  • Безопасность: Отключение веб-безопасности может сделать браузер уязвимым.
  • Совместимость: Некоторые опции зависят от версии Chrome.

Заключение

Опции безопасности Selenium упрощают веб-парсинг на сложных сайтах. Экспериментируйте на parsertools.ru/test.

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