Skip to content

Commit

Permalink
- Added description of parameters to method documentation in solver.p…
Browse files Browse the repository at this point in the history
…y file

- Updated the “see more info in the API docs” link in the README.md file
- Added a description of methods supporting proxies for the solution and information about whether we have our own proxy for customers in the proxies section in the README.md file
- Added extended examples amazon_waf_options.py, geetest_v4_options,.py, turnstile_options.py to examples.
- Added data parameter to hcaptcha_options.py example
- Changed the name of the sol=>solver variable in the example file keycaptcha_options.py
- Added package description to __init__.py file

Signed-off-by: Maxim S <poplers24@gmail.com>
  • Loading branch information
poplers24 committed May 2, 2024
1 parent 4e770bf commit 0c0c76f
Show file tree
Hide file tree
Showing 8 changed files with 694 additions and 309 deletions.
33 changes: 20 additions & 13 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -30,7 +30,7 @@ The easiest way to quickly integrate the 2Captcha captcha-solving service into y
- [Friendly Captcha](#friendly-captcha)
- [Cutcaptcha](#cutcaptcha)
- [Other methods](#other-methods)
- [send / getResult](#send--getresult)
- [send / get_result](#send--getresult)
- [balance](#balance)
- [report](#report)
- [Error handling](#error-handling)
Expand Down Expand Up @@ -80,7 +80,7 @@ solver = TwoCaptcha(**config)
| pollingInterval | 10 | Interval in seconds between requests to `res.php` API endpoint, setting values less than 5 seconds is not recommended |

> **IMPORTANT:** once `callback` is defined for `TwoCaptcha` instance, all methods return only the captcha ID and DO NOT poll the API to get the result. The result will be sent to the callback URL.
To get the answer manually use [getResult method](#send--getresult)
To get the answer manually use [get_result method](#send--getresult)

## Solve captcha
When you submit any image-based captcha use can provide additional options to help 2captcha workers to solve it properly.
Expand Down Expand Up @@ -162,20 +162,21 @@ result = solver.geetest(gt='f1ab2cdefa3456789012345b6c78d90e',
```


### hCaptcha
Use this method to solve the hCaptcha challenge. Returns a token to bypass the captcha.
### GeeTest v4
Use this method to solve GeeTest v4. Returns the response in JSON.
```python
result = solver.hcaptcha(sitekey='10000000-ffff-ffff-ffff-000000000001',
url='https://www.site.com/page/',
result = solver.geetest_v4(captcha_id='e392e1d7fd421dc63325744d5a2b9c73',
url='https://www.site.com/page/',
param1=..., ...)

```

### GeeTest v4
Use this method to solve GeeTest v4. Returns the response in JSON.

### hCaptcha
Use this method to solve the hCaptcha challenge. Returns a token to bypass the captcha.
```python
result = solver.geetest_v4(captcha_id='e392e1d7fd421dc63325744d5a2b9c73',
url='https://www.site.com/page/',
result = solver.hcaptcha(sitekey='10000000-ffff-ffff-ffff-000000000001',
url='https://www.site.com/page/',
param1=..., ...)

```
Expand Down Expand Up @@ -299,7 +300,7 @@ result = solver.cutcaptcha(misery_key='ad52c87af17e2ec09b8d918c9f00416b1cb8c320'

## Other methods

### send / getResult
### send / get_result
These methods can be used for manual captcha submission and answer polling.
```python
import time
Expand Down Expand Up @@ -347,7 +348,11 @@ except TimeoutException as e:

### Proxies

You can pass your proxy as an additional argument for methods: recaptcha, funcaptcha and geetest. The proxy will be forwarded to the API to solve the captcha.
You can pass your proxy as an additional argument for methods: recaptcha, funcaptcha, geetest, geetest v4, hcaptcha,
keycaptcha, capy pazzle, grid, rotate, lemin, atbcaptcha, turnstile, amazon waf, mtcaptcha, friendly captcha, cutcaptcha.
The proxy will be forwarded to the API to solve the captcha.

We have our own proxies that we can offer you. [Buy residential proxies] for avoid restrictions and blocks. [Quick start].

```python
proxy={
Expand Down Expand Up @@ -377,7 +382,9 @@ async def captchaSolver(image):
[2Captcha]: https://2captcha.com/
[2captcha sofware catalog]: https://2captcha.com/software
[pingback settings]: https://2captcha.com/setting/pingback
[post options]: https://2captcha.com/2captcha-api#normal_post
[post options]: https://2captcha.com/2captcha-api#solving_normal_captcha
[list of supported languages]: https://2captcha.com/2captcha-api#language
[examples directory]: /examples
[asyncio]: https://docs.python.org/3/library/asyncio.html
[Buy residential proxies]: https://2captcha.com/proxy/residential-proxies
[Quick start]: https://2captcha.com/proxy?openAddTrafficModal=true
47 changes: 47 additions & 0 deletions examples/amazon_waf_options.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,47 @@
import sys
import os

sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

from twocaptcha import TwoCaptcha

# in this example we store the API key inside environment variables that can be set like:
# export APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Linux or macOS
# set APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Windows
# you can just set the API key directly to it's value like:
# api_key="1abc234de56fab7c89012d34e56fa7b8"

api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')


config = {
'server': '2captcha.com', # can be also set to 'rucaptcha.com'
'apiKey': api_key,
'softId': 123,
# 'callback': 'https://your.site/result-receiver', # if set, sovler with just return captchaId, not polling API for the answer
'defaultTimeout': 120,
'recaptchaTimeout': 600,
'pollingInterval': 10,
}

solver = TwoCaptcha(**config)

try:
result = solver.amazon_waf(sitekey='AQIDAHjcYu/GjX+QlghicBgQ/7bFaQZ+m5FKCMDnO+vTbNg96AGIqvS8v6ScFa8ZpNRrlQgKAAAAfjB8BgkqhkiG9w0BBwagbzBtAgEAMGgGCSqGSIb3DQEHATAeBglghkgBZQMEAS4wEQQMx9gxoe10Zg35PWhzAgEQgDvUtMMkqkFQByMLK2329D8iX4mjvaTuUhU70LD4vLp54v3+4K1nYY2hB+OM1hMbncnMbP63y4UOrY77jg==',
iv='CgAGVTNd9JAAAAnB',
context='Lte3LdSjiAN6nNcV0omaNt/ydFmd/eTwRCxYEeuW97LZe3IbAXWi4Er9CWQ3HbDgJ0KSpDgwyoskjKCK4VRQzYufPCdrfCYCveZCt9pMNoAluEtj0oix2GXOPVkw2d4bYOg3MtY5ZUHLR3L467NEInnRE99w5NOgokH5Ie7eOi5sYAqYtZrHABGEgrdAOVvU7bcwvrCERi9wB/WS75geb3oFy6z7Apue9GFa86Ld20jjgy4LWfaen+2fpfKHmCHTKVWfto17Bg+l5i0sr+uFRzpk1We64Fhh1Wl1NHF6M6dpS5s=',
url='https://efw47fpad9.execute-api.us-east-1.amazonaws.com/latest',
challenge_script="https://41bcdd4fb3cb.610cd090.us-east-1.token.awswaf.com/41bcdd4fb3cb/0d21de737ccb/cd77baa6c832/challenge.js",
captcha_script="https://41bcdd4fb3cb.610cd090.us-east-1.captcha.awswaf.com/41bcdd4fb3cb/0d21de737ccb/cd77baa6c832/captcha.js",
callback="https://mysite.com/2captcha.txt"
# proxy={
# 'type': 'HTTPS',
# 'uri': 'login:password@IP_address:PORT'
# }
)

except Exception as e:
sys.exit(e)

else:
sys.exit('result: ' + str(result))
41 changes: 41 additions & 0 deletions examples/geetest_v4_options.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
import sys
import os
import requests
sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

from twocaptcha import TwoCaptcha

# in this example we store the API key inside environment variables that can be set like:
# export APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Linux or macOS
# set APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Windows
# you can just set the API key directly to it's value like:
# api_key="1abc234de56fab7c89012d34e56fa7b8"

api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')

config = {
'server': '2captcha.com', # can be also set to 'rucaptcha.com'
'apiKey': api_key,
'softId': 123,
# 'callback': 'https://your.site/result-receiver', # if set, sovler with just return captchaId, not polling API for the answer
'defaultTimeout': 120,
'recaptchaTimeout': 600,
'pollingInterval': 10,
}

solver = TwoCaptcha(**config)

try:
result = solver.geetest_v4(captcha_id='e392e1d7fd421dc63325744d5a2b9c73',
url='https://2captcha.com/demo/geetest-v4',
# proxy={
# 'type': 'HTTPS',
# 'uri': 'login:password@IP_address:PORT'
# }
)

except Exception as e:
sys.exit(e)

else:
sys.exit('result: ' + str(result))
15 changes: 9 additions & 6 deletions examples/hcaptcha_options.py
Original file line number Diff line number Diff line change
Expand Up @@ -27,12 +27,15 @@
solver = TwoCaptcha(**config)

try:
result = solver.hcaptcha(sitekey='3ceb8624-1970-4e6b-91d5-70317b70b651',
url='https://2captcha.com/demo/hcaptcha?difficulty=easy',
# proxy={
# 'type': 'HTTPS',
# 'uri': 'login:password@IP_address:PORT'
# }
result = solver.hcaptcha(sitekey='f7de0da3-3303-44e8-ab48-fa32ff8ccc7b',
url='https://2captcha.com/ru/demo/hcaptcha-invisible',
# invisible=1,
# data="rqdata",
# useragent="",
# proxy={
# 'type': 'HTTPS',
# 'uri': 'login:password@IP_address:PORT'
# }
)

except Exception as e:
Expand Down
39 changes: 29 additions & 10 deletions examples/keycaptcha_options.py
Original file line number Diff line number Diff line change
@@ -1,22 +1,41 @@
import sys
'../../' in sys.path or sys.path.append('../../')
import os

sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

from twocaptcha import TwoCaptcha

# in this example we store the API key inside environment variables that can be set like:
# export APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Linux or macOS
# set APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Windows
# you can just set the API key directly to it's value like:
# api_key="1abc234de56fab7c89012d34e56fa7b8"

api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')


sol = TwoCaptcha('YOUR_API_KEY', defaultTimeout=120)
config = {
'server': '2captcha.com', # can be also set to 'rucaptcha.com'
'apiKey': api_key,
'softId': 123,
# 'callback': 'https://your.site/result-receiver', # if set, sovler with just return captchaId, not polling API for the answer
'defaultTimeout': 120,
'recaptchaTimeout': 600,
'pollingInterval': 10,
}

solver = TwoCaptcha(**config)

try:
result = sol.keycaptcha(s_s_c_user_id = 10,
s_s_c_session_id = '493e52c37c10c2bcdf4a00cbc9ccd1e8',
s_s_c_web_server_sign = '9006dc725760858e4c0715b835472f22-pz-',
s_s_c_web_server_sign2 = '2ca3abe86d90c6142d5571db98af6714',
url = 'https://www.keycaptcha.ru/demo-magnetic/',
proxy = {
'type': 'HTTPS',
'uri': 'login:password@IP_address:PORT'})
result = solver.keycaptcha(s_s_c_user_id = 184015,
s_s_c_session_id = 'c32c9934c68b2968bee0332b9346da42',
s_s_c_web_server_sign = 'c93c8d136d5ee6ee6fe27ab2be54901d',
s_s_c_web_server_sign2 = 'eec85fcfeda28bffd7764d712d4089e7',
url = 'https://2captcha.com/ru/demo/keycaptcha'
# proxy = {
# 'type': 'HTTPS',
# 'uri': 'login:password@IP_address:PORT'}
)


except Exception as e:
Expand Down
46 changes: 46 additions & 0 deletions examples/turnstile_options.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,46 @@
import sys
import os

sys.path.append(os.path.dirname(os.path.dirname(os.path.realpath(__file__))))

from twocaptcha import TwoCaptcha

# in this example we store the API key inside environment variables that can be set like:
# export APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Linux or macOS
# set APIKEY_2CAPTCHA=1abc234de56fab7c89012d34e56fa7b8 on Windows
# you can just set the API key directly to it's value like:
# api_key="1abc234de56fab7c89012d34e56fa7b8"

api_key = os.getenv('APIKEY_2CAPTCHA', 'YOUR_API_KEY')


config = {
'server': '2captcha.com', # can be also set to 'rucaptcha.com'
'apiKey': api_key,
'softId': 123,
# 'callback': 'https://your.site/result-receiver', # if set, sovler with just return captchaId, not polling API for the answer
'defaultTimeout': 120,
'recaptchaTimeout': 600,
'pollingInterval': 10,
}

solver = TwoCaptcha(**config)

try:
result = solver.turnstile(sitekey='0x4AAAAAAAVrOwQWPlm3Bnr5',
url='https://2captcha.com/demo/turnstile',
# data="str",
# pagedata="str",
# action="str",
# useragent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/124.0.0.0 Safari/537.36"
# proxy={
# 'type': 'HTTPS',
# 'uri': 'login:password@IP_address:PORT'
# }
)

except Exception as e:
sys.exit(e)

else:
sys.exit('result: ' + str(result))
10 changes: 10 additions & 0 deletions twocaptcha/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,14 @@
from .solver import (TwoCaptcha, SolverExceptions, ValidationException,
NetworkException, ApiException, TimeoutException)

"""
Python 3 package for easy integration with the API of 2captcha captcha solving service to bypass recaptcha, hcaptcha,
funcaptcha, geetest and solve any other captchas.
website 2captcha [https://2captcha.com/]
support@2captcha.com
# License: MIT
"""

__author__ = '2captcha'
__version__ = '1.2.4'

0 comments on commit 0c0c76f

Please sign in to comment.