Plugin-ul WP-Optimize acuzat de trișare PageSpeed ​​și alte instrumente de testare a performanței

Publicat: 2022-08-30

Gijo Varghese, un dezvoltator care se autointitulează un „entuziast al performanței web”, a șocat utilizatorii WordPress din întreaga lume în weekend, când a postat pe Twitter o captură de ecran a modului în care WP-Optimize împiedică în mod explicit încărcarea anumitor fișiere JavaScript atunci când utilizatorii își testează site-urile prin performanță populară. instrumente de testare.

„Când un site este încărcat, fișierele JavaScript sunt încărcate numai atunci când user-agent/browserul nu este Lighthouse/GTmetrix/Headless Chrome/Pingdom”, a spus Varghese. „Fără JS = scoruri mari. Dar pentru utilizatorii reali, aceste fișiere JS sunt încărcate!”

Varghese a confirmat că testează versiunea gratuită a WP-Optimize, care este folosită pe peste un milion de site-uri WordPress. UpdraftPlus a achiziționat WP-Optimize în 2016 și susține că instrumentul „are tot ce aveți nevoie pentru a vă menține site-ul rapid și complet optimizat”. O versiune comercială este, de asemenea, promovată prin pluginul gratuit care este găzduit pe WordPress.org.

„Spune-mi, UpdraftPlus, cum ar trebui să continui să am încredere în compania ta cu copiile de rezervă ale clienților mei atunci când folosești aceste practici înșelătoare și frauduloase?” un client, Adam Lowe, a spus ca răspuns la descoperirea lui Varghese a pluginului care nu încarcă JS pentru instrumente de performanță.

„Uau, tot ce pot spune este ce dezamăgire totală”, a spus proprietarul și dezvoltatorul agenției WordPress, Brian Jackson.

Acest tip de înșelăciune este în mod ciudat similar cu o înșelătorie raportată de cineva care a contractat un freelancer de performanță pe Upwork care a manipulat artificial rezultatele Google Pagespeed. Alții care au participat la discuția de pe Twitter l-au comparat cu scandalul emisiilor Volkswagon, în care sa constatat că producătorul auto și-a activat controalele emisiilor numai în timpul testelor de laborator pentru a îndeplini cerințele EPA după o încălcare. Vehiculele de pe drum au emis de până la 40 de ori mai mulți oxizi de azot în timpul conducerii, în comparație cu modul în care au funcționat la testele de laborator trucate.

Varghese și alți câțiva participanți la conversație au concluzionat că acesta este motivul pentru care proprietarii de site-uri ar trebui să se concentreze pe ceea ce experimentează utilizatorii din lumea reală, în loc de scorurile la testele instrumentelor de performanță.

Chiar și atunci când se concentrează pe experiențele reale ale utilizatorilor, proprietarii de site-uri se bazează adesea pe teste pentru a diagnostica problemele și pentru a vedea cum poate fi îmbunătățită performanța unui site. Ei nu se așteaptă ca un plugin să ascundă fișierele JS de instrumentele de performanță. Înșelarea testelor a erodat credibilitatea WP-Optimize.

"Wow. Dacă este adevărat, acest lucru este pe cât de miop, pe atât de imperdonabil”, a spus clientul UpdraftPlus, Johnathon William. „Și mă face să mă întreb dacă pot avea încredere în celălalt produs al lor, UpdraftPlus, pe care îl folosesc pentru a face backup mai multor site-uri clienți.”

Am contactat UpdraftPlus și dezvoltatorul principal David Anderson a spus că compania nu era conștientă de problema cu codul, dar a relatat o parte din antecedentele. UpdraftPlus a fost pentru scurt timp în discuții cu autorul pluginului Fast Velocity Minify despre posibilitatea combinării forțelor, în care ar menține modulul de minificare în cadrul WP-Optimize și ar câștiga mai mulți utilizatori. În cele din urmă, ei nu au putut ajunge la un acord, dar în acest timp dezvoltatorii WP-Optimize s-au bifurcat și au adaptat Fast Velocity Minify sub GPL. Dezvoltatorii care au lucrat la acea adaptare nu mai sunt la companie.

„În comiterea către propriul depozit sursă, acum 2,5 ani (ianuarie 2020), commit-ul a fost etichetat „Rezolvare „Adăugați codul GPL CSS și Minification JS din „Fast Velocity Minify” – Partea 6”, a spus Anderson. „Face parte dintr-o serie de fuziuni inițiale de cod care a fost re-factorizată pentru a fi mai curată și a folosi preferințele noastre de stil de codare (dar fără a schimba nicio funcționalitate). Așadar, intenția aparentă a îmbinării acelor linii a fost de a aduce codul refactorizat fără a face în acel stadiu nicio modificare.

„Conform istoricului de comitere (adică funcția „git blame”) nu s-au făcut modificări la acel cod de atunci, adică este importat. (Istoricul pentru WP Optimize este public și în WordPress SVN).”

După o examinare superficială a codului, Anderson a concluzionat că echipa sa ar putea avea nevoie să-l reexamineze, deoarece nu știau ce a fost adăugat acum doi ani.

„În timp ce încerc să urmăresc această funcție prin codul din pluginuri, intenția ei pare să fie că, dacă vizitatorul site-ului este un „bot”, atunci codul care nu are rost pentru roboți nu va fi executat, " el a spus.

„Totuși, spunând acestea, 1) numele de boți par a fi puternic ofuscate/redactate, ceea ce este ciudat (de ce?) și 2) există o mulțime de roboți mai evidenti care nu sunt enumerați acolo, cum ar fi Googlebot în sine. Dacă această funcție mi-ar fi prezentată pentru revizuire astăzi, cu siguranță m-aș întreba de ce este așa. Nu pot să-mi citesc mintea în urmă cu 32 de luni, dar îmi amintesc că este o serie lungă de patch-uri mari, așa că nu a fost analizată îndeaproape, rând cu rând. Știam că identificasem FVM ca un plugin bun și că obiectivul nostru principal a fost adaptarea lui la structura și stilul nostru, iar acestea erau lucrurile la care mă uitam personal ca recenzent final.”

Pe scurt, echipa de dezvoltare a lui UpdraftPlus nu a fost la curent cu acest cod până când firul Twitter a fost publicat în weekend.

„Sunt cu siguranță bucuros că am adus-o la intenția noastră”, a spus Anderson. „Codul asociat comentează asupra unui fragment înrudit din sursa sa originală că are scopul de a preveni solicitările inutile pentru roboți, dar la o examinare mai atentă decât a avut-o acea linie la momentul respectiv, asta este ceva la care vom dori să ne uităm, așa cum arată. discutabil/ciudat și vom face asta atribuind-o unui membru al echipei care este expertul nostru în optimizări JavaScript.”

Anderson a mai spus că, dacă experții în optimizarea JavaScript nu pot găsi niciun scop legitim pentru cod, „va fi cu siguranță eliminat”, cu o dezvăluire clară și fără ambiguitate a raționamentului din spatele acestuia.

Între timp, UpdraftPlus a publicat o notificare pe forumul de asistență al pluginului pentru a informa utilizatorii că codul este în prezent investigat.

„Pentru a fi clar și a relaxa mințile utilizatorilor: codul în cauză nu este periculos, un virus, o infecție, util pentru hackeri sau orice altceva de acest gen”, a spus Anderson. „Acuzația este că singurul său scop în existență este efectiv de a înșela testele de viteză. Un astfel de cod, dacă da, nu aparține WP Optimize și îl vom elimina cu o nouă ediție. Integritatea produselor noastre și încrederea clienților noștri sunt esențiale pentru noi (și introducerea în mod deliberat a lucrurilor în cod sursă deschisă care compromite asta, sincer, este un lucru stupid de făcut).”