Cloudflare a corrigé son script d'offuscation d'e-mail (j'en suis peut-être la cause)
Le script d'offuscation d'e-mail de Cloudflare bloquait auparavant le rendu. Un PM chez Cloudflare a lu cet article et a déployé le correctif. Les problèmes de SEO et de sécurité valent toujours la peine d'être évités.

Qu'est-ce que l'offuscation d'e-mail de Cloudflare ?
L'offuscation d'adresse e-mail de Cloudflare (Email Address Obfuscation) est une fonctionnalité de Scrape Shield qui cache les adresses e-mail sur vos pages aux collecteurs d'e-mails et aux bots, tout en les gardant 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
Table of Contents!
- Qu'est-ce que l'offuscation d'e-mail de Cloudflare ?
- Comment l'offuscation d'e-mail de Cloudflare affectait auparavant les Core Web Vitals
- L'offuscation d'e-mail de Cloudflare est-elle seulement sécurisée ?
- Devriez-vous toujours le désactiver ?
- Si vous avez besoin d'offuscation : faites-le vous-même
- Vérifier les résultats
Mise à jour d'avril 2026 : Cloudflare l'a corrigé. Un Product Manager de Cloudflare m'a envoyé un message 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.

Defer est un changement d'une seule ligne. La raison pour laquelle il n'y était pas en premier lieu était probablement que Cloudflare voulait confirmer que cela ne casserait pas les sites qui dépendent du décodage des adresses avant DOMContentLoaded. Quelqu'un dans l'équipe a fait le travail. Rendons à César ce qui est à César.
Son fonctionnement est simple. Le proxy de périphérie 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 appelé 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 supprime lui-même du DOM après exécution.
Jusqu'à récemment, ce script n'était pas chargé avec async ou defer. Il bloquait le rendu. Et il le faisait pour une fonctionnalité que la plupart des visiteurs ne remarqueront ou dont ils n'auront jamais besoin. C'est la situation que cet article décrivait à l'origine, et la raison pour laquelle Cloudflare l'a corrigé.

Comment l'offuscation d'e-mail de Cloudflare affectait auparavant les Core Web Vitals

Avant le correctif defer, le script email-decode.min.js était injecté comme une ressource bloquant le rendu. Le navigateur devait le télécharger, l'analyser et l'exécuter avant de pouvoir continuer à rendre la page. Cela avait trois conséquences :
1. Il entrait en compétition pour la bande passante du réseau pendant la fenêtre de rendu critique, retardant le Largest Contentful Paint.
2. Il bloquait le thread principal, ce qui pouvait pousser l'Interaction to Next Paint dans le territoire "needs improvement" (nécessite une amélioration).
3. Il déclenchait jusqu'à cinq avertissements d'audit Lighthouse : eliminate render-blocking resources, avoid long main-thread tasks, reduce JavaScript execution time, avoid chaining critical requests, et serve static assets with an efficient cache policy.
Avec defer désormais en place, le script se télécharge en parallèle de l'analyse HTML et s'exécute après que le document est analysé. L'avertissement de blocage du rendu a disparu.
Ce qu'il reste après le correctif
Le thread principal doit toujours analyser et exécuter 1,2 Ko de JavaScript. Sur un ordinateur de bureau, ce n'est rien. Sur un téléphone Android d'entrée de gamme avec un CPU occupé, chaque petite tâche du thread principal grignote votre budget INP. Si vous vous battez déjà pour les 50 dernières ms de marge INP, ce script est une chose de plus dans la file d'attente.
Les problèmes les plus importants, ceux que Cloudflare n'a pas corrigés, sont ci-dessous.
Effets secondaires sur le SEO
Cloudflare remplace les adresses e-mail par des liens qui pointent vers /cdn-cgi/l/email-protection#[hex]. Ces URL renvoient une erreur 404 aux robots d'exploration, y compris Googlebot. Le résultat : des erreurs "Soft 404" dans la Google Search Console. Les outils d'audit SEO comme Ahrefs et Screaming Frog les signalent comme des liens internes brisés, créant du bruit qui masque les vrais problèmes d'exploration. Si vous utilisez Cloudflare avec l'offuscation d'e-mail activée, vérifiez votre rapport de couverture de la Search Console pour ces erreurs fantômes.
L'offuscation d'e-mail de Cloudflare est-elle seulement sécurisée ?
Pas vraiment. Cloudflare utilise un chiffrement XOR à un seul octet où la clé est intégrée dans la chaîne encodée elle-même. Chaque site protégé par Cloudflare utilise 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 tous ces sites.
Des chercheurs en sécurité ont démontré que l'encodage est trivialement réversible. L'étude sur l'offuscation de 2026 de Spencer Mortensen a testé 25 méthodes différentes contre plus de 300 spammeurs distincts en utilisant des adresses e-mail pot de miel (honeypot). Même une simple technique CSS display:none a atteint un taux de blocage de 100 % contre les collecteurs. Vous n'avez pas besoin d'un JavaScript différé pour cacher une adresse e-mail aux bots.
Devriez-vous toujours le désactiver ?
Si vous n'avez pas besoin de l'offuscation d'e-mail (et la plupart des sites n'en ont pas besoin), la désactiver élimine les erreurs d'exploration soft 404 et les dernières millisecondes de travail du thread principal. Voici comment faire :
1. Connectez-vous à votre tableau de bord Cloudflare.
2. Allez dans Security > Settings (ou Scrape Shield sur les anciennes dispositions de 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 Cloudflare, voir la meilleure configuration Cloudflare pour réussir les Core Web Vitals.
Désactiver par page avec les règles de configuration (Configuration Rules)
Si vous souhaitez une offuscation d'e-mail sur votre page de contact mais pas sur les pages de destination à fort trafic, utilisez une règle de configuration (Configuration Rule) :
1. Allez dans Rules > Configuration Rules.
2. Créez une nouvelle règle, nommez-la (par ex. "Disable email obfuscation on landing pages").
3. Définissez les critères de correspondance (nom d'hôte, chemin de l'URL, ou les deux).
4. Ajoutez le paramètre Email Obfuscation et réglez-le sur Off.
5. Déployez.
Vous pouvez également exempter des adresses e-mail individuelles dans votre HTML en les enveloppant dans des commentaires : <!--email_off-->email@example.com<!--/email_off-->
Si vous avez besoin d'offuscation : faites-le vous-même
Si vous voulez vraiment cacher les adresses e-mail aux bots, il existe de bien meilleures façons qui n'impliquent pas d'envoyer de script avant que l'utilisateur n'ait exprimé un intérêt. La meilleure approche : attachez un IntersectionObserver et décodez l'e-mail juste-à-temps lorsqu'il défile dans la vue. C'est le même modèle defer until needed que j'utilise pour tout, des intégrations YouTube à Google Maps.
Créer l'e-mail offusqué
<a
class="email-hidden"
href="#"
data-email="aW5mb0BleGFtcGxlLmNvbQ==">
[email-hidden]
</a> Attachez l'IntersectionObserver. Placez ce morceau de JavaScript au bas de la 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>
Téléchargez le script de décodage d'e-mail decode-email.js et remplacez la fonction de décodage d'e-mail par une bibliothèque de décodage 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 est décodé uniquement lorsque le visiteur le fait défiler dans la vue. 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 avec de vrais visiteurs, configurez le Real User Monitoring. Les scores Lighthouse sont utiles pour le débogage, mais les données de terrain (field data) provenant d'utilisateurs réels sont ce que Google utilise pour le classement.
Votre score Lighthouse ne dit pas tout.
Vos vrais utilisateurs sont sur Android en 4G. Moi, j'analyse ce qu'ils vivent réellement.
Analyser les données terrain
