忘れっぽくなった中年おじさんの備忘録

おじさんの個人的な備忘録です。ブログとして公開していますが、可読性がない時も多いです。まあ、まったく誰にも見られない個人用だと長続きしないので、ブログとしてメモに残してます。

ユーザーアクセスの簡易判定

time 2016/08/24

ユーザーアクセスの簡易判定

Webサイトにカウンターを設置したり、ユーザーエージェント(ブラウザ)などで条件分けして、表示項目や処理内容を変更したい時がある。

特に、クローラーアクセスは、大手から個人作成のボットまでいろいろとあるが、その識別はなかなか難しい。

そこで、ユーザーエージェントを識別してやるには、PHP関数のget_browserを使うのだが・・・・

この関数を使うには、

まず、Browser Capabilities Projectからbrowscap.iniをダウンロードして適当な場所に保存し、

php.ini の browscap設定の項目に「browscap.iniのフルパス」を指定して、Webサーバーを再起動しなければならない。

しかも、php.ini の browscap項目は、PHP_INI_SYSTEMモードなので、php.ini または httpd.confでしか設定できない。

なので、大概の安価な共有ホスティングサービスでは使えないことも多い。

GitHubにある、browscap-phpを使えば、上記のような設定をしなくてもbrowscap.iniを使ってユーザーエージェントを識別できるようになるらしい。

でも、おじさんには結構面倒だ。

なので、インターネットに何かないかと探したら、皆さん、browscap.iniがなくても、わりと簡単に、PHPでユーザーエージェント識別していることが分かった。

精度はともかく、結構、簡単。

PHPのスーパーグローバル変数である$_SERVER[‘HTTP_USER_AGENT’]をそのまま使って、正規表現とif文やswitch文でブラウザやデバイスを簡便に識別しているようだ。

例えば、検索エンジンのクローラーならこんな感じ。

配列$crawler_arrで設定した文字列 と $_SERVER[‘HTTP_USER_AGENT’]の文字列を比較して判定するだけ。

完全ではないけど、そこそこクローラーを識別できるんじゃないだろうか?

この配列$arrの中身を、iPhoneやiPad、iPod、Androidなどに置き換えれば、モバイル系のスマートフォンやタブレットからのアクセスであることがわかる。

まあ、判定条件を細かくすれば、精度はかなり良くなるみたいだが、

ユーザーデバイス毎(PCとモバイルの区別)による表示サイズや項目並びの変更などであれば、この程度で十分かもしれない。

down

コメントする




このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください

未分類

最近のコメント