项目作者: sergey-scat

项目描述 :
A unified Python API for CAPTCHA solving services.
高级语言: Python
项目地址: git://github.com/sergey-scat/unicaps.git
创建时间: 2020-07-17T08:57:44Z
项目社区:https://github.com/sergey-scat/unicaps

开源协议:Apache License 2.0

下载




Unicaps

PyPI pyversions
PyPI version
PyPI status
CodeFactor

Unicaps is a unified Python API for CAPTCHA solving services.

PLEASE NOTE

⚠ A solving service API key is required to use this package!

⚠ The list of the supported services you can find in the table below.

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)
  • Has both synchronous and asynchronous client
  • Supports 10 types of CAPTCHAs
  • Supports 6 CAPTCHA solving services
  • Written Pythonic way and is intended for humans

Installation

pip install -U unicaps

Simple Usage Example

  1. >>> from unicaps import CaptchaSolver, CaptchaSolvingService
  2. >>> solver = CaptchaSolver(CaptchaSolvingService.TWOCAPTCHA, api_key="<PLACE_YOUR_API_KEY_HERE>")
  3. >>> solver.get_balance()
  4. 2.84161
  5. >>> solved = solver.solve_image_captcha(open("captcha.jpg", "rb"), is_phrase=False, is_case_sensitive=True)
  6. >>> solved.solution.text
  7. 'w93Bx'
  8. >>> solved.cost
  9. 0.00078
  10. >>> solved.report_good()
  11. True

Asynchronous Example

  1. import asyncio
  2. from pathlib import Path
  3. from unicaps import AsyncCaptchaSolver, CaptchaSolvingService
  4. API_KEY = '<PLACE_YOUR_API_KEY_HERE>'
  5. async def main():
  6. async with AsyncCaptchaSolver(CaptchaSolvingService.TWOCAPTCHA, API_KEY) as solver:
  7. solved = await solver.solve_image_captcha(
  8. Path("captcha.jpg"),
  9. is_phrase=False,
  10. is_case_sensitive=True
  11. )
  12. print(f'CAPTCHA text: {solved.solution.text}')
  13. await solved.report_good()
  14. if __name__ == '__main__':
  15. asyncio.run(main())

Supported CAPTCHAs / Services

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

Image CAPTCHA

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

Text CAPTCHA


What is this?

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
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com
rucaptcha.com English, Russian

reCAPTCHA v2

Service Regular Invisible Enterprise Google service1 Proxy2 Cookies3 User-Agent4
2captcha.com
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com
rucaptcha.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
anti-captcha.com
azcaptcha.com
cap.guru
deathbycaptcha.com
rucaptcha.com

FunCaptcha (Arkose Labs)

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

KeyCAPTCHA

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

Geetest

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

Geetest v4

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

hCaptcha

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

Capy Puzzle

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

Supported Proxy types

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

How to…

Common


Get balance

python from unicaps import CaptchaSolver, CaptchaSolvingService # init captcha solver with CaptchaSolver(CaptchaSolvingService.ANTI_CAPTCHA, "<PLACE YOUR API KEY HERE>") as solver: balance = solver.get_balance()

Get service status (is the service is up?)

python from unicaps import CaptchaSolver, CaptchaSolvingService # init captcha solver with CaptchaSolver(CaptchaSolvingService.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 = solver.get_status()

Get technical details after solving

python from unicaps import CaptchaSolver, CaptchaSolvingService # init captcha solver and solve the captcha with CaptchaSolver(CaptchaSolvingService.ANTI_CAPTCHA, "<PLACE YOUR API KEY HERE>") as solver: solved = solver.solve_...(...) # get cost of the solving cost = solved.cost # get cookies (if any) cookies = solved.cookies # report good captcha solved.report_good() # report bad captcha 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

python import pathlib from unicaps import CaptchaSolver, CaptchaSolvingService from unicaps.common import CaptchaCharType, CaptchaAlphabet # image file: it can be a Path, file-object or bytes. image_file = pathlib.Path(r'/tmp/captcha.png') # init captcha solver with CaptchaSolver(CaptchaSolvingService.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver: # solve CAPTCHA solved = solver.solve_image_captcha( image=image_file, 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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get page URL and site_key from your page page_url = ... site_key = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get page url and site_key from your page page_url = ... site_key = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get page URL, site_key and data_s from your page page_url = ... site_key = ... data_s = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get CAPTCHA params from the target page/site page_url = ... site_key = ... action = ... min_score = 0.7 # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get CAPTCHA params from the target page/site page_url = ... site_key = ... action = ... min_score = 0.7 # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get CAPTCHA params from the target page/site page_url = ... site_key = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get CAPTCHA params from the target page/site page_url = ... site_key = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get CAPTCHA params from the target page/site public_key = ... page_url = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get CAPTCHA params from the target page/site page_url = ... user_id = ... session_id = ... ws_sign = ... ws_sign2 = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get CAPTCHA params from the target page/site page_url = ... gt_key = ... challenge = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get CAPTCHA params from the target page/site page_url = ... captcha_id = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService # get CAPTCHA params from the target page/site site_key = ... page_url = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService from unicaps.common import CaptchaAlphabet, WorkerLanguage # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService, exceptions # init captcha solver with CaptchaSolver(CaptchaSolvingService.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 exceptions.AccessDeniedError: # wrong API key or the current IP is banned pass except exceptions.LowBalanceError: # low balance pass except exceptions.ServiceTooBusy: # no available slots to solve CAPTCHA pass except exceptions.SolutionWaitTimeout: # haven't received a solution within N minutes pass except exceptions.TooManyRequestsError: # request limit exceeded pass except exceptions.BadInputDataError: # bad CAPTCHA data (bad image, wrong URL, etc.) pass except exceptions.UnableToSolveError: # CAPTCHA unsolvable pass except exceptions.ProxyError: # bad proxy pass except exceptions.NetworkError: # network connection error pass else: # get response token token = solved.solution.token

Misc


Create a task and wait for the result

python from unicaps import CaptchaSolver, CaptchaSolvingService from unicaps.captcha import RecaptchaV2 # get page URL and site_key from your page page_url = ... site_key = ... # init captcha solver with CaptchaSolver(CaptchaSolvingService.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

python from unicaps import CaptchaSolver, CaptchaSolvingService from unicaps.proxy import ProxyServer # get page URL and site_key from your page page_url = ... site_key = ... proxy = 'http://user:password@domain.com:8080' user_agent = '<USER AGENT STRING>' cookies = {'name': 'value', ...} # init captcha solver with CaptchaSolver(CaptchaSolvingService.TWOCAPTCHA, "<PLACE YOUR API KEY HERE>") as solver: # solve CAPTCHA solved = solver.solve_recaptcha_v2( site_key=site_key, page_url=page_url, proxy=ProxyServer(proxy), user_agent=user_agent, cookies=cookies ) # get response token token = solved.solution.token

Real-life code examples

Examples

Buy me a coffee

https://www.buymeacoffee.com/sergey.scat