Skip to main content

DisCapTy help you generate obfuscated images, leaving your code easy.

Project description

DisCapTy

DisCapTy's LogoDisCapTy's Logo

DisCapTy is a highly type hinted Python module to generate Captcha images without struggling your mind on how to make your own. Everyone can use it!

Documentation: https://discapty.readthedocs.io/

Installing

DisCapTy is available on PyPi!

pip3 install discapty

To use DisCapTy, you need a Python version equal or greater to 3.7 and below 3.11.

Clone & Test the project

This project is dependant of Poetry, a dependency management tool. You are most likely going to require this tool to correctly interact with the project & its dependencies, check out Poetry's documentation for how to install it.

To clone the repository: git clone https://github.com/Predeactor/DisCapTy.git

To install dependencies: poetry install

To run tests: poetry run python -m unittest

Creating Captcha

For DisCapTy, a Captcha is simply a code with any possible objects that can be returned, for example, it is one code (Like "12345") with an image (Usually a PIL.Image.Image object) This is because DisCapTy uses the concept of generators that are used to generate a captcha from a given code, and it can return anything.

DisCapTy comes with 3 builtin generators:

  • TextGenerator : Text based captcha
  • WheezyGenerator : Image based captcha
  • ImageGenerator : Image based captcha

Creating Captcha manually

import discapty

def generate_a_captcha(initial_input: str) -> discapty.Captcha:
    # This generator returns an obfuscated text.
    captcha_for_user = discapty.TextGenerator().generate(initial_input)
    # Create a Captcha object, the first argument is the clear code, the second is the obfuscated code. Anything goes.
    return discapty.Captcha(initial_input, captcha_for_user)

# Generate your Captcha.
captcha = generate_a_captcha("12345")

# Show the obfuscated code. See https://discapty.readthedocs.io for more information on this object.
show_captcha_to_user(captcha.captcha)

Checking user's input

import discapty

# Generate your Captcha.
captcha: discapty.Captcha = generate_a_captcha("12345")

# This is your user's input here
user_input: str = '12345'

if captcha.check(user_input) is True:
    # The user input is correct
    print("Correct!")
else:
    # The user input is incorrect
    print("Incorrect!")

What's great with the .check method is that you can specify if you need to remove space in the user's input and/or check casing.

Creating Captcha manually is not a recommended way, because DisCapTy comes with its opinionated challenge runner & is inefficient anyway.

Create a Challenge

import discapty

challenge = discapty.Challenge(discapty.TextGenerator(), retries=3)

captcha = challenge.begin()

# We cannot provide typehint here, `captcha` is a `typing.Any` and cannot help you, it'll be your
# job to know what you'll get as a captcha.
send_captcha_to_user(captcha)
user_input: str = get_user_input()

is_correct: bool = challenge.check(user_input)
# If the user's input is correct, the challenge ends, if not, `challenge.attempted_tries` will get
# +1, and if it is greater than the retries that has been set, then an error is raised when using
# `.check`

Please see the documentation for more information on how the library work.

Contact

You can join my Discord server for any help: https://discord.gg/aPVupKAxxP

DisCapTy is an open-source project distributed under the MIT license: PyPI - License

DisCapTy uses the Roboto font as default font. This font is licensed under Apache-2.0.

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

discapty-2.1.1.tar.gz (109.8 kB view details)

Uploaded Source

Built Distribution

discapty-2.1.1-py3-none-any.whl (109.4 kB view details)

Uploaded Python 3

File details

Details for the file discapty-2.1.1.tar.gz.

File metadata

  • Download URL: discapty-2.1.1.tar.gz
  • Upload date:
  • Size: 109.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.8.10 Linux/5.15.0-1020-azure

File hashes

Hashes for discapty-2.1.1.tar.gz
Algorithm Hash digest
SHA256 1b1eadb59db284bdb2e0c5f0523a00ea0b10931b9d6cab95e8c5a8d9dc93cf4b
MD5 97d9600343d443e4be2efa0848230d2a
BLAKE2b-256 99ded6293d3fcfa66850a3fce10e11e17409c74ae616f5b96862d09976e00770

See more details on using hashes here.

File details

Details for the file discapty-2.1.1-py3-none-any.whl.

File metadata

  • Download URL: discapty-2.1.1-py3-none-any.whl
  • Upload date:
  • Size: 109.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.8.10 Linux/5.15.0-1020-azure

File hashes

Hashes for discapty-2.1.1-py3-none-any.whl
Algorithm Hash digest
SHA256 14f6b784ebb454d230bb5eac13fe6dda7970e25609e1ab2301d2ac9a811057a7
MD5 f22234f436ad2a3654d64da700d68701
BLAKE2b-256 9c1d762d7474aa8146dd9871499eb4b3f81fedf85e6b12e33d25008efee5b575

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page