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

модуль selenium python

Установка

pip install selenium

Драйвера

Дравера это приложения которые непосредственно управляют браузером.

БраузерСсылка для скачивания драйвера
Chrome:https://chromedriver.chromium.org/downloads
Edge:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
Firefox:https://github.com/mozilla/geckodriver/releases
Safari:https://webkit.org/blog/6900/webdriver-support-in-safari-10/

Использование браузеров

from selenium import webdriver
from selenium.webdriver.common.keys import Keys

Chrome

Тут можно скачать chrome для тестирования ее можно испльзвать локально.

Свободный браузер Chromium можно скачать тут или его варианты

Создание драйвера

from selenium.webdriver.chrome.service import Service as ChromeService
options = Options()
options.binary_location = "/home/path_to_local_chrome/chrome"
options.add_experimental_option("detach", True) # Если нужно, чтобы браузер на закрывался после выполнения скрипта

chromedriver = "/home/path_to_local_chromedriver/chromedriver"
service = ChromeService(executable_path=chromedriver)
driver = webdriver.Chrome(options=options, service=service)

Firefox

Создание драйвера

firefox_options = webdriver.FirefoxOptions()
firefox_options.add_argument("--private")
driver = webdriver.Firefox(options=firefox_options)

Обнаружение автоматизаци

По умолчанию сайт понимает когда не него заходит браузер с плагином автоматизации, или если запросы идут с браузера в headless "скрытом" режиме. Пример как происходит Обнаружение Chrome headless режима бразуера.

В некоторых случаях полезно препятствовать обнаружению.

Стандартный selenium

Можно попробовать изменить конфиги используя стандартный модуль selenuim

from selenium.webdriver.chrome.options import Options
options = Options()

options.add_argument('--disable-blink-features=AutomationControlled')
options.add_experimental_option('useAutomationExtension', False) # Turn-off useAutomationExtension
options.add_experimental_option("excludeSwitches", ["enable-automation"]) # Exclude the collection of enable-automation switches

driver = webdriver.Chrome(options=options)
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
driver.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.53 Safari/537.36'})
print(driver.execute_script("return navigator.userAgent;"))

Сторонние сборки

Еще вариантом могут быть уже пропатченые драйвера. Например

Официальные ссылки

Home:https://selenium.dev
Docs:selenium package API
Dev:https://github.com/SeleniumHQ/Selenium
PyPI:https://pypi.org/project/selenium/
IRC:#selenium channel on LiberaChat
Docs:selenium-python.readthedocs.io - Неплохой док от индуса