feature!: добавлен механизм обхода антибот защиты

This commit is contained in:
protokey committed 2026-09-17 15:49:12 +04:00
1 parent f5871710ab
commit 1d2fdeae70
17 files changed
+735 -16

No files matched your search

+32
View File
@@ -0,0 +1,32 @@
"""
реестр детекторов, порядок проверки
"""
from playwright.async_api import Page
from .base import AntiBotProvider
from .exceptions import ProviderNotDetected
_detectors: list[AntiBotProvider] = []
def register(provider_cls) -> AntiBotProvider:
_detectors.append(provider_cls())
return provider_cls
async def select_any(page: Page, **kwargs) -> AntiBotProvider:
for provider in _detectors:
if await provider.detect(page):
provider.configure(**kwargs)
return provider
else:
raise ProviderNotDetected()
async def select_one(page: Page, provider_name: str, **kwargs) -> AntiBotProvider:
for provider in _detectors:
if provider.provider == provider_name:
provider.configure(**kwargs)
return provider
else:
raise ProviderNotDetected()