Python module to help solve captchas with Capmonster, 2Captcha and Anticaptcha API's!
To see documentation for the Go implementation, click here
pip3 install captchatools
pip3 install -U captchatools
import captchatools
solver = captchatools.new_harvester(solving_site="capmonster", api_key="YOUR API KEY", sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", captcha_url="https://www.google.com/recaptcha/api2/demo")
captcha_answer = solver.get_token()
or
from captchatools import new_harvester
solver = new_harvester(solving_site=1, api_key="YOUR API KEY", sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-", captcha_url="https://www.google.com/recaptcha/api2/demo")
captcha_answer = solver.get_token()
Parameter | Required | Type | Default | Description |
---|---|---|---|---|
api_key | true | String | - | The API Key for the captcha solving site |
solving_site | true | String (name of site) or int (site ID) | "capmonster" | The captcha solving site that will be used. Refer to the site IDs |
sitekey | true | String | - | Sitekey from the site where captcha is loaded |
captcha_url | true | String | - | URL where the captcha is located |
captcha_type | false | String | "v2" | Type of captcha you are solving. Either captcha image , v2 , v3 ,hcaptcha (hcap works aswell) or hcaptchaturbo |
invisible_captcha | false | bool | false | If the captcha is invisible or not. This param is only required when solving invisible captchas |
min_score | false | double | 0.7 | Minimum score for v3 captchas. This param is only required when solving V3 and it needs a higher / lower score |
action | false | String | "verify" | Action that is associated with the V3 captcha. This param is only required when solving V3 captchas |
soft_id | false | int | - | 2captcha Developer ID. Developers get 10% of spendings of their software users. |
Field | Required | Type | Description |
---|---|---|---|
b64_img | false | string | Base64 encoded captcha image This param is only required when solving image captchas |
proxy | false | string | Proxy to be used to solve captchas. This will make the captcha be solved from the proxy ip Format: ip:port:user:pass |
proxy_type | false | string | Type of the proxy being used. Options are:HTTP , HTTPS , SOCKS4 , SOCKS5 |
user_agent | false | string | UserAgent that will be passed to the service and used to solve the captcha |
rq_data | false | string | Custom data that is used in some implementations of hCaptcha. Most of the times, you want to set the invisible_captcha param to true . |
from captchatools import new_harvester
def main():
harvester = new_harvester(
api_key="CHANGE THIS",
solving_site="capsolver",
captcha_type="v2",
sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
captcha_url="https://www.google.com/recaptcha/api2/demo"
)
answer = harvester.get_token()
from captchatools import new_harvester
def main():
harvester = new_harvester(
api_key="CHANGE THIS",
solving_site="capsolver",
captcha_type="v3",
sitekey="6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf",
captcha_url="https://antcpt.com/score_detector/",
action="homepage",
min_score=0.7
)
token = harvester.get_token()
from captchatools import new_harvester
def main():
harvester = new_harvester(
api_key="CHANGE THIS",
solving_site="capsolver",
captcha_type="image",
)
token = harvester.get_token(b64_img="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")
from captchatools import new_harvester
def main():
harvester = new_harvester(
api_key="CHANGE THIS",
solving_site="capsolver",
captcha_type="v2",
sitekey="6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
captcha_url="https://www.google.com/recaptcha/api2/demo"
)
token = harvester.get_token(
proxy="ip:port:user:pass",
proxy_type="http",
user_agent="Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/108.0.0.0 Safari/537.36"
)
Site | Site ID | Captcha Types Supported | Task Types Supported |
---|---|---|---|
Capmonster | captchatools.CapmonsterSite | Image captchas, Recaptcha V2, Recaptcha V3, HCaptcha |
ImageToTextTask, NoCaptchaTask, NoCaptchaTaskProxyless, RecaptchaV3TaskProxyless, HCaptchaTaskProxyless |
Anticaptcha | captchatools.AnticaptchaSite | Image captchas, Recaptcha V2, Recaptcha V3, HCaptcha |
ImageToTextTask, RecaptchaV2Task RecaptchaV2TaskProxyless, RecaptchaV3TaskProxyless, HCaptchaTaskProxyless |
2Captcha | captchatools.TwoCaptchaSite | Image captchas, Recaptcha V2, Recaptcha V3, HCaptcha |
- |
Capsolver | captchatools.CapsolverSite | Image captchas, Recaptcha V2, Recaptcha V3, HCaptcha HcaptchaTurbo |
- |
CaptchaAI | captchatools.CaptchaAISite | Image captchas, Recaptcha V2, Recaptcha V3, HCaptcha |
- |
- For 2Captcha, don't run more than 60 tasks per API key.
- Handle errors appropriately.
- If a
ErrNoBalance
is thrown, tasks should stop. Some sites will temporarily ban IP's if constant requests come in.
- If a
Errors | Returned When |
---|---|
ErrNoBalance |
Balance is below 0 for captcha solving site |
ErrWrongAPIKey |
Incorrect API Key for captcha solving site |
ErrWrongSitekey |
Incorrect sitekey |
ErrIncorrectCapType |
Incorrectly chose a captcha type. When initializing a new harvester. Refer to the captcha types |
ErrNoHarvester |
When the user did not / incorrectly chose a captcha harvester. Refer to the "how to use" guide |
from captchatools import new_harvester, exceptions as captchaExceptions,
def main():
try:
harvester = new_harvester()
token = harvester.get_token()
except captchaExceptions.NoHarvesterException:
print("I need to set my captcha harvester!")
- Added CaptchaAI
- Removed internal redundant code
- Fix creating a new harvester if pass in the ID
- Get Balance Support
- Proxy Support
- User Agent Support
- Text image captcha support
- Better internal handling
- Capsolver support
- It is recommend to use the
new_harvester
function rather than the oldcaptcha_harvesters