<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no"> <script> (function() { // ======== CONFIGURATION ======== // const config = { colors: { primary: "#6C5CE7", // Ungu modern secondary: "#00CEFF", // Biru elektrik background: "#FFFFFF", // Putih bersih text: "#2D3436", // Abu-abu gelap error: "#FF5252", // Merah soft success: "#00B894", // Hijau mint overlay: "rgba(245, 245, 245, 0.96)" }, shadows: { card: "0 15px 50px -10px rgba(0, 0, 0, 0.15)", button: "0 8px 25px -8px rgba(108, 92, 231, 0.4)" }, animations: { duration: "0.5s", easing: "cubic-bezier(0.25, 1, 0.5, 1)" }, // Konfigurasi Deteksi baitClassName: "adblock-test-element-xyz", // Class untuk deteksi filter kosmetik adDetectionUrl: "https://acceptable.a-ads.com/2407680" // URL yang PASTI diblokir }; let adBlockDetected = false; // ======== PREMIUM OVERLAY FUNCTION ======== // function createPremiumOverlay() { // Pastikan overlay hanya dibuat sekali if (adBlockDetected === true && document.getElementById('adblock-overlay')) return; adBlockDetected = true; // Blokir scroll document.body.style.overflow = 'hidden'; // Buat overlay container const overlay = document.createElement('div'); overlay.id = 'adblock-overlay'; // ... (CSS dan HTML overlay Anda) ... // [Kode Overlay CSS dan HTML Anda tetap sama di sini] overlay.style.cssText = ` position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: ${config.colors.overlay}; z-index: 999999; display: flex; justify-content: center; align-items: center; font-family: 'Poppins', -apple-system, sans-serif; backdrop-filter: blur(12px); opacity: 0; animation: fadeIn ${config.animations.duration} ${config.animations.easing} forwards; `; overlay.innerHTML = ` <div class="adblock-card" style=" background: ${config.colors.background}; border-radius: 20px; padding: 40px; width: 100%; max-width: 500px; text-align: center; box-shadow: ${config.shadows.card}; transform: translateY(30px); opacity: 0; animation: slideUp ${config.animations.duration} ${config.animations.easing} 0.2s forwards; "> <div class="adblock-icon" style="width: 100px; height: 100px; margin: 0 auto 25px; position: relative;"> <svg viewBox="0 0 24 24" style="width: 100%; height: 100%; opacity: 0; transform: scale(0.8); animation: iconAppear 0.6s ${config.animations.easing} 0.4s forwards;"> <path fill="${config.colors.error}" d="M12,2C6.5,2,2,6.5,2,12s4.5,10,10,10s10-4.5,10-10S17.5,2,12,2z M16.2,16.2l-1.4,1.4L12,13.4l-2.8,2.8l-1.4-1.4 l2.8-2.8L7.8,8.6l1.4-1.4l2.8,2.8l2.8-2.8l1.4,1.4L13.4,12L16.2,16.2z"/> </svg> <div style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 2px dashed ${config.colors.error}; border-radius: 50%; animation: pulse 2s infinite;"></div> </div> <h2 style="color: ${config.colors.text}; font-size: 28px; font-weight: 700; margin-bottom: 15px;">AdBlock Detected</h2> <p style="color: ${config.colors.text}; opacity: 0.8; line-height: 1.6; margin-bottom: 30px; font-size: 16px;">We understand that ads can be intrusive, but they help us keep this site running and provide quality content for free. Please consider disabling your AdBlock for our site. Thank only for your support!</p> <div style="background: rgba(108, 92, 231, 0.05); border-radius: 12px; padding: 20px; margin-bottom: 30px; text-align: left; border: 1px solid rgba(108, 92, 231, 0.1);"> <div style="display: flex; margin-bottom: 15px;"> <div style="min-width: 28px; height: 28px; background: ${config.colors.primary}; color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-right: 12px; font-weight: bold; font-size: 14px;">1</div> <p style="margin: 0; color: ${config.colors.text};">Disable your **AdBlock Extension** (e.g., uBlock, AdBlock Plus) AND ensure DNS filtering (AdGuard/NextDNS) is off.</p> </div> <div style="display: flex;"> <div style="min-width: 28px; height: 28px; background: ${config.colors.primary}; color: white; border-radius: 50%; display: flex; align-items: center; justify-content: center; margin-right: 12px; font-weight: bold; font-size: 14px;">2</div> <p style="margin: 0; color: ${config.colors.text};">Click the button below to refresh the page.</p> </div> </div> <button id="adblock-refresh-btn" style="background: ${config.colors.primary}; color: white; border: none; padding: 16px 32px; border-radius: 12px; font-size: 16px; font-weight: 600; cursor: pointer; transition: all 0.3s ease; box-shadow: ${config.shadows.button}; width: 100%; position: relative; overflow: hidden;"> <span style="position: relative; z-index: 2;">I have disabled it – Refresh now.</span> <span style="position: absolute; top: 0; left: 0; width: 100%; height: 100%; background: linear-gradient(90deg, ${config.colors.primary}, ${config.colors.secondary}); z-index: 1; opacity: 0; transition: opacity 0.3s ease;"></span> </button> </div> <style> @keyframes fadeIn { to { opacity: 1; } } @keyframes slideUp { to { transform: translateY(0); opacity: 1; } } @keyframes iconAppear { to { opacity: 1; transform: scale(1); } } @keyframes pulse { 0% { transform: scale(0.95); opacity: 0.6; } 50% { transform: scale(1.05); opacity: 0.9; } 100% { transform: scale(0.95); opacity: 0.6; } } #adblock-refresh-btn:hover { transform: translateY(-3px); } #adblock-refresh-btn:hover span:last-child { opacity: 1; } .adblock-card { will-change: transform, opacity; } </style> `; document.body.appendChild(overlay); document.getElementById('adblock-refresh-btn').addEventListener('click', () => { overlay.style.animation = `fadeIn ${config.animations.duration} ${config.animations.easing} reverse forwards`; document.querySelector('.adblock-card').style.animation = `slideUp ${config.animations.duration} ${config.animations.easing} reverse forwards`; setTimeout(() => { document.body.style.overflow = ''; location.reload(); }, 500); }); } // ======== ADBLOCK DETECTION LOGIC (FINAL REVISION) ======== // function detectAdBlock() { // 1. Deteksi Jaringan/URL (untuk AdGuard DNS, Pi-hole, atau Ekstensi yang memblokir URL) // Gunakan fetch() daripada <script onerror> untuk handling error yang lebih andal fetch(config.adDetectionUrl, { method: 'HEAD', mode: 'no-cors', cache: 'no-store' }) .then(response => { // Jika respons berhasil (walaupun status 0 karena 'no-cors'), ini OK, lewati deteksi ini. // Catatan: Response 0 status biasanya terjadi pada mode 'no-cors' yang berhasil. }) .catch(error => { // Jika fetch GAGAL (karena diblokir oleh DNS atau ekstensi) if (!adBlockDetected) { createPremiumOverlay(); } }); // 2. Deteksi Kosmetik (untuk Ekstensi AdBlock yang menyembunyikan elemen) const bait = document.createElement('div'); // Ulangi class yang sama, tapi hanya cek gaya bait.className = config.baitClassName; bait.style.cssText = 'width:1px;height:1px;position:absolute;left:-9999px;'; document.body.appendChild(bait); setTimeout(() => { // Pastikan bait masih ada if (document.body.contains(bait)) { const cs = window.getComputedStyle(bait); // Kriteria AdBlock: disembunyikan if (cs.display === 'none' || cs.visibility === 'hidden' || bait.offsetHeight === 0 || bait.offsetWidth === 0) { if (!adBlockDetected) { createPremiumOverlay(); } } } // Bersihkan bait bait.remove(); }, 300); // Tunda sebentar untuk memberi waktu AdBlock memproses DOM } // Jalankan setelah DOM siap if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', detectAdBlock); } else { detectAdBlock(); } })(); </script> <script>(function(s){s.dataset.zone='9178244',s.src='https://gizokraijaw.net/vignette.min.js'})([document.documentElement, document.body].filter(Boolean).pop().appendChild(document.createElement('script')))</script>
Please wait...
×
Welcome back! You left off at hh:mm:ss. Would you like to resume watching?