Конфигурация
Полное руководство по настройке и конфигурации виджета.
ADQuest.init({ siteKey: string, // Ваш Public Key (pk_...) из dashboard container: HTMLElement // DOM элемент для виджета});interface ADQuestConfig { // Обязательные siteKey: string; container: HTMLElement;
// Опциональные apiBaseURL?: string; // По умолчанию: 'https://api.ad-quest.ru' mode?: 'advertisement' | 'captcha' | 'invisible'; // По умолчанию: 'advertisement' theme?: 'light' | 'dark'; // По умолчанию: 'light' language?: 'ru' | 'en'; // По умолчанию: 'ru' hideOnSuccess?: boolean; // По умолчанию: false tokenTTL?: number; // В секундах, по умолчанию: 3600
// Callbacks onSuccess?: (token: string) => void; onError?: (error: Error) => void; onExpire?: () => void; onLoad?: () => void;}ADQuest.init({ siteKey: 'pk_demo_1234567890abcdef1234567890abcdef', // Демо Public Key container: document.getElementById('adquest-captcha')});ADQuest.init({ siteKey: 'pk_demo_1234567890abcdef1234567890abcdef', // Демо Public Key container: document.getElementById('adquest-captcha'), apiBaseURL: 'https://api.ad-quest.ru', mode: 'advertisement', theme: 'light', language: 'ru', hideOnSuccess: true, tokenTTL: 3600,
onSuccess: (token) => { console.log('Токен получен:', token); // Отправьте токен на сервер },
onError: (error) => { console.error('Ошибка:', error); // Обработайте ошибку },
onExpire: () => { console.log('Токен истек'); // Обновите виджет },
onLoad: () => { console.log('Виджет загружен'); }});Основной режим с показом рекламы:
ADQuest.init({ siteKey: 'pk_demo_1234567890abcdef1234567890abcdef', container: document.getElementById('adquest-captcha'), mode: 'advertisement'});Fallback режим с обычной CAPTCHA:
ADQuest.init({ siteKey: 'pk_demo_1234567890abcdef1234567890abcdef', container: document.getElementById('adquest-captcha'), mode: 'captcha'});Автоматическая проверка без UI:
ADQuest.init({ siteKey: 'pk_demo_1234567890abcdef1234567890abcdef', container: document.getElementById('adquest-captcha'), mode: 'invisible'});Когда использовать Invisible Mode
Invisible Mode подходит для:
- Страниц с низким риском
- Авторизованных пользователей
- API endpoints с дополнительной защитой
Не рекомендуется для:
- Форм регистрации
- Платежных форм
- Публичных API
ADQuest.init({ siteKey: 'pk_demo_1234567890abcdef1234567890abcdef', container: document.getElementById('adquest-captcha'), theme: 'light'});ADQuest.init({ siteKey: 'pk_demo_1234567890abcdef1234567890abcdef', container: document.getElementById('adquest-captcha'), theme: 'dark'});const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
ADQuest.init({ siteKey: 'pk_demo_1234567890abcdef1234567890abcdef', container: document.getElementById('adquest-captcha'), theme: prefersDark ? 'dark' : 'light'});Поддерживаемые языки:
ru- Русский (по умолчанию)en- English
ADQuest.init({ siteKey: 'pk_demo_1234567890abcdef1234567890abcdef', container: document.getElementById('adquest-captcha'), language: 'en'});ADQuest включает встроенные механизмы защиты:
- Rate Limiting: Ограничение количества запросов с одного IP
- Fingerprinting: Идентификация браузера и устройства
- Behavioral Analysis: Анализ поведения пользователя
- Token Validation: Проверка токена на сервере
Для разработки и тестирования используйте демо-ключи:
Демо Public Key (для виджета):
pk_demo_1234567890abcdef1234567890abcdefДемо Secret Key (для бэкенда):
sk_secret_demo_1234567890abcdef1234567890ab// Пример использования демо-ключаADQuest.init({ siteKey: 'pk_demo_1234567890abcdef1234567890abcdef', container: document.getElementById('adquest-captcha')});Важно о демо-ключах
Демо-ключи предназначены только для тестирования:
- Работают на любом домене (включая localhost)
- Всегда показывают тестовую рекламу
- Токены проходят базовую валидацию
- НЕ используйте в production!
Для production получите реальные ключи:
- Зарегистрируйтесь на dashboard.ad-quest.ru ↗
- Добавьте ваш домен
- Получите уникальные Public Key и Secret Key
- Используйте их в вашем приложении
Рекомендуется хранить ключи в переменных окружения:
Для фронтенда (.env):
# Public Key - безопасно использовать на клиентеNEXT_PUBLIC_ADQUEST_SITE_KEY=pk_your_public_key_hereДля бэкенда (.env):
# Secret Key - ТОЛЬКО для сервера, никогда не отправляйте на клиент!ADQUEST_SECRET_KEY=sk_secret_your_secret_key_hereADQUEST_API_URL=https://api.ad-quest.ruИспользование в коде:
// ФронтендADQuest.init({ siteKey: process.env.NEXT_PUBLIC_ADQUEST_SITE_KEY, container: document.getElementById('adquest-captcha')});
// Бэкенд (Node.js)const secretKey = process.env.ADQUEST_SECRET_KEY;- API Reference - изучите доступные методы
- Примеры интеграции - готовые решения
- Troubleshooting - решение проблем