feature!: добавлен механизм обхода антибот защиты
This commit is contained in:
1 parent
f5871710ab
commit
1d2fdeae70
17 files changed
+735
-16
No files matched your search
@@ -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()
|
||||
Reference in new issue
Block a user