Skip to main content

An asynchronized Python library to automate solving ReCAPTCHA v2 by audio/images

Project description PyPI PyPI - Python Version PyPI - License PyPI - Status


An async Python library to automate solving ReCAPTCHA v2 by images/audio using Mozilla’s DeepSpeech, PocketSphinx, Microsoft Azure’s, Google Speech and Amazon’s Transcribe Speech-to-Text API. Also image recognition to detect the object suggested in the captcha. Built with Pyppeteer for Chrome automation framework and similarities to Puppeteer, PyDub for easily converting MP3 files into WAV, aiohttp for async minimalistic web-server, and Python’s built-in AsyncIO for convenience.


This project is for educational and research purposes only. Any actions and/or activities related to the material contained on this GitHub Repository is solely your responsibility. The misuse of the information in this GitHub Repository can result in criminal charges brought against the persons in question. The author will not be held responsible in the event any criminal charges be brought against any individuals misusing the information in this GitHub Repository to break the law.


This script was first featured on Reddit at /r/Python - see here for the thread. I’ve finally decided to release the script.


Check out 1-minute presentation of the script in action, with only 8 threads!

nonoCAPTCHA preview


Linux, macOS, and Windows!


Python 3.7.0, FFmpeg, a Microsoft Azure account for Bing Speech API access, an Amazon Web Services account for Transcribe and S3 access, Wit.AI, and for Pocketsphinx you’ll need pulseaudio, swig, libasound2-dev, and libpulse-dev under Ubuntu.


$ pip install goodbyecaptcha


rm -R dist/ && rm -R build/ && rm -R goodbyecaptcha.egg-info/ && python3.7 sdist && python3.7 sdist bdist_wheel && python3.7 -m twine check dist/* && python3.7 -m twine upload --skip-existing dist/* --verbose


Please edit goodbyecaptcha.example.yaml and save as goodbyecaptcha.yaml


If you want to use it in your own script

from goodbyecaptcha.solver import Solver

pageurl = ""
sitekey = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"

proxy = ""
auth_details = {"username": "user", "password": "pass"}
args = ["--timeout 5"]
options = {"ignoreHTTPSErrors": True, "method": 'images', "args": args}
client = Solver(
    # With Proxy
    pageurl, sitekey, options=options, proxy=proxy, proxy_auth=auth_details
    # Without Proxy
    # pageurl, sitekey, options=options

solution = client.loop.run_until_complete(client.start())
if solution:


The use of proxies are required for my continuous updates and fixes on nonoCAPTCHA and GoodByeCaptcha. Any donations would be a great help in allowing me to purchase these proxies, that are clearly expensive. If anyone is willing to share their proxies, I wouldn’t hesitate to accept the offer.

Bitcoin: 1BfWQWAZBsSKCNQZgsq2vwaKxYvkrhb14u

Project details

Release history Release notifications

Download files

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

Files for goodbyecaptcha, version 2.2.1
Filename, size File type Python version Upload date Hashes
Filename, size goodbyecaptcha-2.2.1-py3-none-any.whl (76.3 kB) File type Wheel Python version py3 Upload date Hashes View hashes
Filename, size goodbyecaptcha-2.2.1.tar.gz (62.1 kB) File type Source Python version None Upload date Hashes View hashes

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page