xTerradon / hcaptcha-solver

Automated hCaptcha solver using binary image classification networks
https://pypi.org/project/hcaptcha-solver/
23 stars 8 forks source link
captcha-solving cnn-classification webscraping

hcaptcha-solver

PyPI - Status PyPI PyPI - Downloads

a lightweight Python library for solving hCaptcha challenges with selenium and neural networks

NOTE: this package is no longer actively maintained and does not work properly.
If you encounter any issues or unexpected behaviours, please report them!

Installation

pip install hcaptcha-solver

Usage

from hcaptcha_solver import hcaptcha_solver
from selenium import webdriver

# setup chromedriver in english (other languages not supported yet)
options = webdriver.ChromeOptions()
options.add_experimental_option('prefs', {'intl.accept_languages': 'en,en_US'})
driver = webdriver.Chrome(options=options)
driver.get("https://accounts.hcaptcha.com/demo") # open any url with hCaptcha

# create Captcha_Solver object and solve hCaptcha
captcha_solver = hcaptcha_solver.Captcha_Solver(verbose=True)
captcha_solver.is_captcha_present(driver) # returns True
captcha_solver.solve_captcha(driver) # solves the hCaptcha

Functionality

Only V1 hCaptchas are supported - any other captcha types will be skipped.
The correct images are selected using Convolutional Neural Networks trained on labeled hCaptcha data.
The models are chosen by inspecting the captcha header, so the language has to be english in order for the matching to work. (See Issue #6)

The package features models for a handful of hCaptcha tasks. The currently available models and their labeling accuracies are visualized in the figure below. The accuracy was measured on limited data and is therefore not exact.

Functionality for V2 captchas is planned in a similar way to V1 captchas.

Current Model Labeling Performance

Model Labeling Accuracy

Current Data Availability

Data Availability

Contributing

If you encounter any bug, error or unexpected behaviour in general, please report them with an issue giving as much detail as possible - I will try to make this package easy-to-use for everyone.

Forks and pull requests are very welcome. You can also create issues to discuss possible changes or improvements.

To help collecting captchas, run dev/main.ipynb and submit the results. In this notebook you can also explore the data availability and train models.

updated 13/06/2024