Skip to main content

All captcha solving services in one lib

Project description

anycaptcha

Telegram channel PyPI version info PyPI supported Python versions PyPI downloads per month

pip install anycaptcha

anycaptcha is a unified Python API for CAPTCHA solving services.

Special thanks to unicaps lib

Key Features

  • A unified Python interface that is independent of the service used
  • Uses native service protocol/endpoints (eg, no needs in patching hosts file)
  • Modern asynchronous client
  • Supports 10 types of CAPTCHAs
  • Supports 6 CAPTCHA solving services
  • Written Pythonic way and is intended for humans
  • Supports proxies in any format thanks to better-proxy

Example

from pathlib import Path
from anycaptcha import Solver, Service

API_KEY = '<PLACE_YOUR_API_KEY_HERE>'


async def main():
    async with Solver(Service.TWOCAPTCHA, API_KEY) as solver:
        solved = await solver.solve_image_captcha(
            Path("captcha.jpg"),
            is_phrase=False,
            is_case_sensitive=True
        )
        print(f'CAPTCHA text: {solved.solution.text}')
        await solved.report_good()

Supported CAPTCHAs / Services

Service Image Text reCAPTCHA v2 reCAPTCHA v3 FunCaptcha KeyCAPTCHA Geetest Geetest v4 hCaptcha Capy
2captcha.com
rucaptcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

Image CAPTCHA

Service Regular Case Sensitive Phrase Numbers only Letters only Math Length Language Comment for worker
2captcha.com Cyrillic/Latin
rucaptcha.com Cyrillic/Latin
anti-captcha.com Latin
azcaptcha.com Latin
cap.guru Latin
deathbycaptcha.com Latin

Text CAPTCHA

Text Captcha is a type of captcha that is represented as text and doesn't contain images. Usually you have to answer a question to pass the verification. For example: "If tomorrow is Saturday, what day is today?".

Service Language
2captcha.com English, Russian
rucaptcha.com English, Russian
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

reCAPTCHA v2

Service Regular Invisible Enterprise Google service1 Proxy2 Cookies3 User-Agent4
2captcha.com
rucaptcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

1 Support of solving reCAPTCHA on Google services (e.g. Google Search)
2 Support of solving via proxy server
3 Support of passing custom cookies
4 Support of passing custom User-Agent header

reCAPTCHA v3

Service Regular Enterprise Proxy Cookies User-Agent
2captcha.com
rucaptcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

FunCaptcha (Arkose Labs)

Service Regular Data (BLOB) Proxy Cookies User-Agent
2captcha.com
rucaptcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

KeyCAPTCHA

Service Regular Proxy Cookies User-Agent
2captcha.com
rucaptcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

Geetest

Service Regular API server GetLib Proxy Cookies User-Agent
2captcha.com
rucaptcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

Geetest v4

Service Regular Proxy Cookies User-Agent
2captcha.com
rucaptcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

hCaptcha

Service Regular Invisible Custom Data Proxy Cookies User-Agent
2captcha.com
rucaptcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

Capy Puzzle

Service Regular API server Proxy Cookies User-Agent
2captcha.com
rucaptcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

Supported Proxy types

Service HTTP HTTPS SOCKS 4 SOCKS 5
2captcha.com
rucaptcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com

How to...

Common

Get balance
from anycaptcha import Solver, Service


async def main():
    async with Solver(Service.ANTI_CAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        balance = await solver.get_balance()
        ...
Get service status (is the service is up?)
from anycaptcha import Solver, Service


async def main():
    with Solver(Service.ANTI_CAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # get status of the service (True - everything is Okay, False - probably the service is down)
        status = await solver.get_status()
        ...
Get technical details after solving
from anycaptcha import Solver, Service


async def main():
    # init captcha solver and solve the captcha
    with Solver(Service.ANTI_CAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        solved = await solver.solve_...(...)

        # get cost of the solving
        cost = solved.cost

        # get cookies (if any)
        cookies = solved.cookies

        # report good captcha
        await solved.report_good()

        # report bad captcha
        await solved.report_bad()

        # get solving start time
        start_time = solved.start_time

        # get solving end time
        end_time = solved.end_time

CAPTCHAs

Solve Image CAPTCHA
from pathlib import Path

from anycaptcha import Solver, Service
from anycaptcha import CaptchaAlphabet
from anycaptcha import CaptchaCharType


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_image_captcha(
            image=Path('captcha.jpg'),  # it can be a Path, file-object or bytes.
            char_type=CaptchaCharType.ALPHA,  # optional
            is_phrase=False,  # optional
            is_case_sensitive=True,  # optional
            is_math=False,  # optional
            min_len=4,  # optional
            max_len=6,  # optional
            alphabet=CaptchaAlphabet.LATIN,  # optional
            comment='Type RED letters only'  # optional
        )
        # get CAPTCHA text
        token = solved.solution.text
Solve reCAPTCHA v2
from anycaptcha import Solver, Service

# get page URL and site_key from your page
page_url = ...
site_key = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_recaptcha_v2(
            site_key=site_key,
            page_url=page_url,
            data_s='<data-s value>',  # optional
            api_domain='<"google.com" or "recaptcha.net">'  # optional
        )
        # get response token
        token = solved.solution.token
Solve reCAPTCHA v2 Invisible
from anycaptcha import Solver, Service

# get page url and site_key from your page
page_url = ...
site_key = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_recaptcha_v2(
            site_key=site_key,
            page_url=page_url,
            is_invisible=True,
            data_s='<data-s value>',  # optional
            api_domain='<"google.com" or "recaptcha.net">'  # optional
        )
        # get response token
        token = solved.solution.token
Solve reCAPTCHA v2 Enterprise
from anycaptcha import Solver, Service

# get page URL, site_key and data_s from your page
page_url = ...
site_key = ...
data_s = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_recaptcha_v2(
            site_key=site_key,
            page_url=page_url,
            is_enterprise=True,
            data_s=data_s,  # optional
            api_domain='<"google.com" or "recaptcha.net">'  # optional
        )
        # get response token
        token = solved.solution.token
Solve reCAPTCHA v3
from anycaptcha import Solver, Service

# get CAPTCHA params from the target page/site
page_url = ...
site_key = ...
action = ...
min_score = 0.7


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_recaptcha_v3(
            site_key=site_key,
            page_url=page_url,
            action=action,  # optional
            min_score=min_score,  # optional
            api_domain='<"google.com" or "recaptcha.net">'  # optional
        )
        # get response token
        token = solved.solution.token
Solve reCAPTCHA v3 Enterprise
from anycaptcha import Solver, Service

# get CAPTCHA params from the target page/site
page_url = ...
site_key = ...
action = ...
min_score = 0.7


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_recaptcha_v3(
            site_key=site_key,
            page_url=page_url,
            is_enterprise=True,
            action=action,  # optional
            min_score=min_score,  # optional
            api_domain='<"google.com" or "recaptcha.net">'  # optional
        )
        # get response token
        token = solved.solution.token
Solve hCaptcha
from anycaptcha import Solver, Service

# get CAPTCHA params from the target page/site
page_url = ...
site_key = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_hcaptcha(
            site_key=site_key,
            page_url=page_url,
            api_domain='< "hcaptcha.com" or "js.hcaptcha.com" >'  # optional
        )
        # get response token
        token = solved.solution.token
Solve hCaptcha Invisible
from anycaptcha import Solver, Service

# get CAPTCHA params from the target page/site
page_url = ...
site_key = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_hcaptcha(
            site_key=site_key,
            page_url=page_url,
            is_invisible=True,
            api_domain='< "hcaptcha.com" or "js.hcaptcha.com" >'  # optional
        )
        # get response token
        token = solved.solution.token
Solve FunCaptcha
from anycaptcha import Solver, Service

# get CAPTCHA params from the target page/site
public_key = ...
page_url = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_funcaptcha(
            public_key=public_key,
            page_url=page_url,
            service_url='<value of surl parameter>',  # optional
            blob='<value of data[blob] parameter>'  # optional
        )
        # get response token
        token = solved.solution.token
Solve KeyCaptcha
from anycaptcha import Solver, Service

# get CAPTCHA params from the target page/site
page_url = ...
user_id = ...
session_id = ...
ws_sign = ...
ws_sign2 = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_keycaptcha(
            page_url=page_url,
            user_id=user_id,
            session_id=session_id,
            ws_sign=ws_sign,
            ws_sign2=ws_sign2
        )
        # get response token
        token = solved.solution.token
Solve Geetest
from anycaptcha import Solver, Service

# get CAPTCHA params from the target page/site
page_url = ...
gt_key = ...
challenge = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_geetest(
            page_url=page_url,
            gt_key=gt_key,
            challenge=challenge,
            api_server='<value of api_server parameter>'  # optional
        )
        # get response token
        token = solved.solution.token
Solve Geetest v4
from anycaptcha import Solver, Service

# get CAPTCHA params from the target page/site
page_url = ...
captcha_id = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_geetest_v4(
            page_url=page_url,
            captcha_id=captcha_id
        )

        # get solution data
        lot_number = solved.solution.lot_number
        pass_token = solved.solution.pass_token
        gen_time = solved.solution.gen_time
        captcha_output = solved.solution.captcha_output
Solve Capy Puzzle
from anycaptcha import Solver, Service

# get CAPTCHA params from the target page/site
site_key = ...
page_url = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_capy_puzzle(
            site_key=site_key,
            page_url=page_url,
            api_server='<for example "https://api.capy.me">',  # optional
            challenge_type='<"puzzle" or "avatar">'  # optional
        )

        # get solution data
        captchakey = solved.solution.captchakey
        challengekey = solved.solution.challengekey
        answer = solved.solution.answer
Solve a text CAPTCHA
from anycaptcha import Solver, Service
from anycaptcha import CaptchaAlphabet
from anycaptcha import WorkerLanguage


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_text_captcha(
            text='Si mañana es domingo, ¿qué día es hoy?',
            alphabet=CaptchaAlphabet.LATIN,  # optional
            language=WorkerLanguage.SPANISH  # optional
        )

        # get answer
        answer = solved.solution.text  # Sábado

Error handling

Catch exceptions
import anycaptcha
from anycaptcha import Solver, Service


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        try:
            solved = solver.solve_recaptcha_v2(
                site_key=site_key,
                page_url=page_url,
            )
        except anycaptcha.AccessDeniedError:  # wrong API key or the current IP is banned
            pass
        except anycaptcha.LowBalanceError:  # low balance
            pass
        except anycaptcha.ServiceTooBusy:  # no available slots to solve CAPTCHA
            pass
        except anycaptcha.SolutionWaitTimeout:  # haven't received a solution within N minutes
            pass
        except anycaptcha.TooManyRequestsError:  # request limit exceeded
            pass
        except anycaptcha.BadInputDataError:  # bad CAPTCHA data (bad image, wrong URL, etc.)
            pass
        except anycaptcha.UnableToSolveError:  # CAPTCHA unsolvable
            pass
        except anycaptcha.ProxyError:  # bad proxy
            pass
        else:
            # get response token
            token = solved.solution.token

Misc

Create a task and wait for the result
from anycaptcha import Solver, Service
from anycaptcha.captcha import RecaptchaV2

# get page URL and site_key from your page
page_url = ...
site_key = ...


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # create a task
        task = solver.create_task(
            RecaptchaV2(site_key, page_url)
        )

        # print task ID
        print(task.task_id)

        # wait for task to be completed
        solved = task.wait()

        # get response token
        token = solved.solution.token
Add proxy, cookies and User-Agent
from anycaptcha import Solver, Service

# get page URL and site_key from your page
page_url = ...
site_key = ...
proxy = 'http://user:password@domain.com:8080'  # any format
user_agent = '<USER AGENT STRING>'
cookies = {'name': 'value', ...}


async def main():
    with Solver(Service.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver:
        # solve CAPTCHA
        solved = solver.solve_recaptcha_v2(
            site_key=site_key,
            page_url=page_url,
            proxy=proxy,
            user_agent=user_agent,
            cookies=cookies
        )
        # get response token
        token = solved.solution.token

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

anycaptcha-1.5.0.tar.gz (33.2 kB view details)

Uploaded Source

Built Distribution

anycaptcha-1.5.0-py3-none-any.whl (47.9 kB view details)

Uploaded Python 3

File details

Details for the file anycaptcha-1.5.0.tar.gz.

File metadata

  • Download URL: anycaptcha-1.5.0.tar.gz
  • Upload date:
  • Size: 33.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.4 Windows/11

File hashes

Hashes for anycaptcha-1.5.0.tar.gz
Algorithm Hash digest
SHA256 fb185cbbd6ea26a2d002d6eaf4f206d3c43e23c0efef3a3d046c3602f82fc18c
MD5 616db387497311af5ad569e86e632f4a
BLAKE2b-256 ca288eb01a92ded0740591a61e2d37ee0b5c47fc8cd7d5a94e5e443808227bdb

See more details on using hashes here.

File details

Details for the file anycaptcha-1.5.0-py3-none-any.whl.

File metadata

  • Download URL: anycaptcha-1.5.0-py3-none-any.whl
  • Upload date:
  • Size: 47.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.8.3 CPython/3.12.4 Windows/11

File hashes

Hashes for anycaptcha-1.5.0-py3-none-any.whl
Algorithm Hash digest
SHA256 b0054e6ce50a5ca38a5c415afcc40cd55500c06664d50b3953f9692d62456e99
MD5 77bc27134ffdc18208c6af97eb6a73ff
BLAKE2b-256 aabeac3b52c24b5589d8d5b6be5273d7b288376793e74c876f6293bcba110270

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page