サポートに連絡

メールでご返信します。通常は2日以内です。

不正利用を防ぐため、Google reCAPTCHA がこの送信を確認します。その際データが Google に送られます。スクリプトはこのフォームを開いたときにだけ読み込まれます。

← すべての記事

クッキーを使わずに数える

訪問者カウンターには一つ厄介な仕事がある。二つの訪問を区別しなければならないということだ。それができなければ、一人が同じページを10回リロードしただけで10人に見えてしまい、サイトに表示される数字は架空のものになる。

通常の解決策はクッキーだ。当サイトはクッキーを使わない。ここでは代わりに何をしているか、そしてこの一文を正直に言えるようになるまでにどれだけの作業が必要だったかを説明する。

誰も望んでいなかったクッキー

今年までは、カウンターへのリクエストがあるたびにPHPセッションが開始されていた。コードにすればたった一行、一見無害に見えるが、その結果Stats4Uカウンターを使っているすべてのサイトの、すべての訪問者がセッションクッキーを受け取っていた——当方が、他人のページ上に、双方の意図しないまま設定していたことになる。

材料IP · UA · ID日付 · 日替わりソルトハッシュ16 バイト保持2 日アドレスそのものは決して書き留めないソルトが消えれば誰もその日を再計算できない — 私たちも

そのセッションは一度も何かに使われたことがなかった。証拠は探せばすぐに見つかった。セッションを保存するディレクトリには、ファイルが一つも入っていなかったのだ。何年もの間、書き込まれることも読み込まれることもないデータのために、他人のウェブサイト上でクッキーを設定し続けていたことになる。

これは計測の経路から取り除かれた。セッションが開始されるのは、誰かがカウンターを作成または再設定するときだけになった——このサイト上で本人が意図的に行う操作のときだけだ。

代わりに何を使っているか

訪問者はハッシュによって区別される。入力される要素は五つ。

  • IPアドレス
  • ユーザーエージェント
  • カウンターID
  • 今日の日付
  • 毎日変わる秘密鍵

出てくるのは16バイトで、保存されるのはこれだけだ。二日間保持されたのち削除される。IPアドレスそのものは、いかなる時点でも書き込まれることがない。

同じ人物が同じ日に同じカウンターを二度訪れると、同じ16バイトが生成されるため、二回目は再訪として認識される。翌日になると同じ人物でもまったく異なる値が生成される。日付と秘密鍵の両方が変わっているからだ。仕組みはこれがすべてである。

なぜ秘密鍵は毎日変わるのか

ここは間違えやすい部分であり、当サイトでも今年まで間違ったままだった。

旧バージョンは一つの秘密鍵を永続的に使っていた。それでも人が違えば異なるハッシュが生成されるので、一見問題ないように思える。しかし、その秘密鍵を持っている者なら誰でも、疑わしいIPアドレスを取り出して過去のどの日についてもハッシュを再計算できてしまうということでもあった——匿名の16バイトの値の表を、データが遡れる限りの過去まで、誰が何を訪れたかの記録に逆変換できてしまうのだ。

今では秘密鍵は毎日変わり、古いものは二日後に削除される。削除されたあとは、誰であっても、その計算を実行することはできなくなる。それには当サイトの運営者自身も含まれる——ここが肝心な点だ。運営者の善意に依存する保護は、保護ではなく約束にすぎない。

画面解像度と、物を取り除くことについての教訓

かつては画面解像度も収集していた。これは典型的なフィンガープリンティングの手がかりであり、そのコストに見合う価値がなかったため、各サイト上で動くスクリプトから取り除いた。

しかしそれだけでは不十分だった。他人のウェブサイト向けに何かを作っている人なら知っておく価値のある理由がある。このスクリプトは7日間のキャッシュ期間で配信されているため、変更後も古いコピーが訪問者のブラウザ内で一週間生き続けていた。さらに悪いことに、一部のサイトはそもそもスクリプトにリンクしていない——何年も前に自分のページにコピーを貼り付けてしまっており、そのコピーは貼り付けられた日にしていたことを、この先もずっとそのまま行い続ける。

そのため解像度のデータは届き続けていた。解決策は、誰が送ってきたものであれ、サーバー側でその値を拒否するようにすることだった。クライアント側からデータ収集を取り除いても、止まるのは新しいクライアントだけだ。サーバー側から取り除けば、即座に止まる。

自力で確認する

ここまでの説明も、主張のままでは大した価値はない。そこで確認できるコマンドを示す。

  • curl -sk -D - -o /dev/null 'https://www.stats4u.net/index.php?action=pic&s4uid=1' | grep -i set-cookie

何も出力されなければ、クッキーは設定されていないということだ。

最後にいつもと同じ注意を一つ。ここで説明したのはソフトウェアが何をしているかであって、それがそれぞれの国や地域で適用される規則を満たすかどうかは、それに答える資格を持つ人に尋ねるべき問題であり、本稿はその答えではない。

追記(2026 年 9 月 11 日):2026 年 8 月 27 日から、スクリプトは埋め込まれたすべてのサイトで、画面の解像度、ブラウザーのウィンドウ幅、ピクセル比を再び読み取っていました。2026 年 9 月 11 日からは、サイトの所有者が data-screen="1" で有効にした場合にのみ読み取ります。この属性がなければ、現在のスクリプトは三つのうちどれも読み取らず、サーバーも古いコピーから届いた値をもう保存しません。

広告