// Shadow root в режиме open — доступен через element.shadowRoot
// Shadow root в режиме closed — element.shadowRoot === null.
// Нарисованная на canvas кнопка. Каждый раз в случайном месте.
// В iframe живёт отдельный document. В ZP: GetDocumentByAddress("1") — первый iframe.
// Элементы появляются после действий или с задержкой.
Обычный жирный курсив подчёркнутый зачёркнутый inline code ZP
Это blockquote — цитата.
var doc = instance.ActiveTab.MainDocument;
var el = doc.FindElementById("input-text");// Требует браузерного расширения-кошелька. Попап подтверждения — отдельное окно расширения.
// Сайты рисуют текст и фигуры на скрытом canvas, считывают пиксели через getImageData() и хэшируют результат.
// Рендеринг отличается у разных GPU, ОС, версий браузера и драйверов — это уникальный отпечаток.
// Используется в: Cloudflare, PerimeterX, Akamai, FingerprintJS, DataDome и других anti-bot системах.
// Каждая проверка ниже — это реальная техника детекции. Запускай и смотри что видит сайт о твоём браузере.
1x00000000000000000000AA — тестовый от Cloudflare.// Все техники ниже реально работают в браузере. Открой DevTools и наблюдай за реакцией страницы.
outerWidth - innerWidth > 100 outerHeight - innerHeight > 100
t0 = performance.now() console.log(obj) × 100 t1 = performance.now() if (t1 - t0 > threshold) → devtools open
debugger; останавливает выполнение только если DevTools открыты.t0 = Date.now() debugger; t1 = Date.now() if (t1 - t0 > 10) → devtools open
toString() на объектах при их отображении.const x = {
get toString() {
devToolsDetected = true
return () => 'object'
}
}
console.log(x) // → срабатывает getter