Is there a write up on how you deal with the captchas?
I was also interested in this and couldn't find more information in the docs, even in the deep dive [1].
However, I did find this for their CF Turnstile bypass [2]:
async def _bypass_cloudflare(
self,
event: dict,
custom_selector: Optional[tuple[By, str]] = None,
time_before_click: int = 2,
time_to_wait_captcha: int = 5,
):
"""Attempt to bypass Cloudflare Turnstile captcha when detected."""
try:
selector = custom_selector or (By.CLASS_NAME, 'cf-turnstile')
element = await self.find_or_wait_element(
*selector, timeout=time_to_wait_captcha, raise_exc=False
)
element = cast(WebElement, element)
if element:
# adjust the external div size to shadow root width (usually 300px)
await self.execute_script('argument.style="width: 300px"', element)
await asyncio.sleep(time_before_click)
await element.click()
except Exception as exc:
logger.error(f'Error in cloudflare bypass: {exc}')
[1] https://autoscrape-labs.github.io/pydoll/deep-dive/[2] https://github.com/autoscrape-labs/pydoll/blob/5fd638d68dd66...