Implement CAPTCHA verification for Flask in a straightforward manner.
Project description
Flask-Tjfu-Captcha 1.0.0
Implement CAPTCHA verification for Flask in a straightforward manner.
Primary Dependencies
Installation
pip install flask-tjfu-captcha
Getting Started
from datetime import timedelta
from flask import Flask
from flask_tjfu_captcha import TjfuCaptcha
app = Flask(__name__)
tjfu_captcha = TjfuCaptcha(
app,
True # Must be in Debug mode
)
@app.route('/get_captcha')
def get_captcha():
return tjfu_captcha.generate_image_captcha(
secret_key="YOUR_SECRET_KEY",
length=4,
expires_in=timedelta(minutes=5),
only_digits=True
).to_dict()
@app.route('/verify_captcha')
@tjfu_captcha.required_captcha(
"YOUR_SECRET_KEY"
)
def verify_captcha():
return "OK"
if __name__ == '__main__':
app.run(debug=True)
/get_captcha
will generate a JSON with two attributes:
encrypted_code
: encoded information of the generated captcha.img_base64
: base64 encoded string of the captcha image.
{
"encrypted_code": "...",
"img_base64": "..."
}
/verify_captcha
uses required_captcha
to enforce captcha verification before executing requests
within verify_captcha
. To pass captcha verification, the client must provide two headers: Tjfu-Captcha-Code
containing the captcha code visible in the captcha image requested, and Tjfu-Captcha-Encrypted-Code
containing the
encoded information mentioned above.
GET http://0.0.0.0:5000/verify_captcha
Tjfu-Captcha-Encrypted-Code: <encrypted_code>
Tjfu-Captcha-Code: <code>
Skipping Captcha Verification in Debug Mode
To bypass captcha verification during testing, you can use the Tjfu-Captcha-Debugging-Ignore
header with any value,
and TjfuCaptcha must be in Debug mode.
from flask import Flask
from flask_tjfu_captcha import TjfuCaptcha
app = Flask(__name__)
tjfu_captcha = TjfuCaptcha(
app,
True # Must be in Debug mode
)
GET http://0.0.0.0:5000/verify_captcha
Tjfu-Captcha-Debugging-Ignore: <you can put any value>
Customization
You can customize headers for captcha verification
using TJFU_CAPTCHA_ENCRYPTED_CODE_HEADER_KEY
, TJFU_CAPTCHA_CAPTCHA_CODE_HEADER_KEY
, TJFU_CAPTCHA_DEBUGGING_IGNORE_HEADER_KEY
,
and TJFU_CAPTCHA_FONTS
to adjust captcha image fonts.
from flask import Flask
app = Flask(__name__)
app.config['TJFU_CAPTCHA_FONTS'] = "['your_font_path', 'your_other_font_path']"
# Change Tjfu-Captcha-Encrypted-Code header to Request-ID
app.config['TJFU_CAPTCHA_ENCRYPTED_CODE_HEADER_KEY'] = 'Request-ID'
# Change Tjfu-Captcha-Code header to My-Captcha-Code
app.config['TJFU_CAPTCHA_CAPTCHA_CODE_HEADER_KEY'] = 'My-Captcha-Code'
# Change Tjfu-Captcha-Debugging-Ignore header to Ignore-Captcha
app.config['TJFU_CAPTCHA_DEBUGGING_IGNORE_HEADER_KEY'] = 'Ignore-Captcha'
You can also customize responses for missing headers (on_missing_header
) and invalid captcha
codes (on_invalid_captcha_code
).
from flask import Flask
from flask_tjfu_captcha import TjfuCaptcha
app = Flask(__name__)
tjfu_captcha = TjfuCaptcha(
app,
True
)
def on_missing_header(header, status_code):
return {
"error": f"Missing header: {header}",
"status_code": status_code
}
def on_invalid_captcha_code(status_code):
return {
"error": "Invalid captcha code",
"status_code": status_code
}
tjfu_captcha.on_missing_header(
on_missing_header
)
tjfu_captcha.on_invalid_captcha_code(
on_invalid_captcha_code
)
Changelog
Version 1.0.0 - Initial Release - June 22, 2024
- Initial release of the library with core functionalities:
- Perform initialization and Captcha verification
- Provide functions for customization
Each section in this changelog provides a summary of what was added, changed, fixed, or removed in each release of the software. This helps users and developers understand the evolution of the project over time and highlights important updates or improvements made in each version.
Project details
Release history Release notifications | RSS feed
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
File details
Details for the file flask-tjfu-captcha-1.0.0.tar.gz
.
File metadata
- Download URL: flask-tjfu-captcha-1.0.0.tar.gz
- Upload date:
- Size: 4.3 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | a588d7fb3d2c928fc22b5cb7c3590bdb96746ff19262224c26375fce5970b2e7 |
|
MD5 | 6ed2d38fabe6f3de747b690774d63344 |
|
BLAKE2b-256 | c41d5b2eb69d1f425f6d36c142aefc32003a5a12f231596835b3b1dc28813898 |
File details
Details for the file flask_tjfu_captcha-1.0.0-py3-none-any.whl
.
File metadata
- Download URL: flask_tjfu_captcha-1.0.0-py3-none-any.whl
- Upload date:
- Size: 4.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/5.1.0 CPython/3.10.12
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 877bfb6fdee0b9a87768c3d1647efcf87dce6671a034bbeffda3b5749972a05b |
|
MD5 | 5f02aa5bd67dbf15e91f79d2d98a01ae |
|
BLAKE2b-256 | 84c7f7129993915557621be363dad9a9424703f6f8a46f32e4b1e74bac9b9b5f |