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

Проверьте свою реализацию Turnstile

Используйте тестовые sitekey и секретные ключи, чтобы проверить свою реализацию Turnstile, не запуская настоящие проверки, которые мешали бы наборам автотестов.

Наборы автотестов (например, Selenium, Cypress или Playwright) Turnstile распознаёт как ботов, из-за чего возможны:

Тестовые ключи (dummy keys) решают эту задачу: они дают предсказуемые, управляемые ответы, которые работают с инструментами автоматического тестирования.

Тестовые sitekey

Sitekey Поведение Тип виджета Сценарий использования
1x00000000000000000000AA Всегда проходит Видимый Проверка успешной отправки форм
2x00000000000000000000AB Всегда не проходит Видимый Проверка обработки ошибок и логики повторных попыток
1x00000000000000000000BB Всегда проходит Invisible Проверка успешных сценариев невидимого виджета
2x00000000000000000000BB Всегда не проходит Invisible Проверка обработки ошибок невидимого виджета
3x00000000000000000000FF Принудительно запускает интерактивную проверку Видимый Проверка сценариев взаимодействия с пользователем

Тестовые секретные ключи

Эти секретные ключи используйте для тестирования серверной проверки:

Секретный ключ Поведение Сценарий использования
1x0000000000000000000000000000000AA Всегда проходит проверку Проверка успешной валидации токена
2x0000000000000000000000000000000AA Всегда не проходит проверку Проверка обработки ошибок валидации
3x0000000000000000000000000000000AA Возвращает ошибку «token already spent» Проверка обработки повторно отправленного токена

Внедрение

Локальная разработка

Тестовые ключи работают на любом домене, в том числе:

Cloudflare рекомендует, чтобы боевые sitekey не допускали локальные домены (localhost или 127.0.0.1), но пользователи могут добавить локальные домены в список разрешённых доменов в разделе Управление именами хостов. Тестовые sitekey можно использовать с любого домена, в том числе на localhost.

Тестирование на стороне клиента

Замените рабочий sitekey тестовым.

<!-- Development/Testing -->
<div class="cf-turnstile" data-sitekey="1x00000000000000000000AA"></div>

<!-- Production -->
<div class="cf-turnstile" data-sitekey="your-real-sitekey"></div>

Тестирование на стороне сервера

Замените рабочий секретный ключ тестовым.

// Environment-based configuration
const SECRET_KEY = process.env.NODE_ENV === 'production' 
  ? process.env.TURNSTILE_SECRET_KEY 
  : '1x0000000000000000000000000000000AA';

// Use in validation
const validation = await validateTurnstile(token, SECRET_KEY);

Настройка окружения

Заведите отдельные ключи для каждой среды.


# .env.development
TURNSTILE_SITEKEY=1x00000000000000000000AA
TURNSTILE_SECRET_KEY=1x0000000000000000000000000000000AA

# .env.test  
TURNSTILE_SITEKEY=2x00000000000000000000AB
TURNSTILE_SECRET_KEY=2x0000000000000000000000000000000AA

# .env.production
TURNSTILE_SITEKEY=your-real-sitekey
TURNSTILE_SECRET_KEY=your-real-secret-key

Поведение тестового токена

Генерация токена

Тестовые sitekey выдают фиктивный токен: XXXX.DUMMY.TOKEN.XXXX

Валидация токена

Ответ проверки

Успешный ответ
{
  "success": true,
  "challenge_ts": "2022-02-28T15:14:30.096Z",
  "hostname": "localhost",
  "error-codes": [],
  "action": "test",
  "cdata": "test-data"
}
Ответ при ошибке
{
  "success": false,
  "error-codes": ["invalid-input-response"]
}
Токен уже использован
{
  "success": false,
  "error-codes": ["timeout-or-duplicate"]
}

Сценарии тестирования

Тестовый sitekey Тестовый секретный ключ
Тестовый сценарий
1x00000000000000000000AA 1x0000000000000000000000000000000AA Такое сочетание всегда даёт успешную валидацию.
2x00000000000000000000AB 2x0000000000000000000000000000000AA Такое сочетание всегда завершается ошибкой.
1x00000000000000000000AA 3x0000000000000000000000000000000AA Такое сочетание всегда завершается ошибкой "timeout-or-duplicate".