AMI(趣味:手芸)サトー(趣味:イラスト) の二人が運営する趣味の創作ブログです。

2013年01月17日

ランキング 不正防止

ランキング不正防止
[戻る] みぃ 2002/11/10/(Sun) 13:40:22
はじめまして。 Yomi-Search Ver4.19を使用しています。

アクセスランキングを開催しているのですが、
不正サイトっぽいのが多いので制限をかけたいと思います。
TOPIC:1332 http://yomi.pekori.to/bbs/hyperbbs.cgi?mode=view;Code=1332の
> HTTP_REFERER が登録URLに含まれない場合、ランキングポイントを加算しない
方法というのをお教えください。 宜しくお願いします。
_k 2002/11/10/(Sun) 15:49:11
> はじめまして。 Yomi-Search Ver4.19を使用しています。
>
> アクセスランキングを開催しているのですが、
> 不正サイトっぽいのが多いので制限をかけたいと思います。
> TOPIC:1332 http://yomi.pekori.to/bbs/hyperbbs.cgi?mode=view;Code=1332の
> > HTTP_REFERER が登録URLに含まれない場合、ランキングポイントを加算しない
> 方法というのをお教えください。 宜しくお願いします。

指定HTTP_REFERERをはじけばいいでしょう。
勝手に作成できるから、HTTP_REFERERはアテニなりません。

みぃ 2002/11/10/(Sun) 17:18:54
_kさん お答え有難う御座いました。

No.1332-4 住 さん 発言の
>2.IN直前のURL(HTTP_REFERER)が、指定IDの登録URLを含まない時、
> ランキングポイントに加算しない。
というようにしたいのです。

指定HTTP_REFERERをはじくというのは、
オリジナル rank.cgi 203行目
if(!$ENV{'HTTP_REFERER'}){$fl=1;} #refererが無いときにカウントしない場合にはこの行を削除

この行を削除するという事でしょうか?
住 [HomePage] 2002/11/11/(Mon) 21:17:40
みぃさん、こんばんは。

まず、#{1332} でも、ながながと書き込んだのですが、多分、
アクセスランキングはいま、まともに 運用されていて、そのような改造を行ったとしても、効果があるかどうかはかなり疑問があります。それに、自分のサイトのアクセス数が伸びるわけなので、 せっせとみぃさんのサイトにアクセスしてくれている人をきちんとカウントしてあげるというのも、アクセスランキング開催者としては配慮すべきなんじゃない かと思います。


とはいえ、改造という点では、私も少し興味がありますので、
以下のようなスクリプトを作ってみました。
まず、指定IDの登録URLがHTTP_REFERERに含まれるかチェックする
r_link_check_referer
という関数を追加します。
アクセスランキングを受けつけるのは、rank.cgiの r_link 関数ですから
この中で、追加した関数を呼ぶようにしてOKの場合のみカウントするよう
にしてみました。

予測される登録URLのあり方からして、URLではなくホスト名くらいの
一致を見たほうが、良いような感じがするので条件を若干甘くして現在
ホスト名の一致を見ています。

例)
URL = http://(ホスト名)/index.html
この場合、$urlで比較すると、このURLのページからジャンプした場合のみ
ランキングポイントがカウントされます。ホスト名の場合、その下層コン
テンツからのジャンプもカウントされます。

rank.cgi の内容を下記のように変更する。


sub r_link{
#(2.1)アクセスジャンプ処理(&r_link)
if($EST{rev_fl}){
$FORM{id}=~s/\D//g;
if($FORM{id}){
if (&r_link_check_referer($FORM{id})) {
local($fl=0,@ref_list);
$FORM{id}=~s/\n//g;
&lock_rev();
open(OUT,">>$EST{log_path}rev_temp.cgi");
print OUT "$FORM{id}<>" . time() . "<>$ENV{'REMOTE_ADDR'}\n";
close(OUT);
&unlock_rev();
}
}
}
$EST{location}=0; #refreshジャンプにする
&location($EST{rev_url});
}


# r_link の referer が指定IDのURLを含むかチェックする。
# $ENV{'HTTP_REFERER'}を利用する。ただ、チェックが厳しすぎるてほとんど
# はねられるサイトも有得るので、指定URLのホストを含めばよいものとする。
# ※urlのままだと、index.htmlやyomi.cgiまで登録URLに含めるとそのページ
# しか r_link が機能しなくなる。
sub r_link_check_referer { # ([0]=id)
local($check_id=$_[0], @Slog, $line, $fl=0, $id, $title, $url, $host);
open(IN,"$EST{log_path}$EST{logfile}");
while($line=<IN>) {
($id, $title, $url)=split(/<>/,$line);
$url =~ /http:\/\/([\w\.\-]+)\/(.+)/;
$host = $1;
if ($id == $check_id) {
# URLで比較する場合の条件文。
# if (index($ENV{'HTTP_REFERER'},$host)>=0) {
# ホスト名で比較する場合の条件文。
if (index($ENV{'HTTP_REFERER'},$host)>=0) {
$fl=1;
}
}
}
close(IN);
return$fl;
}


参考になさってみてください。
住 [HomePage] 2002/11/11/(Mon) 21:21:21
下の書き込みで、

# URLで比較する場合の条件文。
# if (index($ENV{'HTTP_REFERER'},$host)>=0) {

は、間違いで
# URLで比較する場合の条件文。
# if (index($ENV{'HTTP_REFERER'},$url)>=0) {

が正しいです。
みぃ 2002/11/11/(Mon) 23:23:36
住さん、本当に有難う御座いました。
早速 rank.cgi に追加しました。
様子をみて後日報告しますね。

出展元


■
サトー
posted at 00:17

2012年10月20日

2012年07月26日

2012年06月09日

2012年01月20日

2012年01月07日

2011年10月28日

2011年10月22日

2011年10月16日

2011年10月10日

2011年09月27日

2011年09月24日

2010年10月30日

2010年10月27日

2010年08月16日

2010年07月18日

2010年07月14日

2010年07月09日

2010年07月05日

2010年07月04日

2010年06月25日

2010年06月23日

2010年06月20日

2010年06月09日

2010年06月07日

2010年06月02日

2010年06月01日

2010年05月29日