CGI-BBS > アクセスカウンタ > その他 > ログアナライザ・自分をカウントしないようにしたい


カレッヂ
カレッヂ


質問者 大三元  投稿日 3/28(水) 01:04:15
ログアナライザを使わせて頂いてます。自分のアクセスをカウントしたり解析したりしないようにするにはどうしたら良いのでしょうか。
回答者 羊相談員  [削除]  投稿日 3/28(水) 17:12:12
インターネットでは個人を識別する手段が存在しないため
厳密には不可能です。

アクセスポイントやIPアドレスを調べて
自分のと似ていたらカウントしない、という処理なら可能ですが。
質問者 大三元  [削除]  投稿日 3/28(水) 17:14:35
あ、IPアドレスの指定方式で結構です、カウント・解析から外したいアドレスは固定なんです
回答者 羊相談員  [削除]  投稿日 3/29(木) 10:14:59
うちのログアナライザカウンタが2ずつ増えてるんですけどどうして?

そんな事はどうでもいいのでその話は置いといて、

if (open(LOG,">> $log")) {

        print LOG "$HOUR\t$HTTP_REFERER\t$REMOTE_HOST\t$HTTP_USER_AGENT\t$OS\n";
        close(LOG);

        chmod 0666,$log;
}

if (open(LOG,">> $log_file")) {

        print LOG "\n";
        close(LOG);
}

上記の処理を

if($REMOTE_ADDR eq '127.0.1.1'){ ; }
elsif (open(LOG,">> $log")) {

        print LOG "$HOUR\t$HTTP_REFERER\t$REMOTE_HOST\t$HTTP_USER_AGENT\t$OS\n";
        close(LOG);

        chmod 0666,$log;
}

if($REMOTE_ADDR eq '127.0.1.1'){ ; }
elsif (open(LOG,">> $log_file")) {

        print LOG "\n";
        close(LOG);
}

に変えるとうまくいくと思います。
'127.0.1.1'の部分は自分のIPに合わせて変更してください。
質問者 大三元  [削除]  投稿日 3/29(木) 10:18:13
あ、有り難う御座います。今夜試してみます。とりいそぎ。
回答者 羊相談員  [削除]  投稿日 3/29(木) 10:50:59
すみません。
ログアナライザとウェブアナライザを間違えていたみたいです。

ログアナライザだとlog.cgiではなくlog.plになり、
if(open(LOG,">> $log_file")){
(中略)
}
↑の処理がないです。


つまり、
if (open(LOG,">> $log")) {
(中略)
}
↑の部分の改造だけで良くなります。
質問者 大三元  [削除]  投稿日 3/29(木) 11:00:34
ありがとうございました。ちょいと仕事さぼって修正して、アップして、試してみました。自分のカウントと解析をしなくなったようです。お見事! m(_@_)m
質問者 大三元  [削除]  投稿日 4/8(日) 15:42:49
ご教示頂いて自分をカウントしないようにしてたのですが、
カウントしないIPアドレスの表記に * はつかえるでしょうか?
実はやってみたけどうまく行かなかったので、お尋ねします。
(1) xxx.yyy.zzz.***   というのと
(2) xxx.yyy.zzz       というのをやってみましたが。

回答者 羊相談員  [削除]  投稿日 4/9(月) 21:46:25
例:150.213.45.*の場合
if($REMOTE_ADDR =~ /^150\.213\.45\..*/)

/ではなく"でもいけます。

if($REMOTE_ADDR =~ "^150\.213\.45\..*")

"ではなく他の記号でいける場合もあります。
質問者 大三元  [削除]  投稿日 4/9(月) 21:58:02
有り難う御座いました。早速やってみました。" "でよさそうです。
けったいな(失礼!)マークが入るんですねぇ。。。
¥はエスケープシーケンスで半角での誤動作防止ですよね?
普通の数字でも必要なんですね。それから 最後の所はドットが2つ なんてのも
気が付きませんねぇ。基礎から勉強しないと・・・(^_^;;)
質問者 大三元  [削除]  投稿日 4/10(火) 10:07:38
うまく行ったと思ったら、なんのことはない、指定アドレスのみならず、全然カウント・分析しなくなってました。(^_^;;) スクリプトの現状を下記します。

#if($REMOTE_ADDR eq '211.19.225.151'){ ; } #自分のIPアドレスをカウントしない
if($REMOTE_ADDR =~ "^211\.19\.225\..*"){ ; }
elsif (open(LOG,">> $log")) {

前に教えて頂いて一行目で使ってました。
今回教えて頂いた二行目を使うと全然カウントしない、のです。
二行目の最後の { ; } は勝手に入れてみたものです。


回答者 羊相談員  [削除]  投稿日 4/11(水) 11:42:21
>¥はエスケープシーケンスで半角での誤動作防止ですよね?
>普通の数字でも必要なんですね。

\は.をエスケープするために使っています。
.は正規表現中では「任意の1文字」という意味になるので
正規表現中で.を表すために\.とエスケープしています。

>それから 最後の所はドットが2つ なんてのも
>気が付きませんねぇ。基礎から勉強しないと・・・(^_^;;)

前の.と後の.では意味が違います。
前の.は\でエスケープされているため.を
前の.は\でエスケープされていないため「任意の1文字」を意味します。


>#if($REMOTE_ADDR eq '211.19.225.151'){ ; } #自分のIPアドレスをカウントしない
>if($REMOTE_ADDR =~ "^211\.19\.225\..*"){ ; }
>elsif (open(LOG,">> $log")) {
>前に教えて頂いて一行目で使ってました。
>今回教えて頂いた二行目を使うと全然カウントしない、のです。
>二行目の最後の { ; } は勝手に入れてみたものです。

結果は同じかもしれませんが
if($REMOTE_ADDR =~ "^211\.19\.225\."){ ; }
でどうでしょうか。

質問者 大三元  [削除]  投稿日 4/11(水) 13:29:56
度々有り難う御座います。¥の使い方、少し判りました。
お示し頂いた一行で良いようです。自分はカウントしない、他人のはカウント・分析しています。(だめなら /......./  を "......." や '......' で試そうかと思ってましたが、頂いたもののコピペでOKのようです。)
質問者 大三元  [削除]  投稿日 7/16(月) 16:11:22
一連のご指導を頂いて実用上、自分を解析しないように出来ていました。最近、プロバイダーの移転があって、IPが変わって、自分をカウント・解析してしまいます。以前のご指導を応用して書き換えてみているのですが・・・
新しいIPアドレスはケーブルモデムとしては 11.222.333.444 のように普通なのですが、log.pl 上に、そう書いてもカウントしてしまう。一方ログには c333.444.xxx.ne.jp と表示されています。(ここの 333.444 は上の 333.444 に相当するもの)
シングル・クオート、ダブル・クオート、エスケープなど色んな組み合わせをやってみたつもりですが、お手上げになりました。ご指導賜りたく。 
質問者 大三元  [削除]  投稿日 7/28(土) 00:55:24
友人にも相談していたら

if($REMOTE_ADDR =~ "c33.444.xxx.ne.jp"){ ; } の
REMOTE_ADDR を REMOTE_HOST にしてみたら、というのでやってみたら
一発解決でした。どなたかのご参考にでもなれば・・・

返信(回答)する


Web裏技