Contactar o apoio

Respondemos por e-mail, normalmente em dois dias.

Para prevenir abusos, o Google reCAPTCHA verifica este envio; alguns dados são transmitidos ao Google. O script só é carregado quando abre este formulário.

← Todos os artigos

O ficheiro a que chamámos avariado

Na pasta de imagens deste projeto há um ficheiro chamado stats2.gif. Tem 366 bytes, data de março de 2018 e aparece em exatamente zero linhas de código-fonte. A 23 de agosto de 2026 foi servido 2 735 vezes com um 200, a partir de 145 sítios diferentes — e ao longo de toda a rotação do registo de acessos, a partir de 858.

Um ficheiro que ninguém referencia, descarregado milhares de vezes por dia a partir de centenas de páginas alheias. A leitura óbvia: uma inserção antiga que ninguém substituiu, a servir em silêncio uma imagem estática onde antes havia um contador. Os ficheiros estáticos passam completamente ao lado do PHP. Nada que chegue diretamente ao Apache pode contar seja o que for.

Escrevemos então uma ferramenta. Lê do registo cada página que remete, descarrega cada uma delas com o mesmo verificador que o sítio já usa para diagnosticar inserções — com as suas proteções contra SSRF, porque esses endereços vêm de um registo e não de nós — e procura se alguma coisa na página conta realmente.

As 858 páginas

já contam (com uma inserção a funcionar ao lado)501
não acessíveis de todo288
distintivo presente, sem número de contador no código69
apenas o distintivo antigo, nada a contar0

Nem uma. Setenta e cinco minutos de descargas para não encontrar nada.

A medição que teria demorado um segundo

stats2.gif tem 13 por 14 píxeis.

Isso não é um contador nem um distintivo com um número. É o pequeno ícone de estatísticas — o mesmo que o desenho 981 recria na galeria atual, e o comentário no seu próprio código descreve o antecessor com precisão: sem número visível, apenas uma pequena marca que abre as suas estatísticas quando se carrega nela. Nunca foi suposto contar. Naquelas páginas contava sempre outra coisa.

O ficheiro também não está avariado. Responde com um 200, com um Last-Modified de 2018 e um ano de vida em cache. Faz o seu trabalho.

Uma chamada a getimagesize() logo no início teria encerrado toda esta linha de investigação antes de a ferramenta ser escrita. Em vez disso a pergunta foi «porque é que este ficheiro é tão descarregado», a resposta assumida foi «porque é um contador avariado», e tudo o resto decorreu de um pressuposto que ninguém verificou.

A única coisa que está mesmo avariada

De tudo isto, o registo mostrou um único defeito verdadeiro: um endereço, pedido dez vezes por dia, todas com 410, no qual um fragmento inteiro de inserção tinha ido parar dentro do href da ligação. Alguém colou o código num campo que escapa o HTML. O contador dessa pessoa está vivo e a contar — o que não leva a lado nenhum é apenas a sua própria ligação para as suas próprias estatísticas.

A ferramenta fica, sem a sua via de escrita. A pergunta era legítima, a resposta é não, e ambas merecem ser guardadas para que ninguém tenha de a voltar a fazer à mão.

Publicidade