Le plugin WP-Optimize accusé de tricher avec PageSpeed et d'autres outils de test de performance
Publié: 2022-08-30Gijo Varghese, un développeur qui se dit « passionné de performances Web », a choqué les utilisateurs de WordPress du monde entier ce week-end lorsqu'il a tweeté une capture d'écran de la façon dont WP-Optimize empêche explicitement le chargement de certains fichiers JavaScript lorsque les utilisateurs testent leurs sites via des performances populaires. outils de test.
"Lorsqu'un site est chargé, les fichiers JavaScript ne sont chargés que lorsque l'agent utilisateur/navigateur n'est pas Lighthouse/GTmetrix/Headless Chrome/Pingdom", a déclaré Varghese. "Pas de JS = scores élevés. Mais pour les vrais utilisateurs, ces fichiers JS sont chargés !"
Varghese a confirmé qu'il testait la version gratuite de WP-Optimize, qui est utilisée sur plus d'un million de sites WordPress. UpdraftPlus a acquis WP-Optimize en 2016 et affirme que l'outil "a tout ce dont vous avez besoin pour garder votre site Web rapide et parfaitement optimisé". Une version commerciale est également promue via le plugin gratuit hébergé sur WordPress.org.
"Dites-moi, UpdraftPlus, comment je suis censé continuer à faire confiance à votre entreprise pour les sauvegardes de mes clients lorsque vous utilisez ces pratiques trompeuses et frauduleuses ?" un client Adam Lowe a déclaré en réponse à la découverte par Varghese du plugin ne chargeant pas JS pour les outils de performance.
"Wow, tout ce que je peux dire, c'est quelle déception totale", a déclaré le propriétaire et développeur de l'agence WordPress, Brian Jackson.
Ce type de tromperie ressemble étrangement à une arnaque signalée par quelqu'un qui a engagé un pigiste en performance sur Upwork qui a artificiellement manipulé les résultats de Google Pagespeed. D'autres participants à la discussion sur Twitter l'ont comparée au scandale des émissions de Volkswagen où le constructeur automobile a activé ses contrôles d'émissions uniquement pendant les tests en laboratoire afin de répondre aux exigences de l'EPA après une violation. Les véhicules sur la route émettaient jusqu'à 40 fois plus d'oxydes d'azote pendant la conduite, par rapport à leurs performances lors des tests de laboratoire truqués.
Varghese et plusieurs autres participants à la conversation ont conclu que c'est pourquoi les propriétaires de sites devraient se concentrer sur ce que les utilisateurs du monde réel vivent, plutôt que sur les résultats des tests d'outils de performance.
Même lorsqu'ils se concentrent sur des expériences utilisateur réelles, les propriétaires de sites s'appuient souvent sur les tests pour diagnostiquer les problèmes et voir comment les performances d'un site peuvent être améliorées. Ils ne s'attendent pas à ce qu'un plugin cache les fichiers JS des outils de performance. Tromper les tests a érodé la crédibilité de WP-Optimize.
"Ouah. Si c'est vrai, c'est aussi myope qu'inexcusable », a déclaré Johnathon William, client d'UpdraftPlus. "Et je me demande si je peux faire confiance à leur autre produit, UpdraftPlus, que j'utilise pour sauvegarder plusieurs sites clients."
J'ai contacté UpdraftPlus et le développeur principal David Anderson a déclaré que la société n'était pas au courant du problème avec le code, mais a relaté une partie de la trame de fond. UpdraftPlus a été brièvement en pourparlers avec l'auteur du plugin Fast Velocity Minify sur la possibilité de combiner les forces, dans laquelle il maintiendrait le module de minification dans WP-Optimize et gagnerait plus d'utilisateurs. En fin de compte, ils n'ont pas pu parvenir à un accord, mais pendant ce temps, les développeurs de WP-Optimize ont bifurqué et adapté Fast Velocity Minify sous la GPL. Les développeurs qui ont travaillé sur cette adaptation ne font plus partie de l'entreprise.
"Dans le commit de notre propre référentiel source, il y a 2,5 ans (janvier 2020), le commit était étiqueté" Résoudre "Ajouter le code CSS et JS Minification GPL de" Fast Velocity Minify "- Partie 6 ′", a déclaré Anderson. "Fait partie d'une série de fusions initiales de code qui ont été refactorisées pour être plus propres et utiliser nos préférences de style de codage (mais sans modifier aucune fonctionnalité). L'intention apparente de la fusion de ces lignes était donc d'apporter du code refactorisé sans à ce stade apporter de modifications.
« Selon l'historique des commits (c'est-à-dire la fonction 'git blame'), aucune modification n'a été apportée à ce code depuis, c'est-à-dire qu'il est tel qu'importé. (L'historique de WP Optimize est également public dans WordPress SVN).
Après un examen rapide du code, Anderson a conclu que son équipe pourrait avoir besoin de le réexaminer, car ils n'étaient pas au courant de ce qui avait été ajouté il y a deux ans.
"Alors que j'essaie de retracer cette fonction à travers le code dans les plugins, l'intention à première vue semble être que si le visiteur du site Web est un" bot ", alors le code qui est inutile pour les bots ne sera pas exécuté, " il a dit.
"Cependant, cela dit, 1) les noms des bots semblent être fortement obscurcis/expurgés, ce qui est étrange (pourquoi ?), et 2) il y a beaucoup de bots plus évidents qui ne sont pas répertoriés ici, comme le Googlebot lui-même. Si cette fonction était soumise à mon examen aujourd'hui, je me demanderais certainement pourquoi il en est ainsi. Je ne peux pas me relire il y a 32 mois, mais je m'en souviens comme d'une longue série de gros correctifs, donc il n'était pas analysé de près ligne par ligne. Nous savions que nous avions identifié FVM comme un bon plugin et notre objectif principal était de l'adapter à notre structure et à notre style, et ce sont les choses que je regardais personnellement en tant que réviseur final.
En résumé, l'équipe de développement d'UpdraftPlus n'était pas au courant de ce code jusqu'à ce que le fil Twitter soit publié au cours du week-end.
"Je suis certainement heureux que cela soit porté à notre intention", a déclaré Anderson. "Le commentaire de code associé sur un fragment connexe dans sa source d'origine qu'il est destiné à empêcher les demandes inutiles de bots, mais en examinant de plus près cette ligne à l'époque, c'est quelque chose que nous voudrons examiner, car il semble discutable/étrange, et nous le ferons en l'attribuant à un membre de l'équipe qui est notre expert en optimisation JavaScript.
Anderson a également déclaré que si les experts en optimisation JavaScript ne trouvent aucun objectif légitime pour le code, "il sera certainement supprimé", avec une divulgation claire et sans ambiguïté du raisonnement qui le sous-tend.
Entre-temps, UpdraftPlus a publié un avis dans le forum de support du plugin pour informer les utilisateurs que le code est actuellement à l'étude.
"Pour être clair et rassurer les utilisateurs : le code en question n'est pas dangereux, un virus, une infection, utile aux pirates, ou quoi que ce soit de ce genre", a déclaré Anderson. "L'allégation est que son seul but dans l'existence est effectivement de tricher aux tests de vitesse. Un tel code, si c'est le cas, n'appartient pas à WP Optimize et nous le supprimerons avec une nouvelle version. L'intégrité de nos produits et la confiance de nos clients sont essentielles pour nous (et mettre délibérément des choses dans un code open source qui compromet cela est, franchement, une chose stupide à faire).