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.
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.
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.