Chargement sur mobile
−77 %Temps avant que la page soit utilisable, réseau mobile simulé
Le cas : un site vitrine de cabinet de kinésithérapie sous WordPress, lent et qui affiche des publicités de casino sur mobile. Voici ce que je vérifie, dans quel ordre, ce que l'on mesure et le rapport que vous recevez. Le site reste en ligne du début à la fin.
Cabinet Démo Santé · WordPress · Divi · o2switch
Des publicités visibles seulement sur mobile, c'est le plus souvent un code ajouté au site qui choisit à qui se montrer : aux téléphones, rarement à l'administrateur sur son ordinateur, pour rester discret. Ce code charge aussi des éléments depuis des serveurs extérieurs à chaque visite, ce qui peut expliquer une partie des 8 secondes. C'est une hypothèse : le diagnostic la confirmera ou non.
Reconstitution simplifiée, pas une capture de votre site. Les temps sont des exemples, joués en accéléré.
12 contrôles, dans cet ordre, avant de corriger quoi que ce soit. Le bouton simule un diagnostic pour montrer à quoi ressemble le résultat.
Fichiers et base de données copiés hors du serveur, avant la moindre modification.
wp db export · archive des fichiersExempleCopie complète réalisée : 1,4 Go de fichiers et 42 Mo de base (exemple). Restauration testée sur un sous-domaine.
Chaque fichier de WordPress est comparé à la version officielle publiée sur wordpress.org.
wp core verify-checksumsExemple3 fichiers du cœur différents de l'original (exemple). Remplacés par les versions officielles.
Les fichiers du thème et de chaque extension sont comparés à une copie saine téléchargée chez l'éditeur.
comparaison avec l'archive de l'éditeurExempleCode ajouté à la fin de wp-content/themes/divi/functions.php : il n'affiche la publicité qu'aux visiteurs sur mobile (exemple). Retiré.
Recherche de scripts cachés dans les réglages, les pages, les articles et les widgets.
wp db search "<script"ExempleUn script externe glissé dans un réglage du thème (exemple). Supprimé, sans toucher au contenu des pages.
Liste des comptes qui ont tous les droits, date de création et dernière connexion.
wp user list --role=administratorExempleUn compte administrateur inconnu, créé il y a 5 semaines (exemple). Je vous demande confirmation par écrit avant de le supprimer.
Fichiers PHP créés ou modifiés depuis l'apparition des symptômes, là où il ne devrait pas y en avoir.
find . -name "*.php" -mtime -45Exemple2 fichiers PHP dans le dossier des médias, qui ne devrait contenir que des images (exemple). Supprimés.
Tâches de WordPress et du serveur capables de réinstaller le code malveillant après nettoyage.
wp cron event list · crontabExempleUne tâche qui retéléchargeait le script toutes les heures (exemple). Supprimée.
Règles qui redirigent les visiteurs mobiles ou venant de Google vers un autre site.
lecture de .htaccessExempleFichier .htaccess conforme : aucune règle ajoutée (exemple).
État du site dans les listes de sites dangereux et pages indésirables indexées par Google.
Transparency Report · Search ConsoleExemplePas d'avertissement affiché aux visiteurs, mais 40 pages de spam indexées (exemple) : demande de retrait à faire depuis votre Search Console, je vous guide par écrit.
WordPress, thème, extensions et version de PHP chez l'hébergeur, testés page par page.
wp core update · wp plugin update --allExempleWordPress, le thème et 9 extensions mis à jour ; PHP passé de 7.4 à 8.2 (exemple).
Cache des pages, compression des fichiers et cache du navigateur.
en-têtes HTTP · test mobileExempleAucun cache actif (exemple). Cache des pages et compression activés, vérifiés sur mobile.
Images redimensionnées à leur taille d'affichage et converties dans un format léger.
inventaire des médiasExemplePhoto d'accueil de 4,8 Mo ramenée à 190 Ko, sans perte visible (exemple).
Aucun contrôle dans cette catégorie.
8 étapes, dans cet ordre. Le site reste en ligne du début à la fin ; les durées sont des estimations.
Fichiers et base copiés hors du serveur avant toute modification. En cas de souci, retour à l'état initial en quelques minutes.
Les 12 contrôles, dans l'ordre. Chaque constat est noté pour le rapport.
Code injecté retiré, fichiers suspects supprimés, fichiers d'origine remis en place.
La faille qui a permis l'infection est identifiée et fermée : extension vulnérable, mot de passe faible ou compte inconnu.
WordPress, thème, extensions et PHP, un par un, avec une vérification des pages principales après chacun.
Cache, compression, images allégées, scripts inutiles retirés des pages.
Temps de chargement, poids et nombre de requêtes mesurés sur mobile, dans les mêmes conditions qu'au départ.
Un document écrit : constat, actions, fichiers nettoyés, accès changés, recommandations.
Mesurées sur mobile, dans les mêmes conditions, avant et après l'intervention. Les chiffres ci-dessous sont un exemple : les vôtres figureront dans le rapport.
Temps avant que la page soit utilisable, réseau mobile simulé
Total téléchargé : images, scripts, polices
Nombre de fichiers demandés au chargement
Même page, même type de téléphone et même réseau simulé pour les deux mesures, trois passages chacune. Aucun objectif chiffré n'est garanti avant d'avoir vu le site.
Ce que vous recevez à la fin, par écrit. Les lignes de cet aperçu sont des exemples.
Symptômes : 8 secondes de chargement ; publicités de casino sur mobile ; depuis environ un mois.
Hypothèse de départ : un code injecté qui trie les visiteurs.
Origine retenue : celle que le diagnostic a confirmée, preuves à l'appui.
Mesure de départ : 8,2 s de chargement sur mobile (exemple).
| Quand | Action | Statut |
|---|---|---|
| J1 · 09:00 | Copie de sécurité | Fait |
| J1 · 09:30 | Analyse | Fait |
| J1 · 11:30 | Nettoyage | Fait |
| J1 · 13:30 | Fermeture de la porte d'entrée | Fait |
| J1 · 14:30 | Mises à jour | Fait |
| J1 · 16:00 | Accélération | Fait |
| J2 · 09:00 | Mesures | Fait |
| J2 · 09:30 | Rapport | Fait |
| Fichier | Problème relevé | Action |
|---|---|---|
| wp-content/themes/divi/functions.php | Code ajouté, visible seulement sur mobile | Corrigé |
| wp-content/uploads/2026/08/cache-img.php | Fichier PHP dans le dossier des médias | Supprimé |
| wp-includes/load.php | Différent de la version officielle | Remplacé |
| Base de données · réglage du thème | Script externe inséré | Nettoyé |
| Compte ou accès | Ce qui a été fait |
|---|---|
| Compte administrateur inconnu | Supprimé après votre accord écrit |
| Vos comptes administrateurs | Mots de passe renouvelés, double authentification |
| Accès hébergeur et SFTP | Mot de passe renouvelé |
| Clés de sécurité WordPress | Régénérées : toutes les sessions sont fermées |
Ce qui empêche le problème de revenir. Cochez ce qui existe déjà chez vous : le reste est mis en place pendant l'intervention, ou expliqué par écrit.
Les accès se transmettent par un moyen sécurisé que je vous indique, jamais en clair par e-mail. Le compte temporaire est supprimé à la fin, et vous recevez la liste de tout ce qui a été modifié.
Tout se fait par écrit. Aucune suppression de compte sans votre accord.
Vous m'envoyez les accès par un moyen sécurisé que je vous indique. Je fais une copie complète du site avant de toucher à quoi que ce soit.
≈ jour 1Les 12 contrôles, puis le nettoyage. Je vous écris ce que j'ai trouvé et je vous demande votre accord pour chaque suppression de compte.
≈ jours 1 à 2Mises à jour testées page par page, puis cache, compression et images allégées. Le site reste en ligne.
≈ jour 2Mesures avant/après sur mobile et rapport d'intervention écrit. Une semaine de surveillance incluse pour vérifier que rien ne revient.
≈ jour 3, puis 7 jours