Подключить Cloudflare Turnstile#
Turnstile поддерживает два разных жизненных цикла. Виджет реагирует на ответ сервера, а предварительное разрешение получает cookies до запроса к источнику.
# examples/docs/integration_turnstile.py
widget = cloudflare.turnstile_widget(scope=operation("login"))
preclearance = cloudflare.turnstile_preclearance(
scope=host("api.mail.example"),
site_key="public-site-key",
page_url="https://api.mail.example/login",
)
Файл целиком
"""Construct Cloudflare Turnstile protection presets."""
from __future__ import annotations
from eazy_sdk.protection import host, operation
from eazy_sdk_presets import cloudflare
def main() -> None:
# docs:integration-turnstile:start
# examples/docs/integration_turnstile.py
widget = cloudflare.turnstile_widget(scope=operation("login"))
preclearance = cloudflare.turnstile_preclearance(
scope=host("api.mail.example"),
site_key="public-site-key",
page_url="https://api.mail.example/login",
)
# docs:integration-turnstile:end
print(f"protections: {widget.id}, {preclearance.id}")
if __name__ == "__main__":
main()
protections: cloudflare.turnstile-widget, cloudflare.turnstile-preclearance
Привяжите к каждому описанию совместимый решатель и добавьте их через
ClientConfig().with_protection(...). Для виджета задайте способ применения токена, например
form_field("cf-turnstile-response"). Предварительное разрешение можно повторно использовать до
истечения срока в пределах той же сессии обработчика.