Plugin WP-Optimize acusado de trapacear o PageSpeed e outras ferramentas de teste de desempenho
Publicados: 2022-08-30Gijo Varghese, um desenvolvedor que se autodenomina “entusiasta do desempenho da web”, chocou os usuários do WordPress em todo o mundo no fim de semana quando twittou uma captura de tela de como o WP-Optimize está explicitamente impedindo que arquivos JavaScript selecionados sejam carregados quando os usuários testam seus sites por meio do desempenho popular ferramentas de teste.
“Quando um site é carregado, os arquivos JavaScript são carregados apenas quando o user-agent/navegador não é Lighthouse/GTmetrix/Headless Chrome/Pingdom”, disse Varghese. “Sem JS = pontuações altas. Mas para usuários reais, esses arquivos JS são carregados!”
Varghese confirmou que estava testando a versão gratuita do WP-Optimize, que é usada em mais de um milhão de sites WordPress. O UpdraftPlus adquiriu o WP-Optimize em 2016 e afirma que a ferramenta “tem tudo o que você precisa para manter seu site rápido e completamente otimizado”. Uma versão comercial também é promovida através do plugin gratuito hospedado no WordPress.org.
“Diga-me, UpdraftPlus, como devo continuar confiando em sua empresa com os backups de meus clientes quando você usa essas práticas enganosas e fraudulentas?” um cliente Adam Lowe disse em resposta à descoberta de Varghese do plugin não carregar JS para ferramentas de desempenho.
“Uau, tudo o que posso dizer é que decepção total”, disse o proprietário e desenvolvedor da agência WordPress Brian Jackson.
Esse tipo de engano é estranhamente semelhante a um golpe relatado por alguém que contratou um freelancer de desempenho no Upwork que manipulou artificialmente os resultados do Google Pagespeed. Outros participantes da discussão no Twitter a compararam ao escândalo de emissões da Volkswagen, em que a montadora ativou seus controles de emissões apenas durante testes de laboratório para atender aos requisitos da EPA após uma violação. Os veículos na estrada emitiram até 40 vezes mais óxidos de nitrogênio durante a condução, em comparação com o desempenho nos testes de laboratório manipulados.
Varghese e vários outros participantes da conversa concluíram que é por isso que os proprietários de sites devem se concentrar no que os usuários do mundo real estão experimentando, em vez de pontuações de testes de ferramentas de desempenho.
Mesmo quando se concentram em experiências reais do usuário, os proprietários de sites geralmente confiam nos testes para diagnosticar problemas e ver como o desempenho de um site pode ser melhorado. Eles não esperam que um plugin oculte arquivos JS das ferramentas de desempenho. Enganar os testes corroeu a credibilidade do WP-Optimize.
"Uau. Se for verdade, isso é tão míope quanto imperdoável”, disse Johnathon William, cliente do UpdraftPlus. “E isso me faz pensar se posso confiar no outro produto deles, o UpdraftPlus, que uso para fazer backup de vários sites de clientes.”
Entrei em contato com a UpdraftPlus e o desenvolvedor líder David Anderson disse que a empresa não estava ciente do problema com o código, mas relatou alguns dos bastidores. UpdraftPlus esteve brevemente em conversas com o autor do plugin Fast Velocity Minify sobre a possibilidade de combinar forças, na qual ele manteria o módulo de minificação dentro do WP-Optimize e ganharia mais usuários. Em última análise, eles não conseguiram chegar a um acordo, mas durante esse tempo os desenvolvedores do WP-Optimize bifurcaram e adaptaram o Fast Velocity Minify sob a GPL. Os desenvolvedores que trabalharam nessa adaptação não estão mais na empresa.
“Na confirmação para nosso próprio repositório de origem, há 2,5 anos (janeiro de 2020), a confirmação foi rotulada como 'Resolver 'Adicionar código GPL CSS e JS Minification de 'Fast Velocity Minify' – Parte 6′”, disse Anderson. “Parte de uma série de merges iniciais de código que foi refatorado para ser mais limpo e usar nossas preferências de estilo de codificação (mas sem alterar nenhuma funcionalidade). Portanto, a aparente intenção da mesclagem dessas linhas era trazer o código refatorado sem fazer nenhuma alteração nesse estágio.
“De acordo com o histórico de commits (ou seja, a função 'git culpado') nenhuma alteração foi feita nesse código desde então, ou seja, ele é importado. (O histórico do WP Optimize também é público no WordPress SVN).”
Após um exame superficial do código, Anderson concluiu que sua equipe pode precisar reexaminar o código, já que eles não estavam cientes do que foi adicionado há dois anos.
“À medida que tento rastrear essa função através do código dentro dos plugins, a intenção parece ser que, se o visitante do site for um 'bot', o código inútil para os bots não será executado, " ele disse.
“No entanto, tendo dito isso, 1) os nomes dos bots parecem estar fortemente ofuscados/editados, o que é estranho (por quê?), e 2) existem muitos bots mais óbvios que não estão listados lá, como o próprio Googlebot. Se essa função estivesse sendo colocada diante de mim para revisão hoje, eu certamente questionaria por que isso acontece. Não consigo ler a minha mente 32 meses atrás, mas me lembro como uma longa série de grandes patches, então não estava sendo analisado de perto linha por linha. Sabíamos que havíamos identificado o FVM como um bom plugin e nosso foco principal era adaptá-lo à nossa estrutura e estilo, e essas eram as coisas que eu pessoalmente estava analisando como revisor final.”
Em resumo, a equipe de desenvolvimento do UpdraftPlus não estava ciente desse código até que o tópico do Twitter fosse publicado no fim de semana.
“Certamente estou feliz por tê-lo trazido à nossa intenção”, disse Anderson. “O código associado comenta em um fragmento relacionado em sua fonte original que se destina a evitar solicitações desnecessárias de bots, mas em um exame mais detalhado do que essa linha obteve na época, é algo que queremos analisar, pois parece questionável/estranho, e faremos isso atribuindo-o a um membro da equipe que é nosso especialista em otimizações de JavaScript.”
Anderson também disse que, se os especialistas em otimização de JavaScript não encontrarem nenhum propósito legítimo para o código, “certamente ele será removido”, com uma divulgação clara e inequívoca do raciocínio por trás dele.
Enquanto isso, o UpdraftPlus publicou um aviso no fórum de suporte do plugin para informar aos usuários que o código está atualmente sob investigação.
“Para ser claro e deixar a mente dos usuários em paz: o código em questão não é perigoso, um vírus, uma infecção, útil para hackers ou qualquer coisa desse tipo”, disse Anderson. “A alegação é que seu único propósito em existir é efetivamente trapacear nos testes de velocidade. Tal código, se assim for, não pertence ao WP Optimize e iremos removê-lo com uma nova versão. A integridade de nossos produtos e a confiança de nossos clientes são essenciais para nós (e colocar deliberadamente coisas em código aberto que compromete isso é, francamente, uma coisa estúpida de se fazer).”