Metadata-Version: 2.1
Name: goodbyecaptcha
Version: 2.3.2
Summary: An asynchronized Python library to automate solving ReCAPTCHA v2 by images/audio
Home-page: https://github.com/MacKey-255/GoodByeCatpcha
Author: MacKey-255 <mackeyfuturo@gmail.com>, Michael Mooney <mikeyy@mikeyy.com>
Author-email: mackeyfuturo@gmail.com, mikeyy@mikeyy.com
License: GPL-3.0
Platform: all
Classifier: Development Status :: 5 - Production/Stable
Classifier: Intended Audience :: Developers
Classifier: Intended Audience :: Science/Research
Classifier: License :: OSI Approved :: GNU General Public License v3 (GPLv3)
Classifier: Natural Language :: English
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.7
Classifier: Programming Language :: JavaScript
Classifier: Topic :: Scientific/Engineering
Classifier: Topic :: Software Development :: Libraries
Classifier: Topic :: Utilities
Requires-Dist: aiobotocore (==0.9.3)
Requires-Dist: aiofiles (==0.3.2)
Requires-Dist: aiohttp (==3.3.2)
Requires-Dist: appdirs (==1.4.3)
Requires-Dist: async-generator (==1.10)
Requires-Dist: async-timeout (==3.0.0)
Requires-Dist: attrs (==19.3.0)
Requires-Dist: beautifulsoup4 (==4.8.1)
Requires-Dist: botocore (==1.10.58)
Requires-Dist: certifi (==2019.9.11)
Requires-Dist: chardet (==3.0.4)
Requires-Dist: docutils (==0.15.2)
Requires-Dist: entrypoints (==0.3)
Requires-Dist: flake8 (==3.5.0)
Requires-Dist: fuckcaptcha (==0.1.0)
Requires-Dist: idna (==2.7)
Requires-Dist: jmespath (==0.9.4)
Requires-Dist: mccabe (==0.6.1)
Requires-Dist: multidict (==4.6.1)
Requires-Dist: numpy (==1.17.4)
Requires-Dist: opencv-python (==4.1.2.30)
Requires-Dist: peewee (==3.11.2)
Requires-Dist: Pillow (==6.2.1)
Requires-Dist: pocketsphinx (==0.1.15)
Requires-Dist: psutil (==5.4.6)
Requires-Dist: pycodestyle (==2.3.1)
Requires-Dist: pydub (==0.22.1)
Requires-Dist: pyee (==6.0.0)
Requires-Dist: pyflakes (==1.6.0)
Requires-Dist: pyppeteer (==0.0.25)
Requires-Dist: python-dateutil (==2.8.1)
Requires-Dist: PyYAML (==5.1.2)
Requires-Dist: requests (==2.22.0)
Requires-Dist: six (==1.13.0)
Requires-Dist: soupsieve (==1.9.5)
Requires-Dist: SpeechRecognition (==3.8.1)
Requires-Dist: tqdm (==4.39.0)
Requires-Dist: urllib3 (==1.25.7)
Requires-Dist: user-agent (==0.1.9)
Requires-Dist: websockets (==6.0)
Requires-Dist: wrapt (==1.11.2)
Requires-Dist: yarl (==1.3.0)

.. image:: https://img.shields.io/pypi/v/goodbyecaptcha.svg
    :alt: PyPI
    :target: https://pypi.org/project/goodbyecaptcha/
.. image:: https://img.shields.io/pypi/pyversions/goodbyecaptcha.svg
    :alt: PyPI - Python Version
    :target: https://pypi.org/project/goodbyecaptcha/
.. image:: https://img.shields.io/pypi/l/goodbyecaptcha.svg
    :alt: PyPI - License
    :target: https://pypi.org/project/goodbyecaptcha/
.. image:: https://img.shields.io/pypi/status/goodbyecaptcha.svg
    :alt: PyPI - Status
    :target: https://pypi.org/project/goodbyecaptcha/

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

.. image:: https://img.youtube.com/vi/zgwetyKmg5g/0.jpg
   :target: https://www.youtube.com/watch?v=zgwetyKmg5g

Compatibility
-------------

Linux, macOS, and Windows!

Requirements
------------

Python
`3.7.0 <https://www.python.org/downloads/release/python-370/>`__,
`FFmpeg <https://ffmpeg.org/download.html>`__, a `Microsoft
Azure <https://portal.azure.com/>`__ 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
------------

.. code:: shell

   $ 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

.. code:: python

    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

.. code:: python

    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())



