x-lock bot protection middleware for Python — invisible alternative to reCAPTCHA
Project description
xlock-py
Invisible bot protection middleware for Python. Drop-in replacement for reCAPTCHA, Turnstile, and hCaptcha — no visual challenges, no user friction.
Supports FastAPI, Django, and Flask.
Install
# Core (Django — no extra deps)
pip install xlock-py
# FastAPI / Starlette
pip install xlock-py[fastapi]
# Flask
pip install xlock-py[flask]
# Everything
pip install xlock-py[all]
Quick Start
FastAPI / Starlette
from fastapi import FastAPI
from xlock import XLockMiddleware
app = FastAPI()
app.add_middleware(
XLockMiddleware,
site_key="sk_...",
protected_paths=["/api/auth", "/api/checkout"],
)
Django
# settings.py
MIDDLEWARE = [
"xlock.XLockDjangoMiddleware",
# ... other middleware
]
XLOCK_SITE_KEY = "sk_..."
XLOCK_PROTECTED_PATHS = ["/api/auth/", "/api/checkout/"]
Flask
from flask import Flask
from xlock import XLockFlask
app = Flask(__name__)
xlock = XLockFlask(app, site_key="sk_...", protected_paths=["/api/auth"])
Direct Verification
from xlock import verify
result = verify(token="v3.abc123...", site_key="sk_...", path="/api/login")
if result.blocked:
print(f"Blocked: {result.reason}")
Configuration
| Option | Env Var | Default | Description |
|---|---|---|---|
site_key |
XLOCK_SITE_KEY |
— | Your x-lock site key |
api_url |
XLOCK_API_URL |
https://api.x-lock.dev |
API endpoint |
fail_open |
XLOCK_FAIL_OPEN |
True |
Allow requests on API errors |
protected_paths |
XLOCK_PROTECTED_PATHS |
[] |
Path prefixes to protect |
License
MIT
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
xlock_py-0.1.0.tar.gz
(5.4 kB
view details)
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file xlock_py-0.1.0.tar.gz.
File metadata
- Download URL: xlock_py-0.1.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7c32a567e7ef53d8c437dda8f5987f6db776452824b32e9e7900ef13ecb828c2
|
|
| MD5 |
11ce1db156a520c22fbbadbddecef5dd
|
|
| BLAKE2b-256 |
5218bd3c190d64b7c33d38f695cc4315ae23388e967cc2b2295a72b355dcae50
|
File details
Details for the file xlock_py-0.1.0-py3-none-any.whl.
File metadata
- Download URL: xlock_py-0.1.0-py3-none-any.whl
- Upload date:
- Size: 6.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.9.6
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
17dea6675d6d826af5301f8ae218c3f6f4a8a5de4acffe413027efa0253cf1c5
|
|
| MD5 |
55820b60fe025dfcea003d98fb499c6d
|
|
| BLAKE2b-256 |
ac1bfb5c58705a3d1aafad3ef1712ef699757843a57475f11feaeb7d377dc622
|