Mail.RuПочтаМой МирОдноклассникиИгрыЗнакомстваНовостиПоискВсе проекты

О сервисе

Некапча — это интеллектуальный сервис капчи, способный избавить большинство реальных пользователей от разгадывания рисунка капчи, вместе с тем не ухудшая защиту от спам-ботов. Сервис успешно используется как в наших внутренних проектах, так и на сайтах, не связанных с Mail.Ru.

Работа сервиса с технической точки зрения базируется на том факте, что при HTTP-запросе на домены Mail.Ru, если пользователь авторизован на сайте Mail.Ru, вместе с запросом передаются cookies с информацией о сессии. По ним мы определяем пользователя. Когда пользователь заходит на страницу с формой, в которую встроена Некапча, браузер делает запрос скрипта Некапчи. Мы пытаемся определить пользователя и, используя хитрый внутренний алгоритм, принимаем решение — скрыть капчу или стоит лишний раз проверить пользователя вводом капчи.

По понятным причинам алгоритм принятия решения о скрытии капчи держится в секрете, чтобы спамеры не могли им воспользоваться и разработать алгоритмы для обхода Некапчи.

Обычным пользователям относительно нечасто приходится заполнять формы, поэтому для них капча будет почти всегда скрыта. Пользователям же, о которых мы не можем сказать с большой уверенностью, что они живые люди, а не спам-боты, будет предложено пройти анти-бот проверку капчей.

По статистике 70% пользователей Рунета зарегистрированы на сайте Mail.Ru, а большая часть из них уже авторизована. Соответственно, всем этим людям не придется тратить дополнительное время на разгадывание картинки капчи.

Важно
Капча никаким образом не может полностью защитить форму от пользователей, которые являются живыми людьми, но которые имеют непредусмотренные владельцем сайта намерения (например, спам-рассылка). Разгадывание капчи — это анти-бот проверка, позволяющая отсечь полностью автоматизированные скрипты.

С чего начать

Чтобы встроить Некапчу в форму на своем сайте, необходимо выполнить следующие шаги:

  1. Получить публичный и приватный ключи для своего домена.
    1. Зайти на сайт https://nocaptcha.mail.ru и авторизоваться.
    2. Зарегистрировать свой домен.
  2. Модифицировать обработчик формы для проверки введенного кода с рисунка капчи.

Публичный и секретный (приватный) ключи представляют собой некие не подбираемые токены (последовательности символов), которые образуют пару и соответствуют определенному домену. Публичный ключ используется для аутентификации сайта и проверки домена при генерировании скрипта Некапчи, а секретный ключ — для аутентификации обработчика формы при проверке введенного пользователем кода с рисунка капчи.

Некапча поддерживает IDN (интернационализованные доменные имена), что позволяет встраивать ее на сайты, например, с русскими доменами — пример.рф, пример.ru.

Домен, на котором будет расположена форма с Некапчей, должен полностью совпадать с доменом, ключи которого используются для генерации и проверки капчи. То есть если зарегистрирован домен example.com, то его публичный и секретный ключи нельзя использовать для форм, расположенных на поддомене other.example.com.

Встраивание

Встраивание рассмотрим на примере, взятом из проекта PHP-модуля для работы с Некапчей. Этот простейший пример содержит форму и скрипт для ее обработки. Наша задача заключается в том, чтобы защитить форму от ботов с помощью Некапчи.

Структура проекта
examples/simple2/
├── index.php
├── template.html
├── router.php
└── run.sh
index.php
Основной скрипт, выполняющий всю работу по обработке запроса.
template.html
HTML-шаблон, отделенный от исходного кода скрипта.
run.sh
Скрипт на Bash для запуска встроенного в PHP отладочного веб-сервера.
router.php
Вспомогательный скрипт для отладочного веб-сервера.

Рассмотрим файл index.php подробнее. Функция expand_template() заполняет шаблон данными, переданными в ассоциативном массиве $vars. В зависимости от типа запроса мы либо отображаем форму, либо обрабатываем отправленные через нее данные.

index.php
<?php

function expand_template($file, $vars = NULL)
{
    if ($vars !== NULL)
        extract($vars, EXTR_OVERWRITE);
    include $file;
}

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    // здесь делаем обработку формы
    $vars['result'] = 'ok';
} else {
    // просто отображаем форму
    $vars['form'] = true;
}
expand_template('template.html', $vars);

Файл template.html содержит в себе два шаблона: форму и страничку с результатом обработки. Форма состоит из одного поля text и кнопки. Результат обработки скрипта тоже выглядит аскетично, но этого достаточно для примера.

template.html
<!DOCTYPE html>
<?php if ($form): ?>
<html>
    <head>
    </head>
    <body>
        <form action="#" method="POST">
            <p>text<br><input type="text" name="text" size="30"></p>
            <p><input type="submit" value="submit"></p>
        </form>
    </body>
</html>
<?php else: ?>
<html>
    <head></head>
    <body>
        <p>result: '<?=$result?>', <a href="">try again</a></p>
    </body>
</html>
<?php endif ?>

Для проверки работы формы достаточно запустить скрипт run.sh (для пользователей Windows используется скрипт run.bat), после чего открыть в браузере адрес http://localhost:8080.

Замечание
Встроенный отладочный веб-сервер в PHP появился только начиная с версии 5.4.0.

Форма

Прежде всего чтобы встроить Некапчу необходимо подготовить форму. В простейшем случае добавляется всего два элемента:

  1. Скрипт Некапчи
  2. Пустой div, в котором будет отображаться виджет

Скрипт можно добавить в форму из PHP, либо сохранить прямо в шаблоне. В первом случае можно воспользоваться готовыми функциями из PHP-модуля Некапчи, как и было сделано в данном примере. Дальше мы увидим, как формируется и передается в шаблон переменная $nocaptcha_script, которая хранит HTML-тег скрипта.

Во втором случае необходимо корректно прописать скрипт:

<script src="https://api-nocaptcha.mail.ru/captcha?public_key=<публичный ключ>" type="text/javascript"></script>
template.html
<!DOCTYPE html>
<?php if ($form): ?>
<html>
    <head>
        <?=$nocaptcha_script?>
    </head>
    <body>
        <form action="#" method="POST">
            <p>text<br><input type="text" name="text" size="30"></p>
            <p><div id="nocaptcha"></div></p>
            <p><input type="submit" value="submit"></p>
        </form>
    </body>
</html>
<?php else: ?>
<html>
    <head></head>
    <body>
        <p>result: '<?=$result?>', <a href="">try again</a></p>
    </body>
</html>
<?php endif ?>

Обработчик формы

Публичный и секретный ключи хранятся в скрипте и определены как именованные константы PUBLIC_KEY и PRIVATE_KEY. Публичный ключ используется для генерации HTML-тега подключения скрипта Некапчи, а секретный — для проверки введенного пользователем кода с рисунка капчи.

Для того чтобы иметь доступ к вспомогательным функциям, таким как display_captcha() и check_captcha(), импортируем PHP-модуль Некапчи. В данном примере модуль хранится в другой директории, но для небольших проектов его можно просто скопировать в нужную директорию.

Как было сказано выше, в шаблон передается переменная $nocaptcha_script. Ее можно формировать как вручную, используя описание API Некапчи, так и с помощью функции PHP-модуля display_nocaptcha(), которая сама сформирует корректный тег. В модуле Некапчи также есть функция source_captcha(), которая формирует только URL для получения скрипта.

index.php
<?php

// публичный и секретный ключи, полученные на https://nocaptcha.mail.ru
define('PUBLIC_KEY', 'ed64110f3e3ef4c2aad78446fdfe63a5');
define('PRIVATE_KEY', 'da9d56871519a43eba63a9a394f8fd53');

// импортируем PHP-модуль Некапчи
require_once('../../Package/nocaptcha/captcha.php');

function expand_template($file, $vars = NULL)
{
    if ($vars !== NULL)
        extract($vars, EXTR_OVERWRITE);
    include $file;
}

if ($_SERVER['REQUEST_METHOD'] == 'POST') {
    $result = check_captcha(PRIVATE_KEY, $_POST['captcha_id'],
                            $_POST['captcha_value']);
    if ($result === true) {
        // здесь делаем обработку формы
        $result = 'ok';
    } else {
        // здесь информируем пользователя о том,
        // что введено неверное значение капчи
    }
    $vars['result'] = $result;
} else {
    // просто отображаем форму
    $vars['form'] = true;
    $vars['nocaptcha_script'] = display_captcha(PUBLIC_KEY);
}
expand_template('template.html', $vars);

Самая главное изменение скрипта обработчика формы — это проверка введенного пользователем значения с рисунка капчи. Ее не обязательно выполнять перед всеми проверками и действиями, например, перед проверкой корректности значений формы. Но важно чтобы она выполнялась перед ресурсоемкими процедурами (запросы к сторонним серверам, доступ к базам данных) и перед любыми изменениями данных. Для проверки используется функция check_captcha(), которая делает запрос к серверу Некапчи и возвращает true, если пользователь прошел проверку или строку с ошибкой в другом случае. В функцию передаются приватный ключ, ID капчи и введенное значение. ID капчи передается в обработчик формы через POST-параметр captcha_id, введенное значение — через POST-параметр captcha_value.

Когда сервис Некапчи скрывает рисунок капчи, ID капчи все равно генерируется, но в скрипт передается пустое значение captcha_value. Информация о том, что Некапча считает, что пользователь является человеком, известна только пользователю (от него капча была скрыта), веб-странице с формой (эту информацию можно получить с помощью javascript) и серверу Некапчи. В случае обработчика формы единственный источник информации, которому можно доверять — это сервер Некапчи, поскольку POST-запрос с любыми параметрами нетрудно подделать. Если капча была скрыта, то запрос на проверку к API Некапчи с пустым значением captcha_value все равно вернет ответ, что введено верное значение. Таким образом, один и тот же код скрипта обрабатывает оба случая отображения капчи и получает достоверную информацию о том, является ли пользователь живым человеком или ботом.

Поскольку сервис Некапчи проверяет с какого домена пришел запрос на скрипт, то необходимо прописать в файле hosts зарегистрированный домен. Таким образом мы сможем локально тестировать результат нашей работы. Для примера мы добавили домен nocaptcha.example.com. Для Windows файл расположен в C:\Windows\system32\drivers\etc\hosts, для *nix — /etc/hosts.

127.0.0.1   nocaptcha.example.com

Включив эти небольшие изменения в веб-страницу с формой и в скрипт-обработчик формы мы успешно встроили Некапчу и защитили форму от ботов. Но надо упомянуть, что никакая капча не защитит от человека, который будет вручную заполнять форму, будь он честный человек или злоумышленник.

Виджет с поддержкой AJAX

Виджет с поддержкой AJAX подключается через JavaScript. Для этого необходимо сначала подключить модуль nocaptcha.js в заголовке веб-страницы, предварительно создав объект nocaptchaOptions:

<script type="text/javascript">
    var nocaptchaOptions = {
        publicKey: 'PUBLIC_KEY'
    };
</script>
<script src="https://api-nocaptcha.mail.ru/nocaptcha.js" type="text/javascript"></script>

После этого функционал модуля будет доступен через глобальный объект nocaptcha. Полное описание функционала приведено в описании JavaScript API. Проверка капчи на стороне сервера осуществляется аналогично с обычным виджетом.

Настройка виджета

Этот раздел относится только к виджету, созданному через вызов /captcha. Виджет имеет несколько настраиваемых параметров. Параметры задаются с помощью javascript-объекта nocaptchaSettings в любом месте документа, например, в заголовке:

<script type="text/javascript">
    var nocaptchaSettings = {
        containers: ['nocaptcha1', 'nocaptcha2'],
        lang: 'en',
        tabindex: 4
    };
</script>

В указанной ниже таблице приведено краткое описание доступных параметров.

Параметр Описание Значения По умолчанию Примеры
lang Язык виджета. 'ru', 'en' 'ru' 'en'
containers Список id контейнеров. массив строк ['nocaptcha'] ['a','b']
tabindex Tabindex поля для ввода разгаданной капчи. целое положительное число —  3

lang — язык виджета

Виджет поддерживает локализацию. Для этого используется параметр lang. На данный момент реализованы два основных для Рунета языка: русский и английский. По умолчанию используется русский язык, поскольку основная аудитория сервиса предполагается русскоязычной. Параметр может принимать строковые значения: 'ru', 'en'.

containers — список контейнеров

В простейшем случае на странице находится всего одна форма. Тогда вебмастер должен добавить внутри формы элемент <div> с id nocaptcha, и этого будет достаточно, чтобы встроить виджет.

<form action="#" method="POST">
    <input type="text" name="field1">
    <div id="nocaptcha"></div>
    <input type="submit" value="Отправить">
</form>

Если же на странице находится несколько форм, и каждую нужно защитить с помощью капчи, то действия немного отличаются. Необходимо создать в каждой форме элемент <div> с уникальным id. Это будут контейнеры для встраивания виджета. После этого в настройках виджета nocaptchaSettings нужно прописать id всех элементов div, в которые будет встраиваться Некапча. Для этого используется поле containers.

<script type="text/javascript">
    var nocaptchaSettings = {
        containers: ['nocaptcha1', 'nocaptcha2'],
    };
</script>

...

<form action="action1" method="POST">
    <input type="text" name="field1">
    <div id="nocaptcha1"></div>
    <input type="submit" value="Отправить">
</form>

...

<form action="action2" method="POST">
    <input type="text" name="field2">
    <div id="nocaptcha2"></div>
    <input type="submit" value="Отправить">
</form>

Параметр containers принимает массив id элементов, в которые нужно встроить виджет. По умолчанию виджет встраивается только в один контейнер с id nocaptcha.

tabindex — последовательность переключения по Tab

Чтобы не нарушать последовательность перехода по элементам формы, полю для ввода разгаданной капчи можно назначить tabindex. Для этого служит параметр tabindex, принимающий целое число.

Tabindex можно также указать как специальный атрибут контейнера — data-tabindex. Это также единственный способ задать разный tabindex для страницы с несколькими формами, использующими Некапчу.

<div id="nocaptcha1" data-tabindex="4"></div>

Готовые модули

Для того, чтобы упростить встраивание Некапчи в пользовательские проекты, можно использовать готовые модули для различных языков программирования и веб-фреймворков:

Модули доступны по разрешительной лицензии, что позволяет их свободно скачивать, использовать, заимствовать исходный код и распространять без каких-либо ограничений.

Если вы создали собственный модуль для своего любимого веб-фреймворка или языка программирования, то напишите о нем на nocaptcha@corp.mail.ru, чтобы мы добавили его в список.

Описание HTTP API

/captcha — скрипт отрисовки виджета

Формат запроса
https://api-nocaptcha.mail.ru/captcha?
    public_key=<публичный ключ>
Описание

Возвращает скрипт, который отрисовывает виджет Некапчи.

Методы

GET

Заголовки
Имя Тип Примечание
User-Agent обязательный Все браузеры по умолчанию передают заголовок User-Agent.
Параметры
Имя Тип Описание
public_key обязательный Публичный ключ, выданный для домена, на котором размещается виджет Некапчи.
Ответ

Скрипт на языке javascript.

Пример запроса
https://api-nocaptcha.mail.ru/captcha?public_key=ae41342c7b8674f449b3467c34b14edf

/check — проверка введенного кода с рисунка капчи

Формат запроса
https://api-nocaptcha.mail.ru/check?
    private_key=<секретный ключ>
  & captcha_id=<ID капчи>
  & captcha_value=<введенный код>
Описание

Проверяет введенный пользователем код с рисунка капчи. В случае если капча была скрыта возвращает успешный результат вне зависимости от значения параметра captcha_value. После проверки капчи запись о ней удаляется для того, чтобы было невозможно по одному ID капчи пройти проверку несколько раз.

Методы

GET

Параметры
Имя Тип Описание
private_key обязательный Секретный ключ, выданный для домена, на котором размещается виджет.
captcha_id обязательный ID капчи. Встраивается виджетом в форму в виде скрытого поля captcha_id.
captcha_value обязательный Введенный пользователем код с рисунка капчи. Встраивается виджетом в форму в виде поля captcha_value.
Ответ

Ответ возвращается в формате JSON.

Поля ответа
Имя Тип Описание
status строка

Статус ответа. Возможные значения:

  • "ok" — запрос выполнен успешно
  • "bad request" — некорректный формат запроса
  • "internal error" — внутренняя ошибка сервера
is_correct булевый Результат проверки значения.
desc строка Более конкретное текстовое описание ошибки.
code число Код ошибки. Используется для внутренних нужд.
Пример запроса
https://api-nocaptcha.mail.ru/check?captcha_id=ecd780ce41a9047fe9a83ef1d8006547&captcha_value=1jh4y&private_key=f5f584099da744b9c8b1c3770de012ae
Пример успешного ответа, верное значение captcha_value
{"status": "ok", "is_correct": true}
Пример успешного ответа, неверное значение captcha_value
{"status": "ok", "is_correct": false}
Пример ответа с ошибкой
{"status": "bad request", "desc": "parameter 'captcha_id' not found", "code": 1745}

/nocaptcha.js — модуль для работы с виджетами с поддержкой AJAX

Формат запроса
https://api-nocaptcha.mail.ru/nocaptcha.js
Описание

Возвращает скрипт модуля для работы с виджетами с поддержкой AJAX.

Методы

GET

Ответ

Скрипт на языке JavaScript.

Пример запроса
https://api-nocaptcha.mail.ru/nocaptcha.js

Описание JavaScript API

Объекты
Объект Описание
nocaptchaOptions Глобальные опции модуля nocaptcha.js.
Функции
Функция Описание
create Создает виджеты.
state Возвращает текущее состояние виджета.
ready Определяет валидность полей виджета и готовность к отправке.
refresh Обновляет изображение капчи.
verify Верифицирует пользователя и показывает или скрывает капчу.
reset Возвращает виджет в начальное состояние.

Селектор контейнеров

Селектор используется для того, чтобы указать к каким виджетам применить функцию. Виджет определяется по элементу-контейнеру, в котором он был создан. По умолчанию используется селектор '.nocaptcha'.

Селектор Описание
'#id' Выбирает элемент с ID id.
'.class' Выбирает все элементы с классом class.
Элемент, массив элементов Обходит селектор, что позволяет выбрать элементы другим способом (например, через jQuery) и передать их в функцию.

Опции виджета

Опции виджета могут быть заданы в трех местах (в порядке убывания приоритета):

  • параметр функции create
  • атрибуты элемента-контейнера
  • объект nocaptchaOptions

Значения, заданные в функции create, перекрывают значения, заданные с помощью атрибутов контейнера, а атрибуты контейнера перекрывают значения, заданные в объекте nocaptchaOptions.

Опции, заданные через nocaptchaOptions, играют роль опций по умолчанию для всех виджетов, создающихся на странице. Этим удобно пользоваться, если на странице всего один виджет или если виджеты имеют общие настройки.

Названия атрибутов контейнера, задающих опции виджета, должны иметь префикс data-, например:

<div class="nocaptcha" data-tabindex="3" data-hidden="yes" data-theme="light"></div>

Опции language, theme, translation, layout и html используются для кастомизации внешнего вида виджета. Более подробно о системе кастомизации виджета можно узнать здесь.

Опция Описание По умолчанию
tabindex

Позиция в последовательности переключения по клавише TAB. -1 — явно не устанавливать.

-1
language

Язык виджета. Представляет собой двухбуквенный код языка, например, 'ru' или 'en'. Доступные языки зависят от компановки виджета.

'ru'
theme

Тема виджета. Значение null указывает не применять встроенные темы к виджету.

Зависит от компановки
hidden

Скрытый виджет. Позволяет показывать виджет только при необходимости ввода капчи.

false
translation

Произвольный перевод виджета. Строки для замены зависят от компановки виджета.

null
layout

Компановка виджета.

'clean'
html

Произвольная компановка виджета.

null

Состояния виджета

Виджет в каждый момент времени находится в одном из пяти состояний:

  • 0 — начальное
  • 1 — ожидание ответа сервера
  • 2 — верифицированное
  • 3 — показ капчи
  • 4 — ошибка

Текущее состояние виджета можно получить с помощью функции state(). Смена состояния сопровождается эмитированием события statechange, которое веб-мастер может использовать по своему усмотрению.

Сразу после создания виджет находится в начальном состоянии. В данном состоянии виджет ожидает команды на верификацию текущего пользователя. На виджете отображается активный элемент (кнопка, ссылка) для отправки команды. Аналогичное действие также можно произвести с помощью функции verify() из JavaScript.

После отправки команды на верификацию виджет переходит в состояние ожидания ответа сервера. По результату проверки пользователя виджет может перейти в верифицированное состояние, либо в состояние показа капчи. Время жизни результатов проверки пользователя ограничено и после таймаута виджет возвращается в начальное состояние.

Для того, чтобы помочь веб-мастеру корректно встроить Некапчу на страницу, было добавлено состояние ошибки, отображающее подробную информацию о ее причинах (например, если публичный ключ не соответствует домену).

Внешний вид виджета

Система кастомизации создавалась с идеей предоставить пользователю мощный инструмент для настройки внешнего вида виджета, но при этом максимально упростить настройку для тех, кому достаточно предустановленных тем. Внутренняя логика виджета была отделена от визуального представления с помощью понятий компановка и тема.

Компановка виджета представляет собой его HTML разметку. Есть несколько доступных компановок, позволяющих выбирать наиболее подходящую разметку. Компановка выбирается с помощью опции виджета layout и определяется текстовым идентификатором. При выборе компановки контейнеру добавляется класс с именем в следующем формате:

nocaptcha__КОМПАНОВКА

Веб-мастер может задать собственную компановку с помощью опции html. Это должена быть строка, содержащая HTML код всех внутренних элементов для всех состояний виджета. Этот код напрямую воссоздается внутри контейнера. При использовании собственной компановки опции theme, layout, translation, language не оказывают никакого действия.

Тема виджета задается текстовым идентификатором с помощью опции theme. У каждой компановки есть набор доступных тем на выбор, одна из которых также является темой по умолчанию. Тема указывает, какие стили необходимо применить к элементам компановки. Задание темы приводит к добавлению нового класса контейнеру. Имя класса имеет следующий формат:

nocaptcha__КОМПАНОВКА-ТЕМА

Стили внутренних элементов компановки задаются относительно внешнего класса темы, чтобы избежать конфликта со стилями элементов на остальной части веб-страницы.

Веб-мастер может отказаться от доступных тем и задать свои стили для виджета. Для этого нужно указать опцию theme равной null и добавить собственный класс контейнеру.

Текстовые строки виджета могут быть локализованы с помощью опции language. Язык определяется текстовым двухбуквенным идентификатором. Компановка может предлагать несколько доступных языков. По умолчанию используется русский язык. Если указан недоступный для данной компановки язык, то будет использован английский язык в качестве международного.

Компановки виджета

Доступные компановки, темы, локализации

nocaptchaOptions

Глобальный объект, должен создаваться до подключения модуля nocaptcha.js. Содержит общие настройки модуля и опции виджетов по умолчанию.

Опция Описание По умолчанию
publicKey Публичный ключ, соответствующий используемому доменному имени. Необходимо указывать всегда. --
addCss Подключать файл со стандартными стилями виджета. Позволяет при использовании собственных стилей ускорить загрузку страницы. true
autoCreate Автоматически создавать виджеты после загрузки веб-страницы. Выполняется поиск всех элементов с классом nocaptcha и в них автоматически создаются виджеты. true

create

nocaptcha.create([selector[, options]]);

Описание

Создает виджеты в контейнерах, выбранных с помощью селектора.

Параметры
Имя Тип Описание По умолчанию
selector опциональный Селектор контейнеров, в которых создаются виджеты. '.nocaptcha'
options опциональный Опции создаваемых виджетов {}
Пример
nocaptcha.create('#container', {hidden: true, tabindex: 3});

state

nocaptcha.state([selector]);

Описание

Возвращает текущее состояние виджета.

Параметры
Имя Тип Описание По умолчанию
selector опциональный Селектор контейнера виджета. Должен указывать на один элемент. '.nocaptcha'
Возвращает

Текущее состояние виджета.

Пример
var state = nocaptcha.state('#container');

ready

nocaptcha.ready([selector[, onready[, onnotready]]]);

Описание

Если функции обратного вызова не указаны, то возвращает значение готовности виджета к отправке формы.

Если функции обратного вызова указаны, то значение готовности возвращается через них. Также если виджет находился в начальном состоянии (0), то автоматически вызывается функция verify.

Виджет считается готовым к отправке, если он находится в верифицированном состоянии, или если он находится в состоянии показа капчи и поле ввода значения непустое.

Параметры
Имя Тип Описание По умолчанию
selector опциональный Селектор контейнера виджета. Должен указывать на один элемент. '.nocaptcha'
onready опциональный Функция обратного вызова, вызываемая, если виджет готов к отправке формы. --
onnotready опциональный Функция обратного вызова, вызываемая, если виджет не готов к отправке формы. --
Возвращает

true, если виджет готов к отправке формы. false, если виджет не готов к отправке формы.

Пример
nocaptcha.ready('#container', function () {
    sendForm();
}, function () {
    notifyUser();
});

refresh

nocaptcha.refresh([selector]);

Описание

Обновляет капчу, если она показывается.

Параметры
Имя Тип Описание По умолчанию
selector опциональный Селектор контейнера виджета. Должен указывать на один элемент. '.nocaptcha'
Пример
nocaptcha.refresh('#container');

verify

nocaptcha.verify([selector]);

Описание

Отправляет запрос верификации пользователя на сервер.

Параметры
Имя Тип Описание По умолчанию
selector опциональный Селектор контейнера виджета. Должен указывать на один элемент. '.nocaptcha'
Пример
nocaptcha.verify('#container');

reset

nocaptcha.reset([selector]);

Описание

Возвращает виджет в начальное состояние (0).

Параметры
Имя Тип Описание По умолчанию
selector опциональный Селектор контейнера виджета. Должен указывать на один элемент. '.nocaptcha'
Пример
nocaptcha.reset('#container');