INTEGRITY Документация

Конфигурации виджетов

Настройте внешний вид, поведение и возможности виджета Turnstile через data-атрибуты или параметры рендеринга в JavaScript.

Способы отрисовки

Виджеты Turnstile можно подключать через неявную или явную отрисовку.

При неявной отрисовке Turnstile автоматически ищет в вашем HTML элементы с классом cf-turnstile в качестве класса и отрисовывает виджет при загрузке страницы. Такой способ лучше всего подходит для простых реализаций, статических сайтов и случаев, когда виджет должен появляться сразу при загрузке страницы.

Как это работает

  1. Добавьте скрипт Turnstile на страницу.
  2. Подключите <div class="cf-turnstile" data-sitekey="your-key"></div> (элементы).
  3. Виджеты отрисуются автоматически при загрузке страницы.
  4. Настройте виджет с помощью data-* в атрибутах HTML-элемента.
Пример
	<script src="https://challenges.cloudflare.com/turnstile/v0/api.js" async defer></script>
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-theme="light"></div>

Явный рендеринг даёт программный контроль над тем, когда и как создаются виджеты, с помощью функций JavaScript. Он лучше всего подходит для динамических сайтов и одностраничных приложений (SPA), когда нужно управлять моментом создания виджета, выводить его в зависимости от действий посетителя или размещать несколько виджетов с разными настройками.

Как это работает

  1. Добавьте скрипт Turnstile с ?render=explicit параметр.
  2. Создайте элементы контейнера (без cf-turnstile в качестве класса).
  3. Вызовите turnstile.render(), когда нужно создать виджеты.
  4. Настройка виджета через параметры объекта JavaScript.
Пример
	<script src="https://challenges.cloudflare.com/turnstile/v0/api.js?render=explicit" defer></script>
	<div id="my-widget"></div>
	
	<script>
	window.onload = function() {
		turnstile.render('#my-widget', {
			sitekey: '<YOUR-SITE-KEY>',
			theme: 'light',
			callback: function(token) {
				console.log('Success:', token);
			}
		});
	};
	</script>

Размеры виджета

В режимах Managed и Non-Interactive виджет Turnstile может иметь два фиксированных размера или гибкую ширину.

Размер Ширина Высота Сценарий использования
Normal 300px 65px Стандартная реализация
Flexible 100% (мин.: 300px) 65px Адаптивная вёрстка
Compact 150px 140px Макеты с ограниченным местом
Размер Normal (по умолчанию)
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Размер Flexible
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-size="flexible"></div>
Размер Compact
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-size="compact"></div>
Размер Normal (по умолчанию)
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>'
	});
Размер Flexible
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		size: 'flexible'
	});
Размер Compact
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		size: 'compact'
	});

Варианты темы

Настройте внешний вид виджета под дизайн вашего сайта.

Автоматическая тема (по умолчанию)
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Светлая тема
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-theme="light"></div>
Тёмная тема
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-theme="dark"></div>
Автоматическая тема (по умолчанию)
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>'
	});
Светлая тема
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		theme: 'light'
	});
Тёмная тема
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		theme: 'dark'
	});

Режимы отображения

Режим отображения определяет, когда виджет становится видимым для посетителей.

Всегда видимый (по умолчанию)
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Виден только после начала проверки
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-appearance="execute"></div>
Виден только тогда, когда нужно взаимодействие
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-appearance="interaction-only"></div>
Всегда видимый (по умолчанию)
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>'
	});
Виден только после начала проверки
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		appearance: 'execute'
	});
Виден только тогда, когда нужно взаимодействие
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		appearance: 'interaction-only'
	});

Режимы выполнения

Определите, когда запускается проверка и создаётся токен.

Автоматический запуск (по умолчанию)
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Ручной запуск
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-execution="execute"></div>
Автоматический запуск (по умолчанию)
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>'
	});
Ручной запуск
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		execution: 'execute'
	});
Отложенное выполнение проверки
	turnstile.execute('#widget-container');

Настройка языка

Задайте язык интерфейса виджета.

Автоопределение языка (по умолчанию)
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Конкретный язык
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-language="es"></div>
Язык и страна
	<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-language="en-US"></div>
Автоопределение языка (по умолчанию)
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>'
	});
Конкретный язык
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		language: 'es'
	});

Настройка функций обратного вызова

Обрабатывайте события виджета с помощью функций обратного вызова.

Callback успешного завершения получает токен, который нужно проверить на вашем сервере через Siteverify API. Токен одноразовый и истекает через 300 секунд (пять минут).

	<div class="cf-turnstile"
		data-sitekey="<YOUR-SITE-KEY>"
		data-callback="onSuccess"
		data-error-callback="onError"
		data-expired-callback="onExpired"
		data-timeout-callback="onTimeout"></div>
	<script>
	function onSuccess(token) {
	console.log('Challenge Success:', token);
	}
	function onError(errorCode) {
	console.log('Challenge Error:', errorCode);
	}
	function onExpired() {
	console.log('Token expired');
	}
	function onTimeout() {
	console.log('Challenge timed out');
	}
	</script>
	turnstile.render('#widget-container', {
		sitekey: '<YOUR-SITE-KEY>',
		callback: function(token) {
			console.log('Challenge Success:', token);
		},
		'error-callback': function(errorCode) {
			console.log('Challenge Error:', errorCode);
		},
		'expired-callback': function() {
			console.log('Token expired');
		},
		'timeout-callback': function() {
			console.log('Challenge timed out');
		}
	});

Рекомендации


Расширенные параметры конфигурации

Поведение при повторных попытках

Настройте, как Turnstile обрабатывает неуспешные проверки.

Автоматический повтор (по умолчанию)
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Отключение повторных попыток
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-retry="never"></div>
Собственный интервал повторных попыток (по умолчанию 8000 мс)
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-retry-interval="0000"></div>

Поведение при обновлении

Настройте, как Turnstile обрабатывает истечение срока действия токена и тайм-ауты интерактивной проверки.

Преимущества

В зависимости от требований к работе посетителей для истечения срока действия токена и для тайм-аутов интерактивной проверки можно задать разные стратегии.

Автообновление истёкших токенов (по умолчанию)
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>"></div>
Ручное обновление
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-refresh-expired="manual"></div>
Автообновление после тайм-аутов (по умолчанию для режима Managed)
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-refresh-timeout="auto"></div>

Пользовательские данные

Добавляйте к проверкам собственные идентификаторы и данные.

Сценарии использования

Добавьте собственный идентификатор действия
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-action="login"></div>
Добавьте собственные данные к проверке
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-cdata="user-cdata"></div>

Интеграция с формой

Настройка интеграции Turnstile с формами HTML.

Если этот параметр включён, Turnstile автоматически создаёт скрытый <input> с токеном проверки. Он отправляется вместе с остальными данными формы, поэтому проверка на сервере не требует дополнительных усилий.

Преимущества

Собственное имя поля ответа
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-response-field-name="turnstile-token"></div>
Отключение поля ответа
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-response-field="false"></div>

Полный справочник по настройке

Параметры отрисовки в JavaScript Атрибут data Описание
sitekey data-sitekey У каждого виджета есть sitekey. Он привязан к конфигурации этого виджета и создаётся вместе с ним.
action data-action Произвольное значение, которое позволяет различать в аналитике виджеты с одним sitekey и возвращается при проверке токена. Допускается не более 32 буквенно-цифровых символов, включая _ и -.
cData data-cdata Произвольные данные клиента, которые можно связать с проверкой на всё время её выдачи и получить обратно при проверке токена. Допускается не более 255 буквенно-цифровых символов, включая _ и -.
callback data-callback Обратный вызов JavaScript, который выполняется при успешном прохождении проверки. В него передаётся токен, пригодный для проверки.
error-callback data-error-callback Обратный вызов JavaScript, который выполняется при ошибке, например при сетевом сбое или неудачной проверке. Смотрите Ошибки на стороне клиента.
execution data-execution Параметр execution определяет, когда виджет получает токен, и может принимать значение render (по умолчанию) или по execute. См. Режимы выполнения, где это описано подробнее.
expired-callback data-expired-callback Обратный вызов JavaScript, который выполняется при истечении срока действия токена и не сбрасывает виджет.
before-interactive-callback data-before-interactive-callback Обратный вызов JavaScript, который выполняется перед переходом проверки в интерактивный режим.
after-interactive-callback data-after-interactive-callback Обратный вызов JavaScript, который выполняется после выхода проверки из интерактивного режима.
unsupported-callback data-unsupported-callback Обратный вызов JavaScript, который выполняется, если Turnstile не поддерживает клиент или браузер посетителя.
theme data-theme Тема виджета. Допустимые значения: light, dark, auto.

По умолчанию используется auto, который учитывает настройки посетителя. Можно принудительно задать light или dark, указав соответствующую тему.
language data-language Отображаемый язык, допустимые значения: auto (по умолчанию), чтобы использовать язык, выбранный посетителем, либо двухбуквенный код языка по ISO 639-1 (например, en) либо код языка и страны (например, en-US). См. список поддерживаемых языков, где это описано подробнее.
tabindex data-tabindex Значение tabindex для iframe Turnstile, нужное для доступности. По умолчанию используется 0.
timeout-callback data-timeout-callback Обратный вызов JavaScript, который выполняется, если интерактивная проверка не была решена за отведённое время. Обратный вызов сбрасывает виджет, чтобы посетитель мог пройти проверку заново.
response-field data-response-field Логическое значение, которое определяет, создавать ли элемент input с токеном ответа. Значение по умолчанию: true.
response-field-name data-response-field-name Название элемента input, по умолчанию cf-turnstile-response.
size data-size Размер виджета. Допустимые значения: normal, flexible, compact.
retry data-retry Определяет, должен ли виджет автоматически повторять попытку получить токен после неудачи. Значение по умолчанию: auto, который автоматически повторяет попытку. Значение можно изменить на never, чтобы отключить повторные попытки при ошибке.
retry-interval data-retry-interval Когда retry имеет значение auto, retry-interval задаёт интервал между повторными попытками в миллисекундах. Значение должно быть положительным целым числом меньше 900000, по умолчанию 8000.
refresh-expired data-refresh-expired Автоматически обновляет токен по истечении срока действия. Принимает значения: auto, manual, или never, по умолчанию auto.
refresh-timeout data-refresh-timeout Определяет, должен ли виджет автоматически обновляться, если интерактивная проверка началась и завершилась по тайм-ауту. Возможные значения: auto (автоматически обновляется при истечении времени ожидания взаимодействия), manual (посетителю предлагается обновить проверку вручную) или never (будет показано истечение времени ожидания), значение по умолчанию: auto. Применяется только к виджетам в режиме Managed.
appearance data-appearance Параметр appearance управляет тем, когда виджет виден. Возможные значения: always (по умолчанию), execute, или interaction-only. См. Режимы отображения, где это описано подробнее.
feedback-enabled data-feedback-enabled Позволяет Cloudflare собирать отзывы посетителей при сбое виджета. Возможные значения: true (по умолчанию) или false.
offlabel-show-privacy data-offlabel-show-privacy Показывает ссылку на политику конфиденциальности для виджетов Turnstile без брендирования. Возможные значения: true (по умолчанию) или false.
offlabel-show-help data-offlabel-show-help Показывает ссылку на справку для виджетов Turnstile без брендирования. Возможные значения: true (по умолчанию) или false.

Примеры

Виджет с адаптивной вёрсткой
<div style="max-width: 500px;">
  <div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-size="flexible" data-theme="auto"></div>
</div>
Компактный виджет, оптимизированный для мобильных устройств
<div class="cf-turnstile" data-sitekey="<YOUR-SITE-KEY>" data-size="compact" data-theme="light" data-language="en">
</div>