「壊れている」と呼んでいたファイル
このプロジェクトの画像ディレクトリには stats2.gif というファイルがあります。366 バイト、日付は 2018 年 3 月、ソースコード中に現れる行数はちょうどゼロ。2026 年 8 月 23 日、それは 145 の異なるサイトから 2735 回、ステータス 200 で配信されました——アクセスログ一周分では 858 サイトです。
コードのどこからも参照されていないファイルが、他人のページ数百件から毎日数千回取得されている。素直な読み方はこうです。誰も差し替えなかった古い埋め込みが、かつてカウンターだった場所で静かに静止画を返している。静的ファイルは PHP を完全に迂回します。Apache が直接返すものは、何も数えられません。
そこでツールを書きました。ログから参照元ページをすべて読み出し、埋め込み診断ですでに使っている取得器で一つずつ取得し——URL は自分たちではなくログ由来なので、その SSRF 防護ごと使います——そのページで実際に何かが数えているかどうかを見ます。
858 ページすべて
| すでに数えている(隣に動く埋め込みがある) | 501 |
| そもそも到達できない | 288 |
| アイコンはあるが、ソースにカウンター番号がない | 69 |
| 古いアイコンだけ、何も数えていない | 0 |
一件もなし。七十五分の取得で、何も見つかりませんでした。
一秒で済んだはずの計測
stats2.gif の寸法は 13 × 14 ピクセルです。
カウンターでも、数字入りのバッジでもありません。小さな統計アイコン——現在のギャラリーのデザイン 981 が再現しているまさにそれで、981 自身のコード内のコメントが先祖を正確に説明しています。数字は見せず、小さな印だけを置き、押すと統計が開く。数えるためのものではなかったのです。それらのページでは、ずっと別のものが数えていました。
そしてこのファイルは壊れてもいません。2018 年の Last-Modified と一年のキャッシュ期間を付けて 200 で応答します。仕事をしています。
最初に getimagesize() を一度呼べば、この調査の筋道はツールを書く前に終わっていました。実際に立てられた問いは「なぜこのファイルはこんなに頻繁に取得されるのか」で、受け入れられた答えは「壊れたカウンターだから」で、その後のすべては誰も検証しなかった前提の上に載っていました。
本当に壊れていた唯一のもの
この一連から、ログが示した本物の欠陥はひとつだけでした。一日十回リクエストされ、すべて 410 を返す URL があり、埋め込みコード全体がリンクの href の中に入り込んでいました。誰かが HTML をエスケープする入力欄にコードを貼ったのです。そのカウンターは生きていて、数えています——行き先を失っているのは、自分の統計を指す自分のリンクだけです。
ツールは残しました。書き込み経路は外しています。問いは正当で、答えは「いいえ」でした。どちらも残しておく価値があります。もう一度手で問い直さずに済むように。