Apacheのログからケータイの機種別アクセス数をカウントするコマンド
    このエントリをはてなブックマークに登録

Apacheのアクセスログから、携帯電話のユーザエージェントを抽出し、機種別のアクセス数を表示する1行コマンドを考えてみました。

正確な分析はアクセス解析ソフトに任せるとして、パッと機種別のアクセス数が知りたい場合に使えるかもしれません。

 

ドコモ用

$ perl -na -F/'(DoCoMo\/.\.0.*?)(\/c|\()'/ -e 'print $F[1]."\n"' access_log |grep -v "^$" |sort |uniq -c |sort -r

au用

$ perl -na -F/'(KDDI\-.*?)"'/ -e 'print $F[1]."\n"' access_log |grep -v "^$" |sort |uniq -c |sort -r

ソフトバンク用

$ perl -na -F/'((SoftBank|Vodafone|J\-PHONE|MOT\-)\/.*?)"'/ -e '$F[1] =~ s/SN([0-9]{15}|[0-9A-Z]{11})/\[ \/Serial\ ]/;print $F[1]."\n"' access_log |grep -v "^$" |sort |uniq -c |sort -r


*1 表示の都合上改行していますが、実際には1行で入力します。
*2 Apacheのログはcombined形式を前提としています。
*3 上記例ではApacheのログは「access_log」という名前としています。必要に応じて変更してください。
*4 auのHDML機は対象としていません

次のようにUAが抽出され、アクセス数順に並びます。
ketaicount.gif

また、パイプ以下を「|grep -v “^$” |sort -u」とすれば、アクセスのあった機種を、名前順にリストアップすることができます。
このリストをDBと比較するプログラムを作成し、ケータイスペック一覧ページの抜けチェックに利用しようと思います。

perlはあまり得意ではないので、もっと綺麗に書けそうな感じがします。。。
より良い書き方がありましたら、ご指摘をお願いします。


 

最近の記事







One Response to “Apacheのログからケータイの機種別アクセス数をカウントするコマンド”

  1. […] Apacheのログからケータイの機種別アクセス数をカウントするコマンド […]

コメントを書く