Prodused by SAKI

This site is a personal works of "SAKI".
I hope there will be a much of fun contents and funny dreams.
Of coursse that is a future occurrence.
The Watchword is "Picture Yourself".

Count:17054(0/0)Bot:203959(22/74)
TOP>開発>SxCnt

Attention!! Your Access is doubtful of Bot or Crawler.
 当サイトは日本国内からの正当なアクセスがなされることを前提にページを作成しています。
 BOTによるアクセスであると判断した場合は、画像や書庫ファイル、スタイルシートなどを廃した"情報"のみが表示されます。
 もし、そういった心当たりのない方でこのメッセージが表示された場合は、クッキーが保存されない、ユーザーエージェントにBOTを連想させる文字列が含まれている、海外Ploxy経由などの可能性があります。
 できましたら、正当な環境にてアクセスされますようお願いいたします。
 なお、ご不明な点や、どうしても現在の環境でのアクセスをご希望される場合は、メールフォームにて相談して頂ければ善処させていただきたいと思います。

TOP PAGE
サイトトップに戻ります

BLOG PAGE
ブログ(日記)です

はじめに
このサイトの紹介です

更新履歴
このサイトの更新履歴です

掲示板
足跡を残してくれると嬉しい

らくがき帳
お絵かき掲示板

詩・志・姿・思
ポエムなページです

小説おき場
いくつかの物語

投稿コーナー
言葉の投稿場所です

GALLERY
展示物おき場です

用語集
用語集(辞書)です

開発コーナー
自作スクリプトなど

リンク
他サイトへのリンクページです

INDEX
入口ページに戻ります

処理時間 0.489239秒

開発のページ

=======================================
アクセスカウンタ&アクセス解析「sxCnt」
  ver 1.42
Last UpDated 2010.2.11
bv SAKI
URL http://bv.saki-net.com
=======================================

機能と特徴:-------------



 PHPによって構成されたWebサイトにアクセスカウンタの機能を追加するとともに、簡単なアクセス解析を行います。
(レンタルサーバーやレンタルブログ等が用意している同種のシステムみたいに大したものではありません)

1 各種検索サイトによるBOT(Clawrer)を含むいわゆる人間以外からと思われるアクセス(以下BOT)を判定します。
2 アクセスカウンターを提供します(BOTとそれ以外のそれぞれでカウント)

3 BOTからのアクセスであった場合、画像や書庫ファイルへのアクセスを制限するための機能(関数)を提供します。

4 管理画面は携帯対応です。(パスワードをクッキーに保存できないキャリア~DoCoMo等~は除外)

5 「ランキング」 サイト(同ドメイン)内の複数のページに対し、そのページの閲覧回数をランキング表示します。

6 「各種グラフ」 時間帯別・曜日別・日別・ブラウザ別・直前のURL(ドメイン)別のそれぞれで、通常およびBOTからのアクセス数をグラフで表示します

7 「アクセスログ」 各種絞込みに対応した履歴表示が可能です。

8 クッキーが保存されるアクセス元に対し、連番によるIDを割り当てます。

9 特定のIDに対してエイリアス(別名)を設定することができます。


AD85.94.160.0/19
AD91.187.64.0/19
  ……
JP202.78.208.0/20
JP202.78.248.0/23
  ……
US135.184.0.0/13
US135.192.0.0/14


注:2桁の国コードとcidr形式のIPとの間のセパレータは¥t(タブコード)です。

(2)sxcnt_config.php の変更
 初期設定ファイルであるsxcnt_config.phpを各自の環境に従って書き換えます。特に必要な箇所のみ記載します。その他については、sxcnt_config.phpでの記述を参考にしてください。

// 管理者ユーザーID(必ず変更のこと)
define("SXCNTUSER","user");
// 管理者パスワード(必ず変更のこと)
define("SXCNTPASS","1111");

// 現在のホストURL。直前のURLとの比較に使用(前方一致)
define("SXCNTHOSTURL",'http://'.trim($HTTP_SERVER['HTTP_HOST']).'/');
// ホームに戻るリンク先("http://~"あるいはドキュメントルートの場合"/"でも可)
define("SXCNTHOME",'/');

// 国別IPリストファイル名2(cidr形式の国別ファイル"(2桁の国コード)(TAB)xxx.xxx.xxx.0/xx"で記述)
// 通常は上の国別リストファイル1で判定を行い、リスト1に存在しないor古い場合にこのリスト2を使用
// もっとも信頼できる元データ。各自なんらかの手段で入手作成してください
// NULL("")の場合、このリストファイルを使用しません
//define("SXCNTCIDRLIST","");
define("SXCNTCIDRLIST","sxcnt_cidr.txt");

// 挙動不審アクセス感知用スクリプトファイル名
// 見えないはずのリンクにアクセスする挙動不審なIPを挙動不審IPリストに追加します。
// 「index.php」である必要はありません。
define("SXCNTTRAPPHP","top.php");

注:スクリプトと同じフォルダに存在する必要があります。「index.php」にしたのは、その方がBOTがひっかかりやすいと思っただけで、他の名前でも構いません。
注:ver1.41にてこの感知用スクリプトをindex.phpからtop.phpに変更しました。BlognPlusで使用した場合に、なぜか勝手にアクセスしてしまい、挙動不審リストにリストアップされてしまうケースがあったためですが、原因については不明です。(もしやウイルスバスターの悪戯?)

(3)設置するサイトからの呼び出し方法の設定

 このスクリプトは、phpによって構成され、それぞれ同じ(サブ)ドメインにあるページからの呼び出しを想定しています。

  一般的な構成
  [http://aaa.bbb.ne.jp/]
    +[sxcnt]……sxCntのあるディレクトリ
    +[dir1]
      +page1.php
      +page2.php
    +[dir2]
      +page3.php
    +index.php
    +page4.php

 あまり整理されていませんが、index.phpがトップページで、page◆.phpが各コンテンツのページだったとします。

  各ページの記述方法は人それぞれですが、以下の2つの場合で説明します。

  例1 各ページの記述で、実際にはphpを使わずhtmlだけの場合

そのページのタイトルが「○○のページ」だっとします。

------------------------file top
<html>
……
<head>
……
<title>○○のページ</title>
</head>
<body>
……
</body>
</html>
------------------------file end

    ↓↓↓

------------------------file top
<?php
  include("/sxcnt/sxcnt1.php");
  $sxCntTitle = "○○のページ";
  include("/sxcnt/sxcnt2.php");
?>

<html>
……
<head>
……
<title>○○のページ</title>
</head>
<body>
<?php echo $sxCntTotal; ?>
……
</body>
</html>
------------------------file end


 つまり、ページファイルの最初にsxCntを呼び出す部分を記述し、カウンタを表示させたい箇所で必要な変数を出力(echo)させてやります。なお、カウンタ関係の出力用変数は他にもありますので、sxcnt1.phpの「最終変数一覧」を参考にして各自使用してください。

 また、$sxCntTitleにページ識別のためのタイトル文字列を格納してsxcnt2phpを呼び出すことで、アクセス履歴にタイトルも同時に保存され、管理画面等でのランキングに反映されます。
 なお、$sxCntTitleの最後が"-"(ハイフン)であった場合は、ログに記録されるものの、ランキングには反映されないようになります。メニューページと実際のコンテンツページとでランキングに反映する/しないを分けることができます。

 もし$sxCntTitleが定義されていない、あるいは空文字列であった場合は、便宜的にアクセスされたリモートアドレス("dir1/page2.php"とか)がタイトルの代わりに使用されます。

  例2 各ページの記述がphpによって生成され、最後にecho等で出力される場合

そのページのタイトルが$Titleに格納されているとします。

------------------------file top
<?php
……
$Title = "○○のページ";
……
//html出力
echo $Buff;
?>
------------------------file end

    ↓↓↓

------------------------file top
<?php
  include("/sxcnt/sxcnt1.php");
……
$Title = "○○のページ";
……
  $sxCntTitle = $Title;
  include("/sxcnt/sxcnt2.php");

  $Buff = str_replace('{cntToday}',$sxCntTday,$Buff);
  $Buff = str_replace('{cntTotal}',$sxCntTotal,$Buff);

//html出力
echo $Buff;
?>
------------------------file end


 html出力用変数には、あらかじめカウンタを記述する場所に{cntToday}などといった目印をつけておき、実際の出力の直前に変数の値と置換させてやります。この場合{cntToday}や{cntTotal}は置換関数が識別するための記号なので、他と区別さえつけば何であっても構いません。(例 "<今日のカウンタ>"、"<全体のカウンタ>")

(補足)管理者によるアクセス
 もしサイト自体が、管理者ログイン機能を有していた場合、アクセスログに管理者による履歴を残したくないときがあります。その場合、ログインした状態を変数($sxCntAdmin)に格納してからsxcnt2.phpを呼び出すことで、管理者のログイン履歴を残さないようにできます。


  $sxCntAdmin = "ADMIN";
  include("/sxcnt/sxcnt2.php");


 かならず"ADMIN"をセットしてください。

(4)挙動不審アクセスへの対応
 sxCntはユーザーエージェントやクッキー保持、海外アクセスなどによるBOT判定機能を有していますが、それぞれ偽装されたりとかで、全てのBOTを検出できるわけではありません。
 明示的に判定が難しいものの、あきらかにおかしいアクセスがあった場合、それを挙動不審IPとしてリスト化し、一定期間内において同一のIPやUAに対してBOT判定を下します。

 挙動不審IPリストは管理画面によって追加編集できますが、以下の方法で自動的にリストアップ(追加)されます。

「sxCntの同一フォルダ内のindex.phpへのアクセス」

 たとえば、各ページの最後の方に、通常(人手による)では見えない形でこのindex.phpへのリンクを記述しておくことで、その見えないリンクをたどるのはBOTに違いない、と挙動不審IPリストに追加されることになります。



<a href="/sxcnt/index.php"></a>



管理画面:--------------



[PIC]
 管理画面は直接「sxcnt_analyze.php」にアクセスして開きます。
(サイトへの埋め込みモードに対応する予定でしたが、管理画面へのアクセス履歴までログに残していくと難しい問題が生じるので未実装です)


  「ランキング」……タイトルごとのアクセス数をランキング表示します
[PIC]

表示対象期間を選択できます。
[PIC]


  「グラフ」…………各種グラフを表示します
(最初は時間帯別)
[PIC]

(曜日別)
[PIC]

(日別の推移)
[PIC]

(ブラウザ別)
[PIC]

(直前のURL/ドメイン別)
[PIC]


  「ログ」……………アクセスログを表示します。
[PIC]

      各種絞込みができ、その結果を次の挙動不審IPリストまた、例外許可リス
      トに追加することもできます。
[PIC]

[PIC]

[PIC]

      ログの各行の先頭Noはそのアクセスの詳細表示を行います。直前のURLなど
      をURLデコードして表示するので、検索結果などからの場合に、その内容を
      確認することが可能です。(ver 1.3~追加)

  「不審IP」…………挙動不審IPリストを表示編集します。
[PIC]


  「許可IP」…………例外許可IPリストを表示編集します。
      これは、仮にBOT判定がでた場合でも、リストにある条件が一致していれば
      例外的にBOT判定を外すためのリストです。管理画面でのみ編集が可能です。
[PIC]


  「国IP」……………国別IPリストを表示編集します。
[PIC]

      アクセスのたびに判定された国コードとIPは自動的にリスト化され、次の
      アクセスの際の最初の国コード判定に使用されます。
      (毎回巨大なcidrリストや外部へのアクセスによる負担を軽減するため)
[PIC]

(手作業で削除/編集することも可能です)
[PIC]


  「IDリスト」………PCに割り振られたIDのリストを表示します。
[PIC]

      IDはアクセス元PCのクッキーに保存され、次のアクセスの際の識別に使用
      されます。このリストは新しいIDを割り振るときに同じIDにならないよう
      にするために参照されます。


  「エイリアス」……特定のIDに対してエイリアス(別名)を設定、表示します。
[PIC]

      ここで設定されたエイリアスはログやIDリストに反映されます。
      特にアクセス元が分かっている場合や、頻繁にアクセスがあるものの、BOT
      判定もなく、判断に困る場合にその履歴を追いかける場合など、主に識別
      (見易さ)のための機能です。

[PIC]

  「カウンタ」……現在のカウンタを表示および変更します
      今現在のカウンタの値が表示されます。
      また、それらカウンタの値を変更することができます。
      ただし、変更の際には、日付および保存したIPは初期化(現在の日付)されます。


  「HOME」……………sxcnt_config.phpで設定されたHPに戻ります。

(補足)その他に、各グラフやID、不審リストなどの結果から、同一のIPやUAをキーにしてログの絞込みをすることができます。

参考-BOT判定の仕様:--------------


(1)ユーザーエージェントにBOTを思わせる記述が含まれている
    "bot","http:","search","crawler"
(2)ユーザーエージェントあるいはリモートホストが空白
(3)挙動不審IPリストによる判定
      同一ID、同一IP、IPが空白で同一UA
(6)クッキーが保存されない
      (最初のアクセスに対してすべて一律にID=1を割り当てます)
      直前のアドレスがサイト内であるのにクッキーが未定義(=0)
      アクセスログに同一IP同一UAでの履歴があるのにクッキーが未定義(=0)

おまけ-BOTに対して:--------------


 個人的に、BOTによるアクセスはあまり好きにはなれません。自分のHPには、ちゃんとしたお客さんに来ていただきたいものです。
 とはいうものの、現実的に検索サイト等からのロボットを全て拒否することは、ネットの世界の中で離れ小島に引きこもるようなものです。
 というわけで、せめてもの抵抗と、遥かに通常アクセスよりも多いこういったアクセスに対して、借りているWebサーバーへの負担を軽減したいというのがsxCntの開発の動機になっています。

 なので、以下の機能が同軸されています。

 BOTか否かによって表示するHTMLを切り分けるためのタグと関数
 BOTであった場合に画像や書庫へのアクセスをさせないための、出力されるHTMLから画像などへのimgタグやaタグを削除する関数

 詳細は、sxcnt_common.phpの中を参照してください。
 また、使用するかどうかは各自の判断でお願いします。


更新履歴:--------------



2009.01.31 ver 1.0
    公開
2009.02.05 ver 1.0a
    カウンタのカウント条件を訂正
    NoCookieであった場合、過去のログにもNoCookieフラグを追加保存
2009.02.07 ver 1.0b
    カウンタでIP重複チェックを履歴(初期設定10件)によるものとした
2009.02.11 ver 1.1
    ランキングおよび各種グラフ用の保存ログを分離。アクセスログの保存日数を短くした。
    カウンタの変更機能を追加
2009.02.15 ver 1.2
    カウンタでIP重複チェック履歴のIP保存を修正
    スキンを微調整
    sxcnt_cidr.txtを同軸
2009.03.15 ver 1.3
    ログ詳細画面を追加
2009.08.05 ver 1.4
    バグ修正
2010.01.06 ver 1.41
    例外許可設定がBOTフラグに適用されていなかったのを修正
    挙動不審判定用スクリプトをindex.php→top.phpに変更
2010.02.11 ver 1.42
    「グラフ-日別」での表示期間が誤って設定されていたのを修正




Copyright © 2008 The Blue and Violet Storys All Rights Reserved.
当ページに掲載しているコンテンツの再利用(再転載・配布など)は、禁止しています。