Django rest captcha
Lightweight version of django-simple-captcha for work with django-rest-framework.
Features
- Speed: use
cacheinstead of database - Safety: union methods for generate key and image. (You can't generate many images for one key)
- Easy: only one rest api (for generate, refresh image).
Usage
Add RestCaptchaSerializer to your protected request validator:
from rest_captcha serializer import RestCaptchaSerializer
class HumanOnlyDataSerializer(RestCaptchaSerializer):
pass
This code add to your serializer two required fields (captcha_key, captcha_value)
For provide this fields client(js code) should generate key:
> curl -X POST http:localhost:8000/api/captcha/ | python -m json.tool
{
'image_type': 'image/png',
'image_decode': 'base64',
'captcha_key': 'de67e7f3-72d9-42d8-9677-ea381610363d',
'captcha_value': '... image encoded in base64'
}
captcha_value - is base64 encoded PNG image, client should decode and show this image to human for validation and send letters from captcha to protected api.
If human have mistake - client should re generate your image.
Note: See also trottling for protect public api
Install
> pip install django-rest-captcha
Add to your settings.py
Add to installed apps:
INSTALLED_APPS = (
...
'rest_captcha',
)
Set rest_captcha settings (if you want), see defaults:
REST_CAPTCHA = {
'CAPTCHA_CACHE': 'default',
'CAPTCHA_TIMEOUT': 300, # 5 minutes
'CAPTCHA_LENGTH': 4,
'CAPTCHA_FONT_SIZE': 22,
'CAPTCHA_IMAGE_SIZE': (90, 40),
'CAPTCHA_LETTER_ROTATION': (-35, 35),
'CAPTCHA_FOREGROUND_COLOR': '#001100',
'CAPTCHA_BACKGROUND_COLOR': '#ffffff',
'CAPTCHA_FONT_PATH': FONT_PATH,
'CAPTCHA_CACHE_KEY': 'rest_captcha_{key}.{version}',
'FILTER_FUNCTION': 'rest_captcha.captcha.filter_default',
'NOISE_FUNCTION': 'rest_captcha.captcha.noise_default'
}
We recommend using redis or local memory as cache with set parameter, with bigger value of MAX_ENTRIES:
CACHES={
'default': {
'BACKEND': 'django.core.cache.backends.locmem.LocMemCache',
'LOCATION': 'rest-captcha',
'MAX_ENTRIES': 10000,
}
}
Add hooks to your app router (urls.py):
urlpatterns = [
...
url(r'api/captcha/', include('rest_captcha.urls')),
]
Release files for django-rest-captcha 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| django_rest_captcha-0.3.0.tar.gz | 52.0 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| django_rest_captcha-0.3.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 106.7 kB
Release files / django_rest_captcha-0.3.0.tar.gz
| Download URL | django_rest_captcha-0.3.0.tar.gz |
|---|---|
| Size | 52.0 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
4dc056f3576776591d9397c3397b09e53e4abcfa331ab711ec93501599fe4858
|
|
BLAKE2b-256 checksum How to use checksums |
921666b2220909647f4d95a4b41888aca63d2a1644296cbea8e7976d2f373ecf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.4.1 CPython/3.11.0 Linux/5.15.49-linuxkit
|
Release files / django_rest_captcha-0.3.0-py3-none-any.whl
| Download URL | django_rest_captcha-0.3.0-py3-none-any.whl |
|---|---|
| Size | 54.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
c04b7c9702b7e18e3b34e77262488e49eb23c297ba58269b8907ef0ce85b1ae3
|
|
BLAKE2b-256 checksum How to use checksums |
50a6a3e5e3f551bb281db24ffd95d4d7ecbf70af225cc6112a1a0598d2e03309
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
poetry/1.4.1 CPython/3.11.0 Linux/5.15.49-linuxkit
|