Переход с hCaptcha на dCAPTCHA не занимает много времени. Вам понадобится изменить только названия параметров и вызовов API (если они используются), сам механизм проверки запроса остается таким же.
Предварительные условия:
- Услуга dCAPTCHA подключена в личном кабинете DDoS-Guard
- Создан и включен ключ CAPTCHA
- Домен добавлен в список доменов ключа CAPTCHA
Изменения на сайте
Замена скрипта
На каждой странице, где планируется заменить hCaptcha на dCAPTCHA, найдите и измените тег скрипта.
До:
<script src="https://js.hcaptcha.com/1/api.js" async defer></script>После:
<script src="https://captcha.ddos-guard.net/static/api.js" defer></script>Если вы использовали явный рендер (explicit rendering) через hcaptcha, измените эти вызовы на вызовы API ddgcaptcha. Подробнее о настройке explicit rendering
Замена виджета в форме
Обновите контейнер в каждой форме, в которой используется капча: замените название класса (h-captcha → ddg-captcha-container) и Site key.
До:
<form action="/login" method="POST">
<!-- прочие поля -->
<div class="h-captcha" data-sitekey="HCAPTCHA_SITE_KEY"></div>
<button type="submit">Войти</button>
</form>После:
<form action="/login" method="POST">
<!-- прочие поля -->
<div class="ddg-captcha-container" data-sitekey="ваш_sitekey"></div>
<button type="submit">Войти</button>
</form>
Другие изменения в код:
- Удалите атрибуты hCaptcha:
data-theme,data-size,data-tabindex,data-orientation. Подробнее о кастомизации виджета dCAPTCHA - Замените все обращения к
h-captcha-responseнаddg-captcha-token - Замените все вызовы API
hcaptchaнаddgcaptcha. Соответствие вызовов API
Изменения на бэкенде
Отредактируйте вызов проверки hCaptcha, заменив
- эндпоинт для проверки токена —
https://api.hcaptcha.com/siteverify→https://captcha.ddos-guard.net/siteverify - имя параметра секрета (
secret→private_key) и сам секретный ключ - формат данных в запросе на
json
До:
import requests
import os
SECRET_KEY = os.environ['HCAPTCHA_SECRET']
def verify_hcaptcha(token):
response = requests.post(
'https://api.hcaptcha.com/siteverify',
data={'secret': SECRET_KEY, 'response': token},
)
return response.json()После:
import requests
import os
PRIVATE_KEY = os.environ['DDG_CAPTCHA_PRIVATE_KEY']
def verify_ddg_captcha(token):
response = requests.post(
'https://captcha.ddos-guard.net/siteverify',
json={'private_key': PRIVATE_KEY, 'response': token},
)
return response.json()Если на сайте используется Content-Security-Policy, замените hcaptcha.com и *.hcaptcha.com на captcha.ddos-guard.net в директивах script-src, frame-src, style-src и connect-src.
Подробнее о проверке dCAPTCHA на сервере
Соответствие параметров и вызовов API
| Компонент | hCaptcha | dCAPTCHA |
|---|---|---|
| Скрипт | https://js.hcaptcha.com/1/api.js | https://captcha.ddos-guard.net/static/api.js |
| Класс контейнера виджета | h-captcha | ddg-captcha-container |
| Поле с токеном | h-captcha-response | ddg-captcha-token |
| Эндпоинт для проверки токена | https://api.hcaptcha.com/siteverify | https://captcha.ddos-guard.net/siteverify |
| Секрет | secret (form-urlencoded) | private_key (JSON) |
API
| hCaptcha | dCAPTCHA |
|---|---|
hcaptcha.ready() | ddgcaptcha.ready() |
hcaptcha.render() | ddgcaptcha.render() |
hcaptcha.reset() | ddgcaptcha.reset() |
hcaptcha.getResponse() | ddgcaptcha.getResponse() |
hcaptcha.execute() | — используйте reset() для начала новой проверки |