Връзка с поддръжката

Отговаряме по имейл, обикновено до два дни.

Google reCAPTCHA проверява това изпращане срещу злоупотреби; данни се изпращат към Google. Скриптът се зарежда само когато този формуляр бъде отворен.

← Всички публикации

Какво всъщност е stats2.gif

В папката с изображения на този проект има файл с име stats2.gif. Той е 366 байта, с дата март 2018 г., и се среща в точно нула реда изходен код. На 23 август 2026 г. е бил изпратен 2 735 пъти с код 200 от 145 различни уебсайта — а за целия цикъл на ротация на дневника на достъпа от 858.

Файл, към който никой не препраща, изтеглян хиляди пъти на ден от стотици чужди страници. Очевидното тълкуване: старо вграждане, което хората така и не са заменили и което тихо сервира статично изображение там, където някога е имало брояч. Статичните файлове изцяло заобикалят PHP. Нищо, което стига директно до Apache, не може да брои каквото и да е.

Затова написахме инструмент. Той чете от дневника всяка препращаща страница, изтегля всяка от тях чрез същата проверка, която сайтът вече използва за диагностика на вграждането — с нейните защити срещу SSRF, защото тези адреси идват от дневник, а не от нас — и търси дали нещо на страницата наистина брои.

Всички 858 страници

вече броят (до значката има работещо вграждане)501
изобщо недостъпни288
значката е налице, но в изходния код няма номер на брояч69
само старата значка, нищо не брои0
вече броят501недостъпни288иконка, без номер69търсеният случай: 0

Нито една. Седемдесет и пет минути изтегляне и отговорът беше „не“.

Измерването, което отнема една секунда

stats2.gif е с размер 13 на 14 пиксела.

Това не е брояч, нито значка с число върху нея. Това е малката иконка за статистика — същото, което пресъздава дизайн 981 в сегашната галерия, а коментарът в изходния код на този дизайн описва точно своя предшественик: без видимо число, само малък знак, който при кликване отваря статистиката. Файлът никога не е бил предназначен да брои. На тези страници винаги е броило нещо друго.

Файлът също не е повреден. Той отговаря с 200, заглавка Last-Modified от 2018 г. и едногодишен срок в кеша. Върши си работата.

Едно извикване на getimagesize() решава целия този въпрос за секунда. Тук въпросът беше „защо този файл се изтегля толкова често“, предполагаемият отговор беше „защото е повреден брояч“, а всичко след това почиваше на предположението, а не на файла — и точно затова проверката от една секунда си струва да се направи първа.

Единственото нещо, което наистина е повредено

От всичко това дневникът показа един-единствен истински дефект: един адрес, заявяван десет пъти на ден, всеки път с 410, при който цял фрагмент от кода за вграждане е попаднал във връзката, в нейния href. Някой е поставил кода в поле, което екранира HTML. Броячът му е жив и брои — само собствената му връзка към собствената му статистика не води наникъде.

Инструментът остава, но без частта си за запис. Въпросът беше основателен; отговорът е „не“; и двете си струва да бъдат запазени, за да не се налага никой отново да го задава на ръка.

Реклама