Cloudflare a corrigé son script d'obfuscation d'e-mail (j'y suis peut-être pour quelque chose)
Le script d'obfuscation d'e-mail de Cloudflare bloquait le rendu. Un PM de Cloudflare a lu cet article et a déployé le fix. Les problèmes SEO et de sécurité méritent toujours d'être évités.
Qu'est-ce que l'obfuscation d'e-mail de Cloudflare ?
L'obfuscation d'adresses e-mail de Cloudflare est une fonctionnalité de Scrape Shield qui masque les adresses e-mail de vos pages aux robots et aux collecteurs d'adresses, tout en les laissant visibles pour les visiteurs humains. Elle est activée par défaut sur chaque zone Cloudflare.
Dernière révision par Arjen Karel en avril 2026
Mise à jour avril 2026 : Cloudflare a corrigé le tir. Un Product Manager de Cloudflare m'a contacté sur LinkedIn. Il a lu cet article et a ajouté l'attribut defer à email-decode.min.js. La documentation officielle de Cloudflare le confirme désormais : le script ne bloque plus le rendu.

Ajouter defer ne prend qu'une seule ligne. S'il n'était pas là dès le départ, c'est probablement parce que Cloudflare voulait s'assurer de ne pas casser les sites qui dépendent du décodage des adresses avant DOMContentLoaded. Quelqu'un dans l'équipe a fait le travail. Il faut le reconnaître.
Le fonctionnement est simple. Le proxy edge de Cloudflare analyse votre HTML à la recherche de tout ce qui ressemble à une adresse e-mail. Il remplace chaque adresse par une chaîne hexadécimale encodée en XOR et injecte un petit script nommé email-decode.min.js pour décoder les adresses dans le navigateur. Le script pèse environ 1,2 Ko, se charge désormais avec defer et se retire du DOM après son exécution.
Jusqu'à récemment, ce script ne se chargeait ni avec async ni avec defer. Il bloquait le rendu. Tout cela pour une fonctionnalité que la plupart des visiteurs ne remarqueront jamais et dont ils n'ont aucun besoin. C'est la situation que décrivait cet article à l'origine, et la raison pour laquelle Cloudflare a corrigé le tir.

Comment l'obfuscation d'e-mail Cloudflare affectait les Core Web Vitals

Avant l'ajout de defer, le script email-decode.min.js était injecté comme une ressource render blocking. Le navigateur devait le télécharger, le parser et l'exécuter avant de pouvoir poursuivre le rendu de la page. Cela avait trois conséquences :
1. Il entrait en concurrence pour la bande passante réseau pendant la fenêtre critique de rendu, retardant le Largest Contentful Paint.
2. Il bloquait le main thread, ce qui pouvait faire basculer l'Interaction to Next Paint dans la zone « à améliorer ».
3. Il déclenchait jusqu'à cinq avertissements d'audit Lighthouse : éliminer les ressources render blocking, éviter les long tasks sur le main thread, réduire le temps d'exécution JavaScript, éviter le chaînage des requêtes critiques et servir des ressources statiques avec une politique de cache efficace.
Avec defer en place, le script se télécharge désormais en parallèle du parsing HTML et s'exécute après le parsing du document. L'avertissement render blocking a disparu.
Ce qui reste après le fix
Le main thread doit toujours parser et exécuter 1,2 Ko de JavaScript. Sur un ordinateur, ce n'est rien. Sur un téléphone Android d'entrée de gamme au CPU saturé, chaque petite tâche sur le main thread grignote le budget INP. Si vous vous battez déjà pour conserver les 50 dernières ms de marge sur l'INP, ce script reste un élément de plus dans la file d'attente.
Les problèmes les plus importants, ceux que Cloudflare n'a pas corrigés, sont détaillés ci-dessous.
Effets de bord SEO
Cloudflare remplace les adresses e-mail par des liens qui pointent vers /cdn-cgi/l/email-protection#[hex]. Ces URL renvoient un code 404 aux crawlers, y compris à Googlebot. Résultat : des erreurs « Soft 404 » dans Google Search Console. Les outils d'audit SEO comme Ahrefs et Screaming Frog les signalent comme des liens internes brisés, créant un bruit qui masque les vrais problèmes de crawl. Si vous utilisez Cloudflare avec l'obfuscation d'e-mail activée, vérifiez le rapport de couverture de la Search Console pour repérer ces erreurs fantômes.
L'obfuscation d'e-mail Cloudflare est-elle vraiment sécurisée ?
Pas vraiment. Cloudflare utilise un chiffrement XOR sur un seul octet, dont la clé est directement intégrée dans la chaîne encodée. Tous les sites protégés par Cloudflare utilisent le même mécanisme de décodage. Un spammeur n'a besoin d'implémenter qu'un seul décodeur pour extraire les adresses e-mail de l'ensemble d'entre eux.
Des chercheurs en sécurité ont démontré que cet encodage est facilement réversible. L'étude de Spencer Mortensen sur l'obfuscation publiée en 2026 a testé 25 méthodes différentes face à plus de 300 spammeurs distincts via des adresses e-mail pièges. Même une simple technique CSS en display:none a obtenu un taux de blocage de 100 % contre les collecteurs. Vous n'avez pas besoin d'un JavaScript différé pour masquer une adresse e-mail aux bots.
Faut-il quand même la désactiver ?
Si vous n'avez pas besoin d'obfuscation d'e-mail (et la plupart des sites n'en ont pas besoin), la désactiver supprime les erreurs de crawl soft 404 et les dernières millisecondes de travail sur le main thread. Voici comment faire :
1. Connectez-vous au tableau de bord Cloudflare.
2. Allez dans Security > Settings (ou Scrape Shield sur les anciennes versions du tableau de bord).
3. Basculez Email Address Obfuscation sur OFF.
C'est tout. Le script disparaît immédiatement. Pour une configuration complète des performances sur Cloudflare, consultez la meilleure configuration Cloudflare pour valider les Core Web Vitals.
Désactiver par page avec les Configuration Rules
Si vous souhaitez conserver l'obfuscation d'e-mail sur votre page de contact mais pas sur les landing pages à fort trafic, utilisez une Configuration Rule :
1. Allez dans Rules > Configuration Rules.
2. Créez une nouvelle règle et nommez-la (par exemple « Disable email obfuscation on landing pages »).
3. Définissez les critères de correspondance (hostname, chemin d'URL ou les deux).
4. Ajoutez le paramètre Email Obfuscation et réglez-le sur Off.
5. Déployez.
Vous pouvez également exclure des adresses e-mail spécifiques dans votre HTML en les entourant de commentaires : <!--email_off-->email@example.com<!--/email_off-->
Si vous avez besoin d'obfuscation : faites-le vous-même
Si vous devez vraiment masquer des adresses e-mail aux bots, il existe de bien meilleures méthodes qui n'impliquent d'envoyer aucun script avant que l'utilisateur n'ait manifesté son intérêt. La meilleure approche : attacher un IntersectionObserver et décoder l'e-mail au dernier moment, dès qu'il défile dans le viewport. C'est le même pattern de chargement différé au besoin que j'utilise pour tout, des intégrations YouTube à Google Maps.
Créer l'e-mail obfusqué
<a
class="email-hidden"
href="#"
data-email="aW5mb0BleGFtcGxlLmNvbQ==">
[email-hidden]
</a> Attachez l'IntersectionObserver. Placez ce bloc de JavaScript en bas de page.
<script>
const emailtag = document.querySelector('.email-hidden');
let observer = new IntersectionObserver((entries) => {
entries.map((entry) => {
if (entry.isIntersecting) {
let script = document.createElement('script');
script.onload = function () {
emaildecode(entry.target)
};
script.src = 'decode-email.js';
document.head.appendChild(script);
}
});
}).observe(emailtag);
</script>
Uploadez le script decode-email.js et remplacez la fonction de décodage par la bibliothèque de votre choix.
const emaildecode = (e) => {
let email = atob(e.dataset.email);
e.href = 'mailto:'+email;
e.innerHTML = email;
}
Vérifier les résultats
<a href="mailto:info@example.com">info@example.com</a> L'e-mail n'est décodé que lorsque le visiteur le fait défiler dans le viewport. Zéro impact sur l'INP, aucune erreur soft 404 pour Googlebot, et l'encodage base64 n'est pas moins sécurisé que le chiffrement XOR de Cloudflare. Pour vérifier l'amélioration auprès de vrais visiteurs, mettez en place un Real User Monitoring. Les scores Lighthouse sont utiles pour le débogage, mais Google utilise les field data de vrais utilisateurs pour le classement.

Besoin d'un site plus rapide ?
Je suis Arjen et je répare des sites lents depuis 17 ans. Si vous rencontrez des problèmes que vous ne pouvez pas résoudre vous-même, envoyez-moi votre URL et parlons-en.
Envoyez-moi votre URL
Pourquoi notre fix ne fonctionne pas ?
Parfois le CDN sert encore l'ancien HTML, ou le fix a été appliqué sur le template desktop alors que le mobile en utilise un autre. Envoyez-moi votre URL et le problème, et je vous réponds avec quelques créneaux. J'analyse d'abord vos field data, puis nous passons une heure sur votre site, et sous 24 heures vous avez mes notes par écrit. 350 € HT.
Envoyez-moi votre URLPas de développeur pour réaliser le fix ? Je fais le travail moi-même, sur une copie de votre site.