スポンサードリンク
useragentからできるだけ多くの情報を得たくなる時がありますよね・・・
WindowsのバージョンとかLinuxのディストリビューションとかAndroidの型番とかレンダリングエンジンとかCPUのアーキテクチャとか・・・
そこでnode.jsで使えるuseragentのパーサーを探すとhttps://github.com/faisalman/ua-parser-jsがありました!
かなりいろんなOSやデバイスやブラウザに対応してて最強感あります。
日本のガラケーとかsleipnirのような日本のブラウザに対応してないのは・・・しかたないですね
npm install ua-parser-jsで入ります。
1 2 3 4 |
var UAParser = require('ua-parser-js'); var parser = new UAParser(); var ua = request.headers['user-agent']; // HTTPヘッダよりUser agentを取得 console.log(parser.setUA(ua).getResult()); |
これでこんな感じに出力されます。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
{ ua: "元のUAの文字列", browser: { name: "ブラウザ名(ex.Chromium)", version: "バージョン(ex. 31.0.1650.63)", major: "メジャーバージョン(ex. 31)" }, engine: { name: "レンダリングエンジン(ex.WebKit)", version: "バージョン" }, os: { name: "OS(ex. Windows,Ubuntu,etc)", version: "バージョン(ex,7,Vista,12.10,)" }, device: { model: "製品名とか型番とか(PCとかならundefined)", type: "console とか mobile とか tablet", vendor: "メーカー(AppleとかHuaweiとか)" }, cpu: { architecture: "CPUのアーキテクチャ(ia32とかamd64とかarmとか他にもいろいろ)" } } |
すごく便利ですね!おそらくモバイル系デバイスだと思いますがメーカーまで出てくるのはすごい!
おそらくUA関係で調べたいことだいたい出てくると思います。
.getResult()関数以外にも.getOS()や.getBrowser()などの関数もあります。
例えば.getOS()すると{name:’名前’,version:’バージョン’}とgetResult()の一部分が出てきます。
───おまけ───
当初、このua-parser-jsの存在を知らずに思いっきり車輪の再発明をしてしまいました。
https://gist.github.com/nakayuki805/9781696
かなり荒削りであまり目にすることのない端末の処理はやっつけですが一応iOS/PCのsleipnirと日本のガラケーを認識します。
それにしてもif地獄・・・全然スマートじゃないな・・・(^_^;)
unknown配列とか何がなんやら
スポンサードリンク