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

Переход с Google reCAPTCHA v2 на dCAPTCHA не занимает много времени. Вам понадобится изменить только названия параметров и вызовов API (если они используются), сам механизм проверки запроса остается таким же.

Предварительные условия:

  • Услуга dCAPTCHA подключена в личном кабинете DDoS-Guard
  • Создан и включен ключ CAPTCHA
  • Домен добавлен в список доменов ключа CAPTCHA

 

На каждой странице, где планируется заменить reCAPTCHA на dCAPTCHA, найдите и измените тег скрипта.

До:

<script src="https://www.google.com/recaptcha/api.js" async defer></script>

После:

<script src="https://captcha.ddos-guard.net/static/api.js" defer></script>

Если вы использовали явный рендер (explicit rendering) через grecaptcha, измените эти вызовы на вызовы API ddgcaptcha. Подробнее о настройке explicit rendering

Обновите контейнер в каждой форме, в которой используется капча: замените название класса (g-recaptchaddg-captcha-container) и Site key.

До:

<form action="/login" method="POST">
  <!-- прочие поля -->
  <div class="g-recaptcha" data-sitekey="6LfD3PIbAAAAAJs_eEHvoOl75_83eXSqpPSRFJ_u"></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>

 

Другие изменения в код:

 

Отредактируйте вызов проверки reCAPTCHA, заменив

  1. эндпоинт для проверки токена — https://www.google.com/recaptcha/api/siteverifyhttps://captcha.ddos-guard.net/siteverify
  2. имя параметра секрета (secretprivate_key) и сам секретный ключ
  3. формат данных в запросе на json

До:

import requests
import os

SECRET_KEY = os.environ['RECAPTCHA_SECRET_KEY']

def verify_recaptcha(token):
    response = requests.post(
        'https://www.google.com/recaptcha/api/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, замените www.google.com/recaptcha/ и www.gstatic.com/recaptcha/ на captcha.ddos-guard.net в директивах script-src, frame-src и connect-src.

Подробнее о проверке dCAPTCHA на сервере

 

КомпонентreCAPTCHA v2dCAPTCHA
Скриптhttps://www.google.com/recaptcha/api.jshttps://captcha.ddos-guard.net/static/api.js
Класс контейнера виджетаg-recaptchaddg-captcha-container
Поле с токеномg-recaptcha-responseddg-captcha-token
Эндпоинт для проверки токенаhttps://www.google.com/recaptcha/api/siteverifyhttps://captcha.ddos-guard.net/siteverify
Секретsecret (form-urlencoded)private_key (JSON)

API

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