An asynchronized Python library to automate solving ReCAPTCHA v2 by images/audio
Project description
GoodByeCaptcha
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.
Disclaimer
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.
Preview
Check out 1-minute presentation of the script in action
Compatibility
Linux, macOS, and Windows!
Requirements
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.
Train the yolov3 neural network to improve image recognition
Installation
$ pip install goodbyecaptcha
Configuration
Please edit goodbyecaptcha.example.yaml and save as goodbyecaptcha.yaml
Usage
If you want to use it in your own script
from goodbyecaptcha.solver import Solver
pageurl = "https://www.google.com/recaptcha/api2/demo"
sitekey = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
proxy = "127.0.0.1:1000"
auth_details = {"username": "user", "password": "pass"}
method = 'images' # 'audio'
args = ["--timeout 5"]
options = {"ignoreHTTPSErrors": True, "method": method, "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:
print(solution)
If you want to use events
from goodbyecaptcha.solver import Solver
pageurl = "https://www.google.com/recaptcha/api2/demo"
sitekey = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"
proxy = "127.0.0.1:1000"
auth_details = {"username": "user", "password": "pass"}
method = 'images' # 'audio'
args = ["--timeout 5"]
options = {"ignoreHTTPSErrors": True, "method": method, "args": args}
class MySolver(Solver):
def __init__(self, pageurl, sitekey, loop=None, proxy=None, proxy_auth=None,
options=None, enable_injection=True, retain_source=True, **kwargs):
super().__init__(pageurl, sitekey, loop=loop, proxy=proxy, proxy_auth=proxy_auth,
options=options, enable_injection=enable_injection, retain_source=retain_source, **kwargs)
async def on_goto(self):
# Set Cookies and other stuff
await self.page.setCookie({
'name': 'cookie1',
'value': 'value1',
'domain': '.google.com'
})
self.log('Cookies ready!')
async def on_start(self):
# Set or Change data
self.log('Set data in form ...')
await self.page.type('input[name="input1"]', 'value')
async def on_finish(self):
# Click button Send
self.log('Clicking send button ...')
await self.page.click('input[id="recaptcha-demo-submit"]')
await self.page.waitForNavigation()
await self.page.screenshot({'path': 'image.png'})
client = MySolver(
# With Proxy
pageurl, sitekey, options=options, proxy=proxy, proxy_auth=auth_details
# Without Proxy
# pageurl, sitekey, options=options
)
client.loop.run_until_complete(client.start())
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for goodbyecaptcha-2.3.2-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | a0817092085dafc4cc2b9b73954a999dc3bf74e060983a1f56a065daaebebff1 |
|
MD5 | 9eb258101ce8d7cf9356ad9e25023714 |
|
BLAKE2b-256 | 55af354aa80a194c6d59644a0ccf9c7b780185cde4940b4e3834759b1ad74b4a |