管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || アンテナ || PUT || more≫ ≫omit
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage ||[edit]
category: WikiLab/WorkReport

WikiLab/WorkReport/AccessCounts - 邪魔なアクセスをカウントしないメモ。

LastModified : Sun Apr 2 01:04:16 2006
[管理]

邪魔なアクセスをカウントしないメモ。

ログ取りとロボ除外。

[TOP↑] [管理]

sbox では、LinuZau:WalWiki/カスタマイズ/ページ毎アクセスカウンタ をさらに改造して、

ようにしています。 その辺のお話はLinuZauSbox:雑談/2003年09月 のずーっと下の方。

spam 除外。

[TOP↑] [管理]

去年の暮れSpamFilterList を入れたので編集をされてしまうような実害はないんだけども、 ここ最近(2006/04/01(Sat) 現在)カウンタをグルグル回されていて大変うっとうしい。

連日来ている spam のログを見ると、「編集画面から FrontPage に戻る」という挙動をしているので、

  1. $form{mypage}FrontPage で、
  2. $ENV{'HTTP_ACCEPT_LANGUAGE'} に http://jm.vis.ne.jp/sbox/index.cgi?mycmd=edit か mycmd=adminedit が含まれていたら

カウントしない、ってことにしたらどうだろう、と思いました#1

でも、「条件が二つ」の書き方がよく解んなかったので、丸投げ toward AsO さん。

#AsO add start
sub is_robot_ua
{
    my $hogelog = 'WalWiki/data/hoge.log';

    # reject robots
    if($ENV{'HTTP_USER_AGENT'} =~ /(Googlebot)|中略|(NaverRobot)/){
        my $hitbot = $1;
        open  OUT, ">>$hogelog";
        print OUT "@{[&get_now]}\t$ENV{REMOTE_ADDR}\t$ENV{'HTTP_USER_AGENT'}\t$ENV{'HTTP_REFERER'}\t$form{mypage}\n";
        close OUT;
        return $hitbot;
    }
    return 0;    # Not robot
}

sub is_from_edit
{
    my $hogelog2 = 'WalWiki/data/hoge2.log';
    # reject unknown
    if($ENV{HTTP_REFERER} =~ /^\Q$modifier_rss_link?mycmd=\E(admin)?edit/){
        if($form{mypage} eq $FrontPage) {
            open  OUT, ">>$hogelog2";
            print OUT "@{[&get_now]}\t$ENV{REMOTE_ADDR}\t$ENV{'HTTP_USER_AGENT'}\t$ENV{'HTTP_REFERER'}\t$form{mypage}\t$ENV{'HTTP_ACCEPT_LANGUAGE'}\n";
            close OUT;
            return 1;
        }
    }
    return 0;
}
# AsO add end

# yakty add [page access counter] start
sub update_accesscounts
{
    return if(&is_robot_ua());    # AsO add
    return if(&is_from_edit());   # AsO add
    return if(&valid_password($form{mypassword}));
    return unless(&is_exist_page($form{mypage}) or $fixedpage{$form{mypage}});

なぜか is_robot_ua() が巧く動いていなかった件。

[TOP↑] [管理]

なんでかよく解んないけど、ロボットがロボ用ログと通常のログの両方に記録されてしまうので、元の # reject robots を戻して return if(&is_robot_ua()); をコメントアウト。

で、今こんな。

[TOP↑] [管理]
# AsO add start
sub is_from_edit
{
    my $spamlog = 'WalWiki/data/spam.log';
    # reject unknown
    if($ENV{HTTP_REFERER} =~ /^\Q$modifier_rss_link?mycmd=\E(admin)?edit/){
        if($form{mypage} eq $FrontPage) {
            open  OUT, ">>$spamlog";
            print OUT "@{[&get_now]}\t$ENV{REMOTE_ADDR}\t$ENV{'HTTP_USER_AGENT'}\t$ENV{'HTTP_REFERER'}\t$form{mypage}\t$ENV{'HTTP_ACCEPT_LANGUAGE'}\n";
            close OUT;
            return 1;
        }
    }
    return 0;
}
# AsO add end
# yakty add [page access counter] start
sub update_accesscounts
{
    # reject robots
    if($ENV{'HTTP_USER_AGENT'} =~ /(http:\/\/)|(crawler)|(bot)|(robot)|(antenna)|(archiver)|(bookmark)|(Teoma)|(ichiro)|(HTTP::Lite)/i){
        open  OUT, ">>WalWiki/data/bot.log";
        print OUT "@{[&get_now]}\t$ENV{REMOTE_ADDR}\t$ENV{'HTTP_USER_AGENT'}\t$ENV{'HTTP_REFERER'}\t$form{mypage}\n";
        close OUT;
        return;
    }
    elsif($ENV{REMOTE_ADDR} =~ /(124\.87\.239\.228)|(125\.200\.98\.109)|(220\.111\.151\.99)|(210\.170\.235\.156)/) {
        open  OUT, ">>WalWiki/data/bot.log";
        print OUT "@{[&get_now]}\t$ENV{REMOTE_ADDR}\t$ENV{'HTTP_USER_AGENT'}\t$ENV{'HTTP_REFERER'}\t$form{mypage}\n";
        close OUT;
        return;
    }

    return if(&is_from_edit());    # add AsO
    return if(&valid_password($form{mypassword}));
    return unless(&is_exist_page($form{mypage}) or $fixedpage{$form{mypage}});
---------- (中略) ----------
    # today's count
    my $datetime = &get_now;
    $datetime =~ /^(\d\d\d\d\/\d\d\/\d\d)/;

    open  OUT, ">>WalWiki/data/log.cgi";
    print OUT "$datetime\t$ENV{REMOTE_ADDR}\t$ENV{'HTTP_USER_AGENT'}\t$ENV{'HTTP_REFERER'}\t$form{mypage}\t$ENV{'HTTP_ACCEPT_LANGUAGE'}\n";
    close OUT;
shortcut: FrontPage || WikiLab | StoreRoom/最新 | 日々の泡 | むず痒いパソコン日記/最新 || HelpPage || [edit]
select css: default | sakura | mono | greenheck | snow | NN4.x用(多分) || LinuZau!! | VikiWiki!? || others |

管理 | 差分 || 新規作成 || カテゴリ一覧 | ページ一覧 | 更新履歴 | 差分履歴 || PUT