Metadata-Version: 2.4
Name: capguru
Version: 0.4.0
Summary: Automatic captcha solving for Playwright via the Cap.Guru service: reCAPTCHA v2, hCaptcha, GeeTest, FunCaptcha, TikTok, AWS WAF, Yandex SmartCaptcha
Author: Cap.Guru
Project-URL: Homepage, https://cap.guru
Project-URL: Documentation, https://docs.cap.guru
Keywords: captcha,solver,playwright,recaptcha,hcaptcha,geetest,funcaptcha,cap.guru
Classifier: Programming Language :: Python :: 3
Classifier: Operating System :: OS Independent
Classifier: Framework :: AsyncIO
Classifier: Topic :: Internet :: WWW/HTTP :: Browsers
Requires-Python: >=3.9
Description-Content-Type: text/markdown
Requires-Dist: playwright>=1.40
Requires-Dist: httpx>=0.24
Requires-Dist: Pillow>=9.0

# capguru

Automatic captcha solving for [Playwright](https://playwright.dev/python/) via the [Cap.Guru](https://cap.guru) service.

Supported: reCAPTCHA v2, hCaptcha, GeeTest v3/v4, FunCaptcha (Arkose Labs), TikTok, AWS WAF, Yandex SmartCaptcha.

## Installation

```
pip install capguru
playwright install chromium
```

## Usage

```python
import asyncio
from playwright.async_api import async_playwright
from captcha_solver import CaptchaSolver, CapGuruFatalError


async def main():
    async with async_playwright() as p:
        browser = await p.chromium.launch(headless=False)
        page = await browser.new_page()

        solver = CaptchaSolver(page=page, api_key='YOUR_KEY', debug=True)
        await solver.setup()

        await page.goto('https://site.com/cap')

        try:
            kind = await solver.auto(timeout=30)
            print('Captcha:', kind or 'not found')
        except CapGuruFatalError as e:
            print('API key or balance problem:', e)

        await browser.close()

asyncio.run(main())
```

Create the solver before `page.goto()` and call `await solver.setup()`.

## Methods

```
await solver.auto(timeout=30)
await solver.detect()
await solver.solve_recaptcha2()
await solver.solve_hcaptcha()
await solver.solve_other()
await solver.solve_geetest()
await solver.solve_funcaptcha()
await solver.solve_tiktok()
await solver.solve_aws()
```

Full documentation: https://docs.cap.guru
