Skip to content

Всё для WordPress, веб-разработки — и не только

🚫 Cloudflare email-decode.min.js: зачем отключать обфускацию email и как убрать скрипт за минуту

🚫 Cloudflare email-decode.min.js: зачем отключать обфускацию email и как убрать скрипт за минуту

Вы заходите в PageSpeed Insights, а там, render-blocking resource. Смотрите: email-decode.min.js, Cloudflare. «Опять этот скрипт тормозит сайт», думаете вы и идёте гуглить решение.

В апреле 2026 Cloudflare наконец починил проблему: добавил атрибут defer, и скрипт перестал блокировать рендеринг. Казалось бы, вопрос закрыт. Но нет. email-decode.min.js оставляет фантомные soft 404 в Google Search Console, а XOR-шифр, которым Cloudflare «защищает» адреса, расшифровывается за секунды. Ни безопасности, ни чистых отчётов.

На практике мы не раз сталкивались с этим скриптом при аудите сайтов: отключаешь за минуту, а бонусом получаешь чистую Search Console. Разбираем, как устроена обфускация, почему скрипт всё ещё мешает и как убрать его, с альтернативой, которая реально скрывает email от ботов.

💡 Быстрый обзор:

  • Понять, как работает Email Address Obfuscation в Cloudflare и зачем вообще нужен email-decode.min.js.
  • Разобраться в трёх причинах отключить обфускацию после апрельского исправления 2026 года.
  • Отключить скрипт пошагово: дашборд, API, Configuration Rules.
  • Внедрить альтернативу на IntersectionObserver и base64, без внешнего скрипта и soft 404.

Как Cloudflare прячет email

Когда сайт проходит через Cloudflare, сервис по умолчанию включает Email Address Obfuscation. Cloudflare сканирует HTML страниц, находит всё похожее на email и заменяет каждый адрес на XOR-закодированную hex-строку. Для расшифровки в браузер посетителя внедряется email-decode.min.js.

Предупреждение PageSpeed Insights о скрипте email-decode.min.js

Идея разумная: боты не видят адреса, люди видят. На практике всё сложнее. До апреля 2026 скрипт откровенно вредил скорости, а сама защита оказалась слабее, чем обещает Cloudflare.

Три причины отключить email-decode.min.js

Апрельское исправление убрало render-blocking. Но три проблемы остались. И они серьёзнее потерянных миллисекунд.

Soft 404 в Search Console

Cloudflare заменяет email-адреса на ссылки вида /cdn-cgi/l/email-protection#[hex]. Для Googlebot и других поисковых роботов эти URL возвращают 404. Результат: ошибки «Soft 404» в Google Search Console. Ahrefs и Screaming Frog помечают их как битые внутренние ссылки.

Это не косметика. Десятки фантомных ошибок Cloudflare маскируют реальные проблемы с индексацией. При техническом аудите вы тратите время на фильтрацию шума вместо поиска настоящих битых страниц.

XOR-шифр не защищает

Cloudflare использует однобайтовый XOR, где ключ встроен прямо в закодированную строку. Механизм расшифровки одинаков для всех сайтов под Cloudflare. Спамеру нужен один декодер, и он извлечёт адреса с любого сайта за секунды.

Исследование Spencer Mortensen (2026) проверило 25 методов обфускации против 300+ спам-сборщиков на honeypot-адресах. Даже примитивный CSS display:none показал 100% блокировку. Обфускация Cloudflare защищает только от ботов, которые не умеют декодировать XOR, а такие и без неё адреса не соберут.

Нагрузка основного потока на мобильных

1,2 КБ JavaScript с defer не критичны для десктопа. Но на бюджетном Android с загруженным CPU каждый маленький main-thread-таск отъедает бюджет INP. Если вы боретесь за последние 50 мс, этот скрипт лишний.

Отключаем обфускацию: пошаговая инструкция

Отключение занимает минуту. Выберите путь под версию вашего дашборда.

Новый дашборд (Security Settings)

  • Войдите в дашборд Cloudflare.
  • Перейдите в Security → Settings.
  • Найдите переключатель Email Address Obfuscation.
  • Переведите в положение Off.

Старый дашборд (Scrape Shield)

Если интерфейс аккаунта ещё не обновлён:

  • Войдите в дашборд Cloudflare.
  • Откройте раздел Scrape Shield.
  • Найдите Email Address Obfuscation и переключите на Off.
Отключение обфускации email в разделе Scrape Shield дашборда Cloudflare

Скрипт исчезает мгновенно. email-decode.min.js перестаёт внедряться на всех страницах зоны.

Через API

Для автоматизации или массового управления, PATCH-запрос к Cloudflare API:

1curl -X PATCH "https://api.cloudflare.com/client/v4/zones/<ZONE_ID>/settings/email_obfuscation" \
2 -H "Authorization: Bearer <API_TOKEN>" \
3 -H "Content-Type: application/json" \
4 --data '{"value":"off"}'

Подставьте свой Zone ID и API-токен с разрешением на редактирование настроек зоны.

Точечное отключение через Configuration Rules

Нужна обфускация на странице контактов, но не на посадочных? Используйте Configuration Rules:

  • Перейдите в Rules → Configuration Rules.
  • Создайте правило с критериями: хостнейм, путь URL или оба.
  • Добавьте настройку Email Obfuscation и установите Off.
  • Примените.

Можно исключить и отдельные адреса в HTML, обернув их в комментарии:

1<!--email_off-->[email protected]<!--/email_off-->

Альтернатива без Cloudflare: IntersectionObserver и base64

Если скрывать email от ботов действительно нужно, есть способ лучше. Без внешнего скрипта, без soft 404 и без влияния на INP. Подход: base64-кодирование адреса и расшифровка через IntersectionObserver, только когда посетитель доскроллил до блока с email.

Шаг 1. Разметка в HTML:

1<a class="email-hidden" href="#" data-email="aW5mb0BleGFtcGxlLmNvbQ==">
2 [email скрыт]
3</a>

Атрибут data-email содержит адрес в base64. Кодируйте строку онлайн-инструментом или командой echo -n "[email protected]" | base64.

Шаг 2. Наблюдатель. Разместите скрипт в футере страницы:

1const emailTag = document.querySelector('.email-hidden');
2let observer = new IntersectionObserver((entries) => {
3 entries.map((entry) => {
4 if (entry.isIntersecting) {
5 let script = document.createElement('script');
6 script.onload = function () {
7 emailDecode(entry.target);
8 };
9 script.src = '/decode-email.js';
10 document.head.appendChild(script);
11 }
12 });
13});
14observer.observe(emailTag);

Шаг 3. Функция расшифровки, файл decode-email.js:

1const emailDecode = (e) => {
2 let email = atob(e.dataset.email);
3 e.href = 'mailto:' + email;
4 e.innerHTML = email;
5};

Результат: email декодируется только при скролле до него. Ноль влияния на INP, ноль ошибок soft 404. А base64 не уступает XOR от Cloudflare в качестве «защиты», оба метода тривиально обратимы, но в паре с IntersectionObserver адрес даже не попадает в DOM при загрузке страницы.

Видеоинструкция

Если предпочитаете визуальное руководство, наглядная демонстрация отключения обфускации в дашборде Cloudflare:

⁉️🤔 Частые вопросы

Обфускация Cloudflare влияет на все страницы сайта?

Да, после добавления сайта в Cloudflare Email Address Obfuscation включается для всей зоны. Скрипт email-decode.min.js внедряется на каждую страницу, где обнаружен текст, похожий на email. Исключить отдельные страницы можно через Configuration Rules, а конкретные адреса, через HTML-комментарии <!--email_off-->.

Что случится, если просто отключить обфускацию?

email-decode.min.js перестанет внедряться мгновенно. Все email-адреса на сайте станут видны в исходном коде, ровно так, как вы их разместили. Для большинства сайтов это нормальный режим: контактный email и так публичен, а прятать его от ботов можно более простыми методами.

Защищает ли обфускация Cloudflare от всех спам-ботов?

Нет. XOR-шифр одинаков для всех сайтов, расшифровать адреса может любой. Данные Spencer Mortensen показывают: даже CSS display:none блокирует 100% из 300+ протестированных спам-сборщиков. Обфускация Cloudflare срабатывает только против примитивных ботов, которые не пытаются декодировать XOR.

Можно ли скрыть скрипт только от PageSpeed Insights?

Нет, PageSpeed Insights проверяет страницу как обычный браузер. Если скрипт внедрён, Lighthouse его увидит. С апрельским исправлением 2026 render-blocking больше нет, но остаются SEO-эффекты (soft 404) и микро-влияние на INP. Единственный способ убрать скрипт полностью, отключить Email Address Obfuscation в дашборде.

Как убедиться, что обфускация действительно отключена?

Откройте исходный код страницы (Ctrl+U) и поищите email-decode.min.js. Нет скрипта, обфускация отключена. Альтернативно проверьте консоль браузера: до отключения в DOM есть <script src="/cdn-cgi/scripts/.../email-decode.min.js">, после, нет. Изменения применяются мгновенно.

Отключать или оставить: вердикт

С апрельским исправлением email-decode.min.js перестал блокировать рендеринг. Но SEO-шум (soft 404 в Search Console) и иллюзия безопасности (XOR обратим за секунды) никуда не делись. Отключение через дашборд занимает минуту. Бонус: чистые отчёты и пара сэкономленных миллисекунд INP на мобильных.

Если обфускация действительно нужна, альтернатива с IntersectionObserver и base64 даёт реальную защиту от спам-сборщиков. Без побочных эффектов. Выбор за вами, но email-decode.min.js в 2026 году, скорее привычка, чем необходимость.