人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

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

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

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


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

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

●質問者: dingding
●カテゴリ:インターネット ウェブ制作
✍キーワード:JavaScript Myspace NG URL アイデア
○ 状態 :終了
└ 回答数 : 3/3件

▽最新の回答へ

1 ● katsube
●27ポイント

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

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

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/*

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

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

◎質問者からの返答

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

例:

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

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

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

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

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


2 ● katsube
●27ポイント

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

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

ですから、「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/*'"などと

記述する。

◎質問者からの返答

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

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


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

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

あるブログサイトでは、

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

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

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

別のサイトでは、

http://aaa.xxx.xxx/

http://bbb.xxx.xxx/

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

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

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

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

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


3 ● hamster009
●26ポイント

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

◎質問者からの返答

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

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

関連質問


●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ