/** * Антибот-защита мессенджер-ссылок v6 * Отправка целей через виртуальные страницы (hit) - максимально надёжный способ * Совместимость: Tilda + обычные сайты + IE11+ */ (function () { var COUNTER_ID = 105546778; var FALLBACK_TIMEOUT = 2000; var lastClickTimestamp = 0; // === Polyfills для старых браузеров === if (!Element.prototype.closest) { Element.prototype.closest = function(s) { var el = this; do { if (el.matches ? el.matches(s) : el.msMatchesSelector(s)) return el; el = el.parentElement || el.parentNode; } while (el !== null && el.nodeType === 1); return null; }; } (function injectCSS() { if (document.getElementById('antibot-slider-css')) return; var s = document.createElement('style'); s.id = 'antibot-slider-css'; s.textContent = '@keyframes ab-spin{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}@keyframes ab-fadeIn{0%{opacity:0;transform:scale(0.85)}100%{opacity:1;transform:scale(1)}}@keyframes ab-checkmark{0%{stroke-dashoffset:24}100%{stroke-dashoffset:0}}'; document.head.appendChild(s); })(); // === Отправка целей через виртуальные страницы (hit) === function sendHit(virtualUrl, title) { return new Promise(function(resolve) { var resolved = false; function done() { if (resolved) return; resolved = true; resolve(); } // Способ 1: ym() hit - рекомендуемый if (typeof ym === 'function') { try { ym(COUNTER_ID, 'hit', virtualUrl, { title: title || virtualUrl, callback: function() { done(); } }); return; } catch(e) { } } // Способ 2: yaCounter.hit() var counter = window['yaCounter' + COUNTER_ID]; if (counter && typeof counter.hit === 'function') { try { counter.hit(virtualUrl, { title: title || virtualUrl, callback: function() { done(); } }); return; } catch(e) {} } done(); }); } function sendAllHits(urls) { return new Promise(function(resolve) { var completed = 0; var total = urls.length; var resolved = false; function checkDone() { if (resolved) return; completed++; if (completed >= total) { resolved = true; resolve(); } } var fallback = setTimeout(function() { if (!resolved) { resolved = true; resolve(); } }, FALLBACK_TIMEOUT); urls.forEach(function(url) { sendHit(url).then(function() { checkDone(); if (resolved) clearTimeout(fallback); }); }); }); } var MIN_DRAG_TIME = 300; var MIN_POINTS = 5; var MAX_JUMP = 200; var MIN_DEVIATIONS = 1; var DEVIATION_THRESHOLD = 3; var messengerMap = { 'telegram': ['t.me', 'telegram.me', 'tg://'], 'whatsapp': ['wa.me', 'whatsapp.com', 'whatsapp://'], 'max': ['max.ru/'] }; function getMessengerName(url) { try { if (/^(tg|whatsapp):\/\//i.test(url)) { return /^tg:\/\//i.test(url) ? 'telegram' : 'whatsapp'; } var u = new URL(url, window.location.origin); var host = (u.hostname || '').toLowerCase(); var fullPath = host + u.pathname; for (var name in messengerMap) { var arr = messengerMap[name]; for (var i = 0; i < arr.length; i++) { if (host.indexOf(arr[i]) !== -1 || fullPath.indexOf(arr[i]) === 0 || url.indexOf(arr[i]) !== -1) return name; } } return null; } catch (e) { if (/^https?:\/\/(t\.me|telegram\.me)/i.test(url) || /^tg:\/\//i.test(url)) return 'telegram'; if (/^https?:\/\/(wa\.me|([a-z0-9-]+\.)*whatsapp\.com)/i.test(url) || /^whatsapp:\/\//i.test(url)) return 'whatsapp'; if (/^https?:\/\/max\.ru\//i.test(url)) return 'max'; return null; } } function validateTrajectory(moveData) { if (moveData.length < 2) return false; var maxJmp = 0, devs = 0; var fX = moveData[0].x, lX = moveData[moveData.length - 1].x; var dist = Math.abs(lX - fX); if (dist < 50) return true; for (var i = 1; i < moveData.length; i++) { var jmp = Math.abs(moveData[i].x - moveData[i - 1].x); if (jmp > maxJmp) maxJmp = jmp; var expX = fX + (lX - fX) * (i / (moveData.length - 1)); if (Math.abs(moveData[i].x - expX) > DEVIATION_THRESHOLD) devs++; } if (maxJmp > MAX_JUMP) return false; if (dist > 100 && devs < MIN_DEVIATIONS) return false; return true; } function getMessengerTitle(name) { if (name === 'telegram') return 'Telegram'; if (name === 'whatsapp') return 'WhatsApp'; if (name === 'max') return 'Max'; return 'мессенджер'; } function doRedirect(url, newTab) { if (newTab) { try { newTab.location.href = url; return; } catch(e) {} } var w = window.open(url, '_blank'); if (!w) window.location.href = url; } function showSliderOverlayAndGo(url, messengerName) { if (document.getElementById('pre-redirect-overlay')) return; var mTitle = getMessengerTitle(messengerName); var overlay = document.createElement('div'); overlay.id = 'pre-redirect-overlay'; overlay.style.cssText = 'position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.55);z-index:2147483647;display:flex;align-items:center;justify-content:center;cursor:pointer;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);padding:16px;box-sizing:border-box;'; var box = document.createElement('div'); box.id = 'redirect-box'; box.style.cssText = 'background:#fff;border-radius:20px;padding:32px 28px 28px;max-width:90%;width:360px;text-align:center;box-shadow:0 20px 60px rgba(0,0,0,0.3);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;position:relative;cursor:default;z-index:2147483647;animation:ab-fadeIn .25s ease;'; box.innerHTML = '
Материал: Бязь
Состав: 100% хлопок
Страна производства: Россия