Об этом проекте

Pydoll — это Python-библиотека для автоматизации браузеров на базе Chromium без WebDriver. Она подключается напрямую к Chrome через DevTools Protocol по WebSocket, поэтому нет ни бинарного файла драйвера, ни выставленного флага navigator.webdriver. API асинхронный и полностью типизированный, построен на asyncio и проверяется с помощью mypy. Ключевые возможности, описанные в README: - Очеловеченные взаимодействия: движение мыши по кривым Безье, реалистичный ввод и физика прокрутки, включаемые с помощью humanize=True. В README указано, что этого часто достаточно для прохождения поведенческих проверок, таких как Cloudflare Turnstile или reCAPTCHA v3, в зависимости от браузера и репутации IP. - Инъекция отпечатков: tab.apply_fingerprint() переопределяет User-Agent, Client Hints, navigator, WebGL, canvas, screen, шрифты, часовой пояс и локаль, сохраняя согласованность значений. В README говорится, что внедрённые переопределения выдерживают toString и интроспекцию прототипов и распространяются на Web Workers. Также отмечено, что Pydoll не генерирует и не поставляет отпечатки; примеры профилей приведены только для справки. - Структурированное извлечение: определите модель Pydantic и вызовите tab.extract() или tab.extract_all(), чтобы получить типизированные, проверенные данные, с автоопределением CSS/XPath, нацеливанием на атрибуты, пользовательскими преобразованиями и вложенными моделями. - Shadow DOM и iframes: поддержка shadow root, включая закрытые, а также кросс-доменных iframe, с использованием того же API поиска/запроса/клика. - Управление сетью: перехват запросов для блокировки рекламы и трекеров, мониторинг трафика для обнаружения API, запись и воспроизведение HAR 1.2, а также аутентифицированные HTTP-запросы, наследующие сессию браузера. - Пакеты страниц: сохранение страницы и её ресурсов в виде zip-архива, с возможностью встраивания ресурсов в один HTML-файл. - Параллелизм и удалённые подключения: несколько вкладок и изолированных контекстов браузера, а также подключение к браузерам в Docker или на удалённых серверах. - Декоратор повторных попыток с пользовательской логикой восстановления и экспоненциальной задержкой. Установка выполняется через pip install pydoll-python, без необходимости в бинарных файлах WebDriver или внешних зависимостях. В README отмечено, что в настоящее время проект поддерживается одним человеком, что разработка продолжается в более спокойном темпе, и что поддержка Firefox запланирована как цель после достижения проектом 10 тысяч звёзд. Также указано, что обход Turnstile не является магическим обходом и зависит от окружения и репутации IP.