Symptômes · 8 min · publié le 14 août 2024 · mis à jour le 17 juillet 2025

Des publicités que vous n'avez pas posées s'affichent sur le site

Des encarts casino, des popunders, un bandeau que vous n'avez pas vendu : un script pub injecté monétise votre trafic. Ce n'est pas AdSense « mal réglé ». On cherche un JS tiers, une option en base, un plugin « optimisation » inconnu — pas un énième compte Google Ads.

Réponse directe

Un script pub injecté monétise votre trafic. Ce n'est pas AdSense mal réglé. Cherchez un JS tiers, une option en base, un plugin « optimisation » inconnu.

pubs pirates site publicités injectées wordpress ads malware

Ce que vous voyez n'est pas un mauvais placement AdSense

AdSense a un publisher ID que vous reconnaissez (`ca-pub-`). Les pubs pirates sortent d'autres réseaux, de domaines `redirect`, de `eval` JS. Vous n'avez pas de contrat, pas de paiement, parfois un overlay qui recouvre le site.

Un compte Ads piraté, c'est un autre dossier (accès Google). Ici, le site lui-même pousse le script. Les deux peuvent coexister. Vérifiez les utilisateurs Ads, mais commencez par le HTML servi.

Les affiliés « que l'agence avait mis en 2019 » : demandez. Un encart documenté n'est pas une injection. Un encart apparu cette semaine, si. Notez le domaine du script dans l'onglet Réseau (sans adblocker). C'est la pièce : vous la chercherez en SQL et dans les fichiers. Sans ce nom, vous désinstallez AdSense par réflexe et vous gardez l'injecteur.

Reproduire : cache, mobile, adblock

Désactivez votre adblocker (il cache le symptôme). Testez mobile, privé, un autre DNS. Beaucoup d'injections ciblent le mobile ou un pays. Vous, en France sur desktop + uBlock, voyez un site « clean ».

Videz LiteSpeed / Cloudflare après chaque test de retrait, sinon vous jugez un cache.

Enregistrez la cascade réseau (onglet Réseau) : le domaine pub qui n'est pas Google ni votre CDN. C'est la pièce.

  • Sans adblocker, mobile, privé.
  • Nom de domaine du script pub.
  • Cache vidé pour juger.

Le HTML : script, iframe, redirect

View-source et inspection GSC (parfois le cloaking sert la pub seulement au visiteur, pas à vous — rare mais réel ; l'inverse, pub seulement hors Googlebot, plus fréquent). `script src` inconnu, iframe 0×0, `window.location` vers un interstitiel.

Un `.htaccess` qui injecte un header n'est pas le plus fréquent pour de la pub ; un `auto_prepend` PHP qui echo un script, oui. Voir htaccess.

GTM : un tag que vous n'avez pas posé. Voir GTM détourné. Facebook pixel, Hotjar : cousins. La pub visible est le symptôme le plus bruyant.

Plugins « speed », « ads », « pop »

Les nuls et les « optimize your ads » du répertoire douteux injectent. Désactivez les plugins inconnus un par un (après copie), testez. Un plugin « cache » modifié (date, poids) : comparez au zip.

Un must-use qui echo dans `wp_footer`. mu-plugins.

Presta : module `ads`, `popup`, un JS dans le thème. Même méthode : date, zip, désactivation.

wp_options, widgets, GTM

`insert_headers_footers`, `ads_txt` bizarre, widget HTML. Cherchez le domaine pub en SQL dans `wp_options` et `wp_posts`. Plus rapide que 40 écrans.

Elementor : CSS / HTML custom global. Theme Customizer : « scripts additionnels ».

Un `ads.txt` modifié n'affiche pas de pub tout seul ; il autorise des revendeurs. Lisez-le quand même : signal d'accès. Comparez à une copie d'il y a six mois (git, backup). Des lignes `reseller` que personne n'a signées, c'est le même incident d'admin, même si les encarts visibles viennent d'un autre fichier. Remettez le `ads.txt` légitime après le clean, pas avant d'avoir fermé la porte : il se ferait réécrire.

Pub seulement pour le visiteur, pas pour vous

User-agent, cookie admin, IP de bureau en whitelist. Testez 4G. Inspection GSC peut être propre (Googlebot) et le visiteur noyé : l'attaquant évite Google pour durer. Rare sur la pub (ils veulent le volume), fréquent sur le SEO spam. Ici, le volume pub implique souvent que tout le monde voit — y compris vous si vous testez bien.

Si GSC voit la pub et pas vous : cache admin, ou vous êtes encore en « logged in » et le script exclut les connectés. Déconnectez-vous.

Retirer sans tuer le vrai AdSense

Ne désinstallez pas le plugin AdSense officiel parce qu'il y a des pubs. Isolez le `src` pirate. Un grep du `ca-pub-` vs l'autre domaine.

Un auto-ads Google plus un injecteur : deux couches. Coupez l'injecteur, gardez votre pub si le contrat tient et si Google n'a pas suspendu le compte pour « site dangereux ».

Si Ads / AdSense sont suspendus à cause du site : propre d'abord, puis recours. Voir Ads et SB.

SEO et Safe Browsing : deux risques différents

La pub injectée peut n'allumer aucune alerte rouge. Le préjudice est l'image et parfois un malware (le script charge une étape de plus). Testez le JS : s'il redirige vers un .exe, là SB entre. 24-72 h après 404 de cette ressource.

Des liens casino dans les encarts : SEO spam collatéral. `site:` à surveiller.

Ne déposez pas un réexamen SB « parce qu'il y a des pubs moches ». Mauvais motif. Sauf téléchargement / phishing.

Empêcher le retour du script

Écrivain : cron, admin, FTP, option. J+1 sans le domaine pub dans le réseau. CSP plus tard (ça casse du métier si posé trop vite).

Moins de champs « HTML libre » pour les rôles bas. Éditeur de fichiers off. J+1 : même URL, même HAR, le domaine pub a disparu. S'il revient, l'écrivain (cron, mu-plugin, GTM) est encore là. Ce test vaut mieux qu'un scan Wordfence « clean » : un script pub écrit pour votre site n'a souvent pas de signature catalogue.

Vous pouvez déclarer le site. Le domaine du script + une HAR, c'est le bon début.

  • Domaine pub identifié dans le réseau.
  • Base + plugins + GTM + mu-plugin.
  • Vrai AdSense conservé si légitime.
  • J+1 sans le script.

Questions fréquentes

Mes visiteurs ont uBlock, ils ne voient rien. Le problème est réglé ?

+
Non. Une partie de l'audience n'a pas d'adblocker. Et le script peut faire plus que de la pub (redir, mineur navigateur).

AdSense m'a envoyé un mail « pages de faible valeur ». C'est lié ?

+
Parfois collatéral (spam SEO). Parfois non. Traitez l'injecteur ; répondez à AdSense après le HTML propre.

Un thème « magazine » inclut des pubs. Comment séparer ?

+
Documentation du thème, IDs que vous avez saisis. Un réseau que le thème n'offre pas dans ses réglages = injection.

Le script est dans un CDN tiers « légitime » compromis.

+
Possible (supply chain). Voir CDN JS. Vous retirez l'appel ; vous ne « nettoyez » pas le CDN.

Puis-je tout bloquer avec un plugin firewall ?

+
Il peut couper le domaine pub. L'écrivain reste. Bloquez en urgence, cherchez la source (option, GTM, mu-plugin, thème). J+1 sans le domaine dans le HAR : test de réussite. Un WAF qui masque et un cron qui réécrit, vous payez le filtre tous les mois.
À lire ensuite
JavaScript inconnu dans le footer GTM détourné Must-use plugin Cryptominage navigateur Déclarer mon site