Создать капчу
SmartCaptcha позволяет создавать капчи нескольких уровней сложности для разных входящих запросов. Уровень сложности запроса определяется по базовым параметрам входящего трафика.
При создании капчи вы можете:
- Подключить капчу к нескольким сайтам.
- Настроить внешний вид капчи: фон, состояния и ошибки, стиль кнопки Я не робот.
- Выбрать тип задания и сложность прохождения капчи.
- Показывать разные варианты капчи в зависимости от параметров входящего запроса. Например, выбрать разную капчу для пользователей из разных регионов.
Примечание
Чтобы сделать вашу защиту более эффективной, мы используем информацию об HTTP-запросах для развития моделей машинного обучения (ML). Вы можете отключить использование этой информации в консоли управления
-
В консоли управления
выберите каталог. -
Выберите сервис Yandex SmartCaptcha.
-
Нажмите Создать капчу.
-
Укажите Имя создаваемой капчи:
- длина — от 2 до 63 символов;
- может содержать строчные буквы латинского алфавита, цифры и дефисы;
- первый символ — буква, последний — не дефис.
-
(Опционально) Выберите Отключить проверку домена.
-
Введите Список хостов в формате IP-адресов или доменных имен. Указывайте адрес без протокола и без
/
в конце, например,example.com
.Капча будет работать и во всех поддоменах указанных доменных имен.
-
Настройте Внешний вид кнопки Я не робот и окна с заданием:
Стандартный
— внешний вид по умолчанию.Серый
.Темная тема
.Синий
.
В разделе Настройка внешнего вида вы можете задать свои параметры окна задания и других элементов: через форму или через описание стилей в формате
JSON
.Все изменения будут отображаться в окне предпросмотра.
-
Настройте Варианты заданий. Вы можете указать только капчу по умолчанию или добавить дополнительные варианты, если по разным входящим запросам нужно показывать разную капчу.
-
Для варианта По умолчанию укажите:
-
Основное задание — тип основного задания, которое предлагается решить пользователю.
-
Дополнительное задание — тип дополнительного задания, которое предлагается решить пользователю.
-
Сложность — сложность задания, которое увидит пользователь:
-
Легкая
— простое задание. -
Средняя
— задание среднего уровня сложности. -
Высокая
— сложное задание. -
Максимальная
— сложное задание с дополнительным вопросом. От пользователя требуется решение дополнительного задания, вне зависимости от результатов выполнения основного задания.Пример задания можно посмотреть в окне предпросмотра.
Примечание
Функциональность вариантов заданий и правил показа находится на стадии Preview.
-
-
Чтобы по разным запросам показывать разную капчу:
-
Нажмите кнопку Добавить вариант и задайте настройки аналогично капче по умолчанию.
Чтобы удалить вариант, нажмите
. Если вариант используется в правиле показа, удалить его нельзя -
Добавьте правила для входящего трафика, которые будут определять, какой вариант капчи показывать:
-
Нажмите кнопку Добавить правило.
-
Введите имя и описание правила.
-
Выберите вариант капчи.
-
Укажите приоритет правила от
1
до999999
.Правила проверяются в порядке приоритета от меньшего к большему:
1
,2
и так далее. Если трафик соответствует нескольким правилам, к нему применится первое сработавшее правило. -
Укажите одно или несколько условий для входящего трафика:
IP
— IP-адрес, диапазон адресов или регион IP-адресов;HTTP header
— строка в заголовке HTTP;URI
— путь входящего запроса к сайту;Host
— домен, на который пришел запрос.
-
Нажмите кнопку Добавить.
Чтобы удалить правило, нажмите
. Правило по умолчанию удалить нельзя.
-
-
Таким же способом добавьте другие варианты капчи и правила для входящего трафика.
-
-
(Опционально) Включите или отключите использование информации об HTTP-запросах для улучшения моделей машинного обучения в разделе Обучение ML-моделей.
-
Нажмите Создать.
Капча отобразится на странице сервиса в разделе Список капч.
Если у вас еще нет интерфейса командной строки Yandex Cloud, установите и инициализируйте его.
По умолчанию используется каталог, указанный в профиле CLI. Вы можете указать другой каталог с помощью параметра --folder-name
или --folder-id
.
-
Посмотрите описание команды CLI для создания капчи:
yc smartcaptcha captcha create --help
-
Создайте капчу:
yc smartcaptcha captcha create \ --name <имя_капчи> --turn-off-hostname-check \ --allowed-site <первый_хост>,<второй_хост> \ --style-json '<внешний_вид_капчи>' \ --pre-check-type <тип_основного_задания> \ --challenge-type <тип_дополнительного_задания> \ --complexity <сложность_задания> \ --override-variants-file <путь_к_файлу_с_правилами>.yaml \ --security-rules-file <путь_к_файлу_с_вариантами>.yaml
Где:
-
--name
— имя капчи. -
--turn-off-hostname-check
— отключение проверки домена. Необязательный параметр. -
--allowed-site
— список хостов в формате IP-адресов или доменных имен. Указывайте адрес без протокола и без/
в конце, например,example.com
. Капча будет работать и во всех поддоменах указанных доменных имен. Необязательный параметр. -
--style-json
— внешний вид окна задания и других элементов в форматеJSON
. Подробнее смотрите вJSON
, сгенерированном с помощью консоли управления . Необязательный параметр. -
--pre-check-type
— тип основного задания по умолчанию, которое предлагается решить пользователю. -
--challenge-type
— тип дополнительного задания по умолчанию, которое предлагается решить пользователю. -
--complexity
— сложность задания по умолчанию. Возможные значения:EASY
— простое задание.MEDIUM
— задание среднего уровня сложности.HARD
— сложное задание.FORCE_HARD
— сложное задание с дополнительным вопросом. От пользователя требуется решение дополнительного задания, вне зависимости от результатов выполнения основного задания.
Примечание
Функциональность вариантов заданий и правил показа находится на стадии Preview.
-
--security-rules-file
— путь к файлу в форматеYAML
с правилами для входящего трафика, которые будут определять, какой вариант капчи показывать. Необязательный параметр.Пример файла с правилами для входящего трафика
- name: <название_правила_1> priority: "<приоритет_правила_1>" description: <описание_правила_1> override_variant_uuid: <идентификатор_варианта_задания> condition: host: hosts: - exact_match: example.com - exact_match: example.net - name: <название_правила_2> priority: "<приоритет_правила_2>" description: <описание_правила_2> override_variant_uuid: <идентификатор_варианта_задания> condition: source_ip: geo_ip_match: locations: - ru - es
Где:
-
name
— имя правила. -
priority
— приоритет правила от1
до999999
.Правила проверяются в порядке приоритета от меньшего к большему:
1
,2
и так далее. Если трафик соответствует нескольким правилам, к нему применится первое сработавшее правило. -
description
— описание правила. Необязательный параметр. -
override_variant_uuid
— идентификатор варианта задания, которое будет отображаться в случае соответствия трафика правилу. Если параметр не указан, будет отображаться задание по умолчанию. -
condition
— одно или несколько условий для входящего трафика. Необязательный параметр.
-
-
--override-variants-file
— путь к файлу в форматеYAML
с вариантами заданий. Необязательный параметр.Пример файла с вариантами заданий
- uuid: <идентификатор_варианта_1> description: <описание_варианта_1> complexity: <сложность_задания> pre_check_type: <основное_задание> challenge_type: <дополнительное_задание> - uuid: <идентификатор_варианта_2> description: <описание_варианта_2> complexity: <сложность_задания> pre_check_type: <основное_задание> challenge_type: <дополнительное_задание>
Где:
uuid
— уникальный идентификатор варианта задания.description
— описание варианта задания.complexity
— сложность задания, которое увидит пользователь.pre_check_type
— тип основного задания, которое предлагается решить пользователю.challenge_type
— тип дополнительного задания, которое предлагается решить пользователю.
-
Результат:
id: bpnd6cm6qpr5********
folder_id: b1g0ijbfaqsn********
cloud_id: b1gia87mbaom********
client_key: ysc1_2lla0Yn6dhlnEaTv2QNg2BhuA8Nqlyk4L7pZk3dz********
created_at: "2025-03-02T21:38:48.830498Z"
name: my-first-captcha
allowed_sites:
- exmaple.com
- exmaple.net
complexity: MEDIUM
style_json: '{"focus-color":"rgb(250, 192, 0)","base-background-color":"#fff"}'
turn_off_hostname_check: true
pre_check_type: CHECKBOX
challenge_type: IMAGE_TEXT
security_rules:
- name: rule1
priority: "11"
description: My first security rule.
condition:
host:
hosts:
- exact_match: example.com
- exact_match: example.net
override_variant_uuid: variant-1
- name: rule2
priority: "12"
condition:
source_ip:
geo_ip_match:
locations:
- ru
- es
override_variant_uuid: variant-2
override_variants:
- uuid: variant-1
description: override variant 1
complexity: EASY
pre_check_type: CHECKBOX
challenge_type: SILHOUETTES
- uuid: variant-2
description: override variant 2
complexity: HARD
pre_check_type: CHECKBOX
challenge_type: KALEIDOSCOPE
Terraform
Terraform распространяется под лицензией Business Source License
Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform
Если у вас еще нет Terraform, установите его и настройте провайдер Yandex Cloud.
Чтобы создать капчу:
-
Опишите в конфигурационном файле Terraform параметры ресурсов, которые необходимо создать:
resource "yandex_smartcaptcha_captcha" "demo-advanced-smartcaptcha" { name = "<имя_капчи>" style_json = "<внешний_вид_капчи>" complexity = "<сложность_задания>" pre_check_type = "<тип_основного_задания>" challenge_type = "<тип_дополнительного_задания>" allowed_sites = [ "<первый_хост>", "<второй_хост>" ] # Первый вариант задания override_variant { uuid = "<идентификатор_варианта_1>" description = "<описание_варианта_1>" complexity = "<сложность_задания>" pre_check_type = "<основное_задание>" challenge_type = "<дополнительное_задание>" } # Второй вариант задания override_variant { uuid = "<идентификатор_варианта_2" description = "<описание_варианта_2>" complexity = "<сложность_задания>" pre_check_type = "<основное_задание>" challenge_type = "<дополнительное_задание>" } # Первое правило security_rule { name = "<название_правила_1>" priority = <приоритет_правила_1> description = "<описание_правила_1>" override_variant_uuid = "<идентификатор_варианта_задания>" condition { host { hosts { exact_match = "example.com" } hosts { exact_match = "example.net" } } } } # Второе правило security_rule { name = "<название_правила_2>" priority = <приоритет_правила_2> description = "<описание_правила_2>" override_variant_uuid = "<идентификатор_варианта_задания>" condition { source_ip { geo_ip_match { locations = ["ru", "es"] } } } } }
Где:
-
name
— имя капчи. -
style_json
— внешний вид окна задания и других элементов в форматеJSON
. Подробнее смотрите вJSON
, сгенерированном с помощью консоли управления . Необязательный параметр. -
complexity
— сложность задания по умолчанию, которое увидит пользователь. Возможные значения:EASY
— простое задание.MEDIUM
— задание среднего уровня сложности.HARD
— сложное задание.FORCE_HARD
— сложное задание с дополнительным вопросом. От пользователя требуется решение дополнительного задания, вне зависимости от результатов выполнения основного задания.
Примечание
Функциональность вариантов заданий и правил показа находится на стадии Preview.
-
pre_check_type
— тип основного задания по умолчанию, которое предлагается решить пользователю. -
challenge_type
— тип дополнительного задания по умолчанию, которое предлагается решить пользователю. -
allowed_sites
— список хостов в формате IP-адресов или доменных имен. Указывайте адрес без протокола и без/
в конце, например,example.com
. Капча будет работать и во всех поддоменах указанных доменных имен. Необязательный параметр. -
override_variant
— блок с описанием варианта задания. Необязательный параметр.uuid
— уникальный идентификатор варианта задания.description
— описание варианта задания. Необязательный параметр.complexity
— сложность задания, которое увидит пользователь.pre_check_type
— тип основного задания, которое предлагается решить пользователю.challenge_type
— тип дополнительного задания, которое предлагается решить пользователю.
-
security_rule
— блок с описанием правила для входящего трафика, которое будет определять, какой вариант капчи показывать. Необязательный параметр.-
name
— имя правила. -
priority
— приоритет правила от1
до999999
.Правила проверяются в порядке приоритета от меньшего к большему:
1
,2
и так далее. Если трафик соответствует нескольким правилам, к нему применится первое сработавшее правило. -
description
— описание правила. Необязательный параметр. -
override_variant_uuid
— идентификатор варианта задания, которое будет отображаться в случае соответствия трафика правилу. Если параметр не указан, будет отображаться задание по умолчанию. -
condition
— одно или несколько условий для входящего трафика. Необязательный параметр.
-
Более подробную информацию о параметрах ресурса
yandex_smartcaptcha_captcha
, см. в документации провайдера . -
-
Создайте ресурсы:
-
В терминале перейдите в папку, где вы отредактировали конфигурационный файл.
-
Проверьте корректность конфигурационного файла с помощью команды:
terraform validate
Если конфигурация является корректной, появится сообщение:
Success! The configuration is valid.
-
Выполните команду:
terraform plan
В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.
-
Примените изменения конфигурации:
terraform apply
-
Подтвердите изменения: введите в терминале слово
yes
и нажмите Enter.
Terraform создаст все требуемые ресурсы. Проверить появление ресурсов можно в консоли управления
или с помощью команды CLI:yc smartcaptcha captcha list
-
Чтобы создать капчу, воспользуйтесь методом REST API create для ресурса Captcha или вызовом gRPC API Captcha/Create.