Troubleshooting
Решение частых проблем и ошибок при работе с ADQuest Widget.
Проверьте загрузку скриптов
Убедитесь, что скрипты загружены правильно:
// Проверка в консоли браузераconsole.log(typeof window.ADQuest); // Должно быть 'object'Если undefined, проверьте:
- Правильность URL скрипта
- Отсутствие блокировки Content Security Policy
- Отсутствие блокировки AdBlock
Проверьте Site Key
// Неправильно - Site Key не указанADQuest.init({ container: document.getElementById("adquest-captcha"),});
// ПравильноADQuest.init({ siteKey: "YOUR_SITE_KEY", container: document.getElementById("adquest-captcha"),});Проверьте контейнер
const container = document.getElementById("adquest-captcha");console.log(container); // Не должно быть null
if (!container) { console.error("Контейнер не найден!");}Причины:
- Неверный Site Key
- Site Key для другого домена
- Использование production ключа на localhost
Решение:
// Используйте тестовый ключ для разработкиconst SITE_KEY = process.env.NODE_ENV === "production" ? "prod_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx" : "test_xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx";
ADQuest.init({ siteKey: SITE_KEY, container: document.getElementById("adquest-captcha"),});Проверьте время жизни токена
Токены действительны 1 час по умолчанию:
// Увеличьте время жизни токенаADQuest.init({ siteKey: "YOUR_SITE_KEY", container: document.getElementById("adquest-captcha"), tokenTTL: 7200, // 2 часа});Проверьте одноразовое использование
Каждый токен можно использовать только один раз:
// Неправильно - повторное использование токенаconst token = ADQuest.getToken();await verifyToken(token); // Первая проверка - OKawait verifyToken(token); // Вторая проверка - FAIL
// Правильно - получите новый токенADQuest.reset();// Пользователь проходит проверку зановоДобавьте домен в dashboard
- Откройте Dashboard ↗
- Перейдите в настройки Site Key
- Добавьте ваш домен в список разрешенных
Проверьте apiBaseURL
// Убедитесь, что используете правильный URLADQuest.init({ siteKey: "YOUR_SITE_KEY", container: document.getElementById("adquest-captcha"), apiBaseURL: "https://api.ad-quest.ru", // Правильный URL});// Добавьте в консоль браузераlocalStorage.setItem("adquest_debug", "true");
// Перезагрузите страницуlocation.reload();Вы увидите подробные логи в консоли:
[ADQuest] Initializing widget...[ADQuest] Site Key: YOUR_SITE_KEY[ADQuest] Mode: advertisement[ADQuest] Loading advertisement...[ADQuest] Token received: eyJ...// В консоли браузераconsole.log(ADQuest.getToken()); // Текущий токен или nullADQuest.init({ siteKey: "YOUR_SITE_KEY", container: document.getElementById("adquest-captcha"),
onLoad: () => { console.log("✓ Виджет загружен"); },
onSuccess: (token) => { console.log("✓ Токен получен:", token); },
onError: (error) => { console.error("✗ Ошибка:", error); },
onExpire: () => { console.warn("⚠ Токен истек"); },});Загружайте виджет только когда он нужен:
// Загрузка при клике на формуdocument.getElementById("loginForm").addEventListener( "focus", () => { if (!window.ADQuest) { const script = document.createElement("script"); script.src = "https://cdn.ad-quest.ru/widget/v1/adquest-widget.min.js"; script.async = true; document.body.appendChild(script); } }, { once: true },);Используйте <link rel="preload"> для ускорения загрузки:
<link rel="preload" href="https://cdn.ad-quest.ru/widget/v1/adquest-widget.min.js" as="script"/><link rel="preload" href="https://cdn.ad-quest.ru/widget/v1/adquest-widget.min.css" as="style"/>Добавьте в CSP:
<meta http-equiv="Content-Security-Policy" content=" script-src 'self' https://cdn.ad-quest.ru; connect-src 'self' https://api.ad-quest.ru; style-src 'self' https://cdn.ad-quest.ru; "/>Никогда не вставляйте токен в HTML:
// Неправильно - уязвимость XSSdocument.getElementById("token").innerHTML = token;
// Правильно - отправьте на серверfetch("/api/verify", { method: "POST", headers: { "Content-Type": "application/json" }, body: JSON.stringify({ token }),});| Действие | Лимит | Период |
|---|---|---|
| Инициализация виджета | 10 | 1 минута |
| Проверка токена | 100 | 1 минута |
| Получение рекламы | 50 | 1 минута |
При превышении лимита вы получите ошибку RATE_LIMIT_EXCEEDED.
Токены имеют размер ~500-1000 байт. Учитывайте это при передаче в URL или cookies.
| Браузер | Минимальная версия |
|---|---|
| Chrome | 90+ |
| Firefox | 88+ |
| Safari | 14+ |
| Edge | 90+ |
- Конфигурация - настройка виджета
- API Reference - полная документация API
- Примеры интеграции - готовые решения