Skip to main content

captcha-solver-sdk

Python SDK for the captcha-solver API. Zero dependencies, supports reCAPTCHA, Turnstile, hCaptcha, GeeTest, Tencent, and more.

Install

pip install captcha-solver-sdk

Or from source:

pip install git+https://github.com/your-org/captcha-solver-sdk.git

Quick Start

from captcha_solver_sdk import CaptchaSolver

solver = CaptchaSolver(
    api_key="sk_your_key_here",
    base_url="https://api.your-domain.com"  # or http://127.0.0.1:8900 for local
)

# reCAPTCHA v3
token = solver.recaptcha_v3(
    website_url="https://example.com/login",
    website_key="6LdyC2cUAAAAACGuDKpXeDorzUDWXmdqeg-xy696",
    page_action="login"
)

# reCAPTCHA v2
token = solver.recaptcha_v2(
    website_url="https://example.com",
    website_key="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
)

# Cloudflare Turnstile
token = solver.turnstile(
    website_url="https://example.com",
    website_key="0x4AAAAAAADnPIDROrmt1Wwj"
)

# hCaptcha
token = solver.hcaptcha(
    website_url="https://example.com",
    website_key="10000000-ffff-ffff-ffff-000000000001"
)

# GeeTest v4
result = solver.geetest_v4(
    website_url="https://gt4.geetest.com/",
    captcha_id="e392e1d7fd421dc63325744d5a2b9c73"
)
# result: {"captcha_id", "lot_number", "pass_token", "gen_time", "captcha_output"}

# Cloudflare Five-second Shield
result = solver.cloudflare_challenge("https://protected-site.com")
cookie = result["clearance_cookie"]
ua = result["user_agent"]

# Image OCR
import base64
with open("captcha.png", "rb") as f:
    text = solver.image_to_text(base64.b64encode(f.read()).decode())

# Tencent TCaptcha (Chinese)
result = solver.tencent(
    website_url="https://example.com",
    app_id="2043136173"
)
ticket = result["ticket"]

# Check balance
balance = solver.get_balance()
print(f"Balance: ${balance:.2f}")

Selenium Integration

from selenium import webdriver
from captcha_solver_sdk import CaptchaSolver

solver = CaptchaSolver(api_key="sk_...", base_url="https://api.example.com")
driver = webdriver.Chrome()
driver.get("https://example.com/login")

# Get sitekey from page
sitekey = driver.find_element("css selector", ".g-recaptcha").get_attribute("data-sitekey")
token = solver.recaptcha_v2(website_url=driver.current_url, website_key=sitekey)

# Inject token
driver.execute_script(f'document.getElementById("g-recaptcha-response").value = "{token}";')
driver.find_element("id", "submit").click()

Playwright Integration

from playwright.sync_api import sync_playwright
from captcha_solver_sdk import CaptchaSolver

solver = CaptchaSolver(api_key="sk_...", base_url="https://api.example.com")

with sync_playwright() as p:
    browser = p.chromium.launch()
    page = browser.new_page()
    page.goto("https://example.com/login")

    sitekey = page.get_attribute(".g-recaptcha", "data-sitekey")
    token = solver.recaptcha_v2(website_url=page.url, website_key=sitekey)

    page.evaluate(f'document.getElementById("g-recaptcha-response").value = "{token}"')
    page.click("#submit")

Async Support

import asyncio
from captcha_solver_sdk import CaptchaSolver

async def main():
    solver = CaptchaSolver(api_key="sk_...", base_url="https://api.example.com")
    # Use asyncio.to_thread for non-blocking calls
    token = await asyncio.to_thread(
        solver.recaptcha_v3,
        website_url="https://example.com",
        website_key="6Lf...",
        page_action="submit"
    )
    print(token)

asyncio.run(main())

Supported Types

Method Task Type Returns
recaptcha_v2() ReCaptchaV2TaskProxyLess token string
recaptcha_v3() ReCaptchaV3TaskProxyLess token string
turnstile() AntiTurnstileTaskProxyLess token string
cloudflare_challenge() CloudflareChallengeTask {clearance_cookie, user_agent, cookies}
hcaptcha() HCaptchaTaskProxyLess token string
geetest_v4() GeeTestTask (v4) {lot_number, pass_token, ...}
geetest_v3() GeeTestTask (v3) {challenge, validate, seccode}
image_to_text() ImageToTextTask text string
slider_gap() SliderTask {x, trajectory}
rotate() RotateCaptchaTask {angle, confidence}
tencent() TencentCaptchaTask {ticket, randstr}
netease() NetEaseCaptchaTask {NECaptchaValidate}
aws_waf() AntiAwsWafTask {token, cookie}
datadome() DataDomeTask {token, cookie}
solve() any dict

Metadata

Release files for captcha-solver-sdk 1.1.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for captcha-solver-sdk 1.1.0
File Size Uploaded
captcha_solver_sdk-1.1.0.tar.gz 7.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for captcha-solver-sdk 1.1.0
File Interpreter ABI Platform
captcha_solver_sdk-1.1.0-py3-none-any.whl Python 3 none any Details

Total release size: 15.0 kB

Release files / captcha_solver_sdk-1.1.0.tar.gz

Download URL captcha_solver_sdk-1.1.0.tar.gz
Size 7.5 kB
Tags Source
SHA-256 checksum
How to use checksums
96c6e6f8d481f605966d9185e2938c8b9b01d2b2c284362b497ff3f5df2444bd
BLAKE2b-256 checksum
How to use checksums
a16a6f9dcf5876b81a8f29a1406676d883872411a298db870f57c6c08daa8592
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release files / captcha_solver_sdk-1.1.0-py3-none-any.whl

Download URL captcha_solver_sdk-1.1.0-py3-none-any.whl
Size 7.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
39297428acb5bafe04ba8fca01415fff59547428e5b0d4be9c542af6f35c9003
BLAKE2b-256 checksum
How to use checksums
4ea6f72570667019b70e2bf617ac5daf95e32ccf8aa46e6c76e3610c0b9aa416
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via twine/6.2.0 CPython/3.10.12

Release history Release notifications | RSS feed

This release

1.1.0 This release

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page