リファラー集計についてアイデアを。


ブログやサイトにコードを貼り、企業サイトにおいてある画像ファイルを参照し、表示するものとします。

ここで、どのサイトから画像が何回参照されたかを集計したいと考えています。
懸念しているのは次のことです。
・あるブログからの参照の集計をする。
・単純にリファラーのURLで集計すると、次のような場合に問題がある。
1.ブログのエントリーに画像を張り付けた場合、はじめはサイトトップのURLがリファラーになるが、時間が立つとブログの記事がアーカイブなどに入り、リファラーのURLが変わってしまう。
2.1.の対策としてドメインで集計しようとすると、無料の個人ブログで個人ごとのURLがサブドメインになっていない場合、集計ができない。
3.MySpaceのようなサービスの個人ページに張られた場合も個人ごとに集計したい。


これらを解決する方法として、ブログに張り付けるコードを配布する際に、
あらかじめどこに張り付けるのかを申請させ、Javascriptで何かすることも考えましたが、ユーザーにとっての気軽さが失われるのでNGです。

何とか、問題点を解決する方法はないでしょうか?

回答の条件
  • 1人3回まで
  • 登録:2006/11/16 16:24:58
  • 終了:2006/11/23 16:25:05

回答(3件)

id:katsube No.1

katsube回答回数133ベストアンサー獲得回数72006/11/16 17:24:24

ポイント27pt

「ページ」ではなく「サイト」で集計したいのですよね?

複雑になるケースもありますが、単純に部分一致で集計すれば良いのではないでしょうか?

 http://www.hogeohoge/blog/aaaa.html

 http://www.hogeohoge/blog/200610/aaaa.html

 http://www.hogeohoge/blog/category/sub/aaaa.html

いずれも「http://www.hogeohoge/blog/」が含まれているかどうか、含まれていれば集計対象とするなど。

どのような方法で集計されているかにもよりますが、ワイルドカードなどの柔軟な方法が利用できれば

 http://aaa.hogeohoge/blog/aaaa.html

 http://bbb.hogeohoge/blog/200610/aaaa.html

 http://ccc.hogeohoge/blog/category/sub/aaaa.html

とあった場合には、

 http://*.hogeohoge/blog/*

とすることで集計可能だと思います。

 ※ここでは「*」が何らかの文字が入るということを意味。

id:dingding

この方法では、個人向けの無料ブログサービスなどで、サブドメイン出ない場合困りますよね。

例:

http://www.xxx.xxx/aaa/

http://www.xxx.xxx/bbb/

aaaユーザーとbbbユーザー用のブログがこのようになっていた場合、困ります。

サブドメインの場合も、このような場合もどちらも集計する方法が何とかないかなと。

すべてのブログでどういうルールでブログが分かれているのかが明確にわかれば何とかなりそうな気もしますが、明確にわかることができないような気まします。

2006/11/16 17:41:02
id:katsube No.2

katsube回答回数133ベストアンサー獲得回数72006/11/16 18:43:50

ポイント27pt

> この方法では、個人向けの無料ブログサービスなどで、

> サブドメイン出ない場合困りますよね。

ですから、「http://www.xxx.xxx/aaa/」で一致すればカウントとすれば良いのではないですか?

最初に回答した内容でごく簡単なプログラム(Perl)を組んでみました。http://www.hogehoge/aaa/~とあるREFERERを、「http://www.hogehoge/aaa/」で部分一致するか、すればカウントするという内容になっています。

 ※実行結果は3。"/bbb/"にすれば結果は2となります。


#-- REFERER --#
@referer =(
  'http://www.hogehoge/aaa/hugahuga.html'
   , 'http://www.hogehoge/aaa/hogehoge.html'
   , 'http://www.hogehoge/aaa/sub/hogehoge.html'
   , 'http://www.hogehoge/bbb/hogehoge.html'
   , 'http://www.hogehoge/bbb/sub/hogehoge.html'
);

#-- 集計パターン --#
$pattern = 'http://www.hogehoge/aaa/';

#-- 集計 --#
$count = 0;
foreach(@referer){
  #-- パターンと一致するか --#
  if( /$pattern/ ){
    $count++;		#一致すればカウントアップ
  }
}

#-- 表示 --#
print $count;

プログラムは組めない、Accessなどでやる、という場合にはクエリで同様に部分一致させてやれば良いです。

 ※クエリの条件に"like 'http://www.hogehoge/aaa/*'"などと

  記述する。

id:dingding

とても詳しい説明ありがとうございます。

いえ、そういう意味ではなく、「どの部分がユーザーのサイト」なのかの判断をするのかが必要になります。


あるきまったサイトだけで使えるようにするのではなく、どんなサイトでも使えるようにするためには、「どこからどこまでがユーザのサイトか」を判断しなくてはいけません。

ユーザーaaaと、bbbがいたとして、

あるブログサイトでは、

http://www.xxdx.xxx/aaa/

http://www.xxdx.xxx/bbb/

とわかれていることもあるでしょうし、

別のサイトでは、

http://aaa.xxx.xxx/

http://bbb.xxx.xxx/

のようにサブドメインで分けていることもあるかと思います。

さらに他のパターンもあるかもしれません。

そういった状況の中で、「どこからどこまでが1ユーザーのサイトか」をどうやって判断するのがいいのかなと思っていました。

特殊な場合は仕方ないにしても、ある程度のユーザーを網羅する方法がないかなと。

例えば、ドメイン+タイトルの一部とか、大部分のブログサービスのドメインを登録しておいて、ライブドアブログは、こう判断するとかにするとか、力技を取らないと無理なのかなと考えていたので、何かいい方法がないかなと思っています。

2006/11/16 19:35:47
id:hamster009 No.3

hamster009回答回数3431ベストアンサー獲得回数502006/11/17 02:24:44

ポイント26pt

ふつうそういのは、アクセス集計サイトでは自動的になってますよ。スキルがないなら、(金を払って)サービスを利用すればいいのです。

id:dingding

その方法を質問してるのです。

アクセス集計をしたいのではないですし、その結果を使って処理をしていくので、外部サービスはNGです。

2006/11/17 12:22:37

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません