1(function () { 2 3 function checkSiteKeyInFrames(siteKey) { 4 const frames = document.querySelectorAll('iframe[title="reCAPTCHA"]'); 5 6 frames.forEach((frame) => { 7 const src = frame.getAttribute('src') || ''; 8 if (src.includes(siteKey)) { 9 console.log('[reCAPTCHA] match trovato nel frame:', src); 10 } 11 }); 12 } 13 14 function handleButton(button) { 15 if (!button) return; 16 17 const siteKey = button.getAttribute('data-grecaptcha-site-key'); 18 if (!siteKey) return; 19 20 console.log('[reCAPTCHA] button trovato:', button); 21 console.log('[reCAPTCHA] siteKey:', siteKey); 22 23 document.documentElement.classList.add('grecaptcha-badge-visible'); 24 25 checkSiteKeyInFrames(siteKey); 26 } 27 28 function initObserver() { 29 const observer = new MutationObserver(() => { 30 const button = document.querySelector('button[data-grecaptcha-site-key]'); 31 32 if (button) { 33 handleButton(button); 34 observer.disconnect(); 35 } 36 }); 37 38 observer.observe(document.documentElement, { 39 childList: true, 40 subtree: true 41 }); 42 } 43 44 function init() { 45 const existing = document.querySelector('button[data-grecaptcha-site-key]'); 46 47 if (existing) { 48 handleButton(existing); 49 } else { 50 initObserver(); 51 } 52 } 53 54 // Avvio sicuro 55 if (document.readyState === 'loading') { 56 document.addEventListener('DOMContentLoaded', init); 57 } else { 58 init(); 59 } 60 61})();
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.