Переход на dCAPTCHA с hCaptcha

Переход с 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-captchaddg-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, заменив

  1. эндпоинт для проверки токена — https://api.hcaptcha.com/siteverifyhttps://captcha.ddos-guard.net/siteverify
  2. имя параметра секрета (secretprivate_key) и сам секретный ключ
  3. формат данных в запросе на 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 на сервере

 

КомпонентhCaptchadCAPTCHA
Скриптhttps://js.hcaptcha.com/1/api.jshttps://captcha.ddos-guard.net/static/api.js
Класс контейнера виджетаh-captchaddg-captcha-container
Поле с токеномh-captcha-responseddg-captcha-token
Эндпоинт для проверки токенаhttps://api.hcaptcha.com/siteverifyhttps://captcha.ddos-guard.net/siteverify
Секретsecret (form-urlencoded)private_key (JSON)

API

hCaptchadCAPTCHA
hcaptcha.ready()ddgcaptcha.ready()
hcaptcha.render()ddgcaptcha.render()
hcaptcha.reset()ddgcaptcha.reset()
hcaptcha.getResponse()ddgcaptcha.getResponse()
hcaptcha.execute()— 
 используйте reset() для начала новой проверки