2020/04/24

Página do SAPO está a gastar 30% de CPU


Uma visita à popular página principal do SAPO pode estar a comer poder de processamento do vosso CPU sem qualquer justificação aparente.

A página do SAPO está a gerar um comportamento estranho (pelo menos no Chrome), originando um consumo anormal de CPU. Um salto ao Task Manager do Chrome (Menu -> More Tools -> Task Manager ; ou em alternativa usando o atalho de teclado Shift + ESC) e ordenando-se as tabs por utilização de CPU revela que a página do SAPO se mantém no topo com utilização de CPU na ordem dos 20-30%.

Ora, utilização excessiva de CPU numa página do browser faz desde logo suspeitar os temíveis scripts cryptominer que usam o computador dos visitantes para gerar criptomoedas. No entanto, não parece ser esse o caso do SAPO, que se torna bastante mais intrigante.


Embora os cryptominers devessem estar desde logo bloqueados pelo uBlock Origin, fui confirmar essa possibilidade desactivando a execução de Javascript.


E, contrariando as minhas expectativas, mesmo com o Javascript bloqueado, a utilização excessiva de CPU na página do SAPO manteve-se!

Por esta altura era ainda mais suspeito o que poderia estar a causar tal consumo do CPU, já que, tirando o Javascript, não deveria haver mais nada que o pudesse justificar. Altura para o "tira-teimas" número dois: bloquear o Javascript directamente no Chrome, para não ficar dependente de uma extensão. Para isso, basta clicar no "cadeado" na barra de endereços do browser, e ir a "Site settings" onde se tem acesso a todas as permissões que cada site tem. Vamos até à entrada referente ao Javascript e escolhemos bloquear, de seguida fazer o reload da página.


E, dito e feito, desta vez o consumo de CPU baixa para zero, mas com um "pequeno" efeito secundário curiosos: a página do SAPO deixa de apresentar qualquer conteúdo, ficando inteiramente em branco. (Algo que não deveria acontecer, já que as páginas web deveriam apenas usar JavaScript para melhorar as páginas, sem impedir que um browser sem JS ou com ele desactivado continuasse a poder ver o site em modo "tradicional" - mas isso seria um outro assunto...)


Um pouco mais de investigação confirma que o problema não está no Javascript mas sim no código HTML+CSS da página, e que por algum motivo está a causar o recálculo contínuo dos estilos na página.


A tarefa de um browser não é nada simples, e basta relembrarmos-nos que a cada instante o browser tem que interpretar o código HTML, aplicar inúmeras regras e estilos ditados por um CSS com capacidades ultra-complexas (até pode incluir cálculos), e converter tudo isso numa imagem que seja apresentada ao utilizador, e que pode ter necessidade de ser recalculada a cada fracção de segundo. Neste caso, é algo que está a causar processamento excessivo algures em todo esse processo.

Com sorte, pode ser que quando este artigo for publicado o problema já tenha sido resolvido. Até lá, não fará mal se, de vez em quando, forem espreitando o Task Manager do Chrome para verificar se não há páginas a apresentar um consumo excessivo de CPU, memória, ou utilização de dados - tudo coisas que podem indicar a presença de bugs ou comportamentos potencialmente maliciosos.


Actualização: Já foi corrigido.


7 comentários: