id:shi_moさんへ:アクセス解析について

アクセス解析に関してのご質問、ということで多少コメントさせていただきます。まず、質問の内容を簡潔にまとめます。

  1. アクセス解析により、検出されるアクセスと検出されないアクセスがある。なぜか?
  2. アクセス解析に検出されずにアクセスするには?

どちらも明確に『これだ』という答えは出せませんが、思いつくことを書きつづってみます。ですので、すでに御存じの内容もあるかと思いますが、読みながして下さい。

まず、一つめの方からいきましょう。アクセス解析によって検出内容に違いがあるとのことですが、これはある意味では当然です。なにしろ、プログラムが違うのですから、結果も違います。具体的に違いが出るかも知れない状況をシュミレーションしてみましょう。なお、二つのアクセス解析器をAとBとします。

□ シュミレーション1:解析方法の相異

AがJavaScriptによる検出方法で、Bが画像に見せかけた(?)検出方法の場合。アクセス字にJavaScriptをオフにするとAには検出されずに、Bには検出されます。逆に画像表示をOFFにしたときに、逆の結果になります。

さらにプロキシを使用したり、使用しているブラウザがキャッシュを使用するときに画像による検出には問題が現われることがありえます。画像というのはかなり静的な側面をもつコンテンツであり、ムダにサーバに問い合わせずに、キャッシュで済ませることが多いので、その際にアクセスが検出されません。

□ シュミレーション2:プログラム的な相異

プログラマで無いと分かりづらいかも知れませんが、プログラム的に違い出ることがありえます。例としてプログラムが以下のように動作するときを考えてみて下さい。

  1. アクセスを検出
  2. 今日、既にアクセスしているかをチェック
  3. 2回目以降の時はなにもせずに終了、そうでなければ次の処理へ
  4. ユーザから情報を取りだして保存

プログラマな人ならばこの仕組みに問題があることが分かると思います。例えば、今日2回目のアクセスだけど、別のサイトからアクセスしたとき、最初のサイトしかリファラが保存されません。これはひどい例ですが、もう少し込み入った状態で、似たことが起こりえます。同じような別例として、あまりに前回のアクセスからの時間が近いとき、不正なリロードとして無視するものもあるかもしれません。

□ シュミレーション3:キャッシュ

シュミレーション1を参照してください。二つのアクセス解析器がまったく同じようにキャッシュされるとはかぎりません。

他にも原因はあるでしょうが、ある意味で違うことが当然とも言えますね。


さて、二つ目のバレずにアクセスする方法ですが、『バレない』という意味を明確に定義する必要があります。考えられるものを挙げてみました。

  • だれがアクセスしているかを隠したい
  • いつアクセスしたかを隠したい
  • アクセスがあった事自体を隠したい
  • 特定の情報を隠したい(リファラ、ブラウザの種類等)


一つ目に関しては『プロキシを使って下さい』、それも海外のものを。それじゃ不充分ならば、海外のゾンビサーバ*1でもクラックして踏み台にでもしてアクセスしてください。

二つ目はいろいろありえそうですが、あまりメリットを感じませんね。例えば、毎日定時にターゲットサイトからコンテンツをダウンロードしたり、キャッシュに保存するプログラムを書けば、『実際にいつ見たのか』がごまかせます。

さて、三つ目ですが、おそらくshi_moさんはこれが知りたいのでは? と推測しています。これを行なう"絶対的な"方法はありません(これに関しては後述)。月並ですが、画像とJavaScriptをオフにするのが簡単です。さらにCookieもセッション管理に使われますので、無効にするか"外部サーバのCookieを拒否"する設定にしてください。これらの方法は私の管轄外ですので、ご利用のブラウザのマニュアルを御覧下さい。

四つ目の特定の情報を隠す(偽造する)のは簡単です。HTTPリクエスト時のヘッダを書き変えれば良いのですから、試しに(昔にもやりましたが)リファラとブラウザの種類を擬装してshi_moさんのサイトにアクセスしてみるので、御覧下さい。ただし、昔忍者ToolsではUser-Agentの擬装を行なっても無視されたので、見れないかも知れませんが。。以下のような(バカな)情報で擬装してみましょう。

User-Agent = This is kt-blackout's dummy agent
Referer    = http://this.is.dummy.referer/(・A・)/

これで、どこから来たかが隠蔽できます。


おまけ。

アクセス解析を正確に行ないたければ、自宅サーバを立てて(またはサーバの管理権限を持てる状態ならばOK)、ApacheなどのHTTPサーバのログを直接読むのが一番でしょう。ありとあらゆる情報を抜きだせます。例えば、「アクセスしようとしたがファイルが無かった」ということも正確に分かります。

当たり前のことをだらだらとすいません。何か質問があればどうぞ。


追記

頭痛と戦いながら書いたので文章が散漫です。すいません。

アクセスがあった事自体を隠蔽するのを絶対的に隠すのが不可能だと言ったのは『おまけ』以下の内容によるものです。『後述す』ると書きながら後述していませんでした(笑)。

あと、中盤での『シュミレーション云々』とありますが、別にシュミレーションはしてないですね。最初はシュミレーションチックに書くつもりでしたが、いつのまにか逸れてました(笑)。

*1:ゾンビサーバ = 動作しているが、使用されていない(またはそれに近いサーバのこと。俺用語です。)