{"_id":"ua-parser","_rev":"43-91cf561f28c6e8d2ec5cfee2cb94c4f5","name":"ua-parser","description":"A port of Browserscope's user agent parser.","dist-tags":{"latest":"0.3.5"},"versions":{"0.1.0":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"index","version":"0.1.0","author":{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},"repository":{"type":"git","url":"http://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"http://github.com/tobie/ua-parser/raw/master/LICENSE"}],"_id":"ua-parser@0.1.0","engines":{"node":"*"},"_nodeSupported":true,"_npmVersion":"0.2.7-2","_nodeVersion":"v0.3.1-pre","dist":{"tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.1.0.tgz","shasum":"769229629f3af451c49c3218d47f3b24c7321b65","integrity":"sha512-2dsF0jWc0qGlxoQVQDCo4CIXMdH7jQtEs0KIZ3l4UpNPwpVUp4ZveIwUCr1XSPWOsuUGRAEy1hcAHtqT9F8DJA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQD19FOIb6TglpUDM/88Jvi9hJoW0KhoVuxZl8DiMEs5owIhAI4PiK+AoXlGpwv9TXo9QhOe3vt6RPD6Glgjw8dztY9B"}]},"directories":{}},"0.1.1":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"index.js","version":"0.1.1","maintainers":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"}],"repository":{"type":"git","url":"git://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"http://github.com/tobie/ua-parser/raw/master/LICENSE"}],"_id":"ua-parser@0.1.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"6a4366745c9df10d4fdd67f4bf3d51aee0300fe9","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.1.1.tgz","integrity":"sha512-X5Uu54IH6sZzSFL0Hv7J+ccDNkiuApNDLvwZF5PH0iJkiiUcECHXEc0VCuLn8Wg6WWoxfZiVl877JabuQf06bg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIGiUK98dTqaNDPZ3rYSdAoRdGSFTMEtlneHJ6C/pgH7/AiAYkfEo8NJt1f8e6YhD+ZkfzK6/Nkozho4M1WmE8MU8Ug=="}]},"scripts":{},"directories":{}},"0.2.0":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"index.js","version":"0.2.0","maintainers":[{"name":"tobie","email":"tobie.langel@gmail.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"}],"repository":{"type":"git","url":"git://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"http://github.com/tobie/ua-parser/raw/master/LICENSE"}],"_id":"ua-parser@0.2.0","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"2aea92eff7c1974f4fd189493107304793565eac","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.2.0.tgz","integrity":"sha512-ebcsJ2g1GpXhUTb4O+dy3oFpHB7Ko1xU4tv/l6iUOQDa8mRxnSHUcU4rR97M7l60qDRiOdmF3c83mlDP4ne39Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIG23jcwicpH95myvm3c3y8nwP8813y97GRW3aUHItUKbAiEAwRa+L0X9FST2vHgm/2q91zTo5uMhsbQvZOQw42xSoyA="}]},"scripts":{},"directories":{}},"0.2.1":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"index.js","version":"0.2.1","maintainers":[{"name":"tobie","email":"tobie.langel@gmail.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"}],"repository":{"type":"git","url":"git://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"http://github.com/tobie/ua-parser/raw/master/LICENSE"}],"scripts":{"update":"update.js"},"_id":"ua-parser@0.2.1","dependencies":{},"devDependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"9c0830daf4c72c4e57120903dd47c5ee984a619e","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.2.1.tgz","integrity":"sha512-J8s2lZHqtNrcX5sfpEr+3H7aP9ntrH7LOdu26rGN8ttvs4K+wPU0odeeBOP98zZhf6YyxJS94Q5lLc+23IZ+dQ==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQD6IZ4EMqKu0lnXZPhhPbvd/u4ByDiZVp0W1ybtnMpKFAIgVeaXQGKl2Tzx5nyo8Dbiidnw98xfzQlE9YcodnfUuvw="}]},"directories":{}},"0.2.3":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"index.js","version":"0.2.3","maintainers":[{"name":"tobie","email":"tobie.langel@gmail.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"}],"repository":{"type":"git","url":"git://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"http://github.com/tobie/ua-parser/raw/master/LICENSE"}],"scripts":{"update":"update.js"},"devDependencies":{"yamlparser":">=0.0.2"},"_id":"ua-parser@0.2.3","dependencies":{},"engines":{"node":"*"},"_engineSupported":true,"_npmVersion":"1.0.8","_nodeVersion":"v0.5.0-pre","_defaultsLoaded":true,"dist":{"shasum":"01e82c802db32f84e42531c799d12d9df1a28a42","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.2.3.tgz","integrity":"sha512-cBZ2S/R5pCCYfat0jhKDynWmlsO5PF24t1dJy3PAffPEFxa4l1th3fgVN8we3vJhxQagPXLbKtMQ52UR0D0p/g==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDew5txAoMFy+kh5c3K4TnIhg+GETWfeG7AgJvZs5nyVAIhAJS8HfaVWv3Ke4whsELoL3/FKyNKCLbNvlBfdC6f9iOj"}]},"directories":{}},"0.2.4":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"./js/index","version":"0.2.4","maintainers":[{"name":"tobie","email":"tobie.langel@gmail.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"},{"name":"Dave Olsen","email":"dmolsen@gmail.com","url":"http://dmolsen.com"}],"repository":{"type":"git","url":"http://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"},{"type":"Apache-2.0","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"}],"dependencies":{"yamlparser":">=0.0.2"},"_id":"ua-parser@0.2.4","dist":{"shasum":"c25ef577be95350d0fe1d3361597282da4e9ba71","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.2.4.tgz","integrity":"sha512-hh9Fken+56vnErc1K1SH3IB9SfyDyPUStqtwu2JKQC9ym8hwdsYpftkP71hnJO4F7W7gpSrvf/m6XLairl988Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQDZLAxwkcjqSj+WqxrnfQ86enmi5Xd91x9TNsyusmnG2wIhAP0RRcLUiG7so5rFs6RaNdsC12O6L4FMk88qAxOB5fZF"}]},"directories":{}},"0.3.0":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"./js/index","version":"0.3.0","maintainers":[{"name":"tobie","email":"tobie.langel@gmail.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"},{"name":"Dave Olsen","email":"dmolsen@gmail.com","url":"http://dmolsen.com"}],"repository":{"type":"git","url":"http://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"},{"type":"Apache-2.0","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"}],"dependencies":{"yamlparser":">=0.0.2"},"devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -u tdd ./js/test/*.js"},"_id":"ua-parser@0.3.0","dist":{"shasum":"718eba3c4f3e9c075ebf8fc8bba655162aa1a6f1","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.3.0.tgz","integrity":"sha512-aFJSbEQ9q4FpVoxEOeEaPngvajYWXDR/83+rZjQlBIxsT/GV2vFlF0eQytuDzE9qKTNqgah34zqHfRIjeMcBBA==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIHwEWR6A6nK8JgkrKbFx73WKVPQdl0JTPmsi/Y0KCiEoAiA9Ki/vczSI8psAcYfuBNp/dw5D35sYO2+46sJGAtiRTA=="}]},"directories":{}},"0.3.1":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"./js/index","version":"0.3.1","maintainers":[{"name":"tobie","email":"tobie.langel@gmail.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"},{"name":"Dave Olsen","email":"dmolsen@gmail.com","url":"http://dmolsen.com"}],"repository":{"type":"git","url":"http://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"},{"type":"Apache-2.0","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"}],"dependencies":{"yamlparser":">=0.0.2"},"devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -u tdd ./js/test/*.js"},"_id":"ua-parser@0.3.1","dist":{"shasum":"4947a8716506146cba62c572bc4b4a16c40c3313","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.3.1.tgz","integrity":"sha512-J8CR4p/UL1hb7/7tyHkXwJlszECJzN197L0ftx8nntHfa0SuhMB6jV7jHCDBFbxPYSomgGoUBNiqO0oOQo5Zfw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCIASFYOaiKHgBqAJRBqKSCcttxVWsJXYvv05x1s8vydY/AiBJ2dF7W2t3mOy5p7ZttEM2KFOLjqLQ3HNnzeLh8Ho2yA=="}]},"directories":{}},"0.3.2":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"./js/index","version":"0.3.2","maintainers":[{"name":"tobie","email":"tobie.langel@gmail.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"},{"name":"Dave Olsen","email":"dmolsen@gmail.com","url":"http://dmolsen.com"}],"repository":{"type":"git","url":"http://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"},{"type":"Apache-2.0","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"}],"dependencies":{"yamlparser":">=0.0.2"},"devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -u tdd ./js/test/*.js"},"_id":"ua-parser@0.3.2","dist":{"shasum":"69d9c00dcc5fa729eb940e350e8e2da66783decf","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.3.2.tgz","integrity":"sha512-fno6YdRHGydNSHEIOhIbhZq4RohjJ+XA3xYpW8MCd0/pmYxI/LCWJC1c5ZsGpN4yLGqcuwM7biA/+qlmD12vsw==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIQCgMQFxBgz3c4rIoIw5rFUMLWKsE8BHZShHRELfbRdlIwIgPVJ4h22FTTw/BL+wECWHLyaSA9z24afoabI6zQFWNP8="}]},"directories":{}},"0.3.3":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"./js/index","version":"0.3.3","maintainers":[{"name":"tobie","email":"tobie.langel@gmail.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"},{"name":"Dave Olsen","email":"dmolsen@gmail.com","url":"http://dmolsen.com"}],"repository":{"type":"git","url":"http://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"},{"type":"Apache-2.0","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"}],"dependencies":{"yamlparser":">=0.0.2"},"devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -u tdd ./js/test/*.js"},"_id":"ua-parser@0.3.3","dist":{"shasum":"9fb515c6f0c48bd4226c8b8c06e3e56572411c88","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.3.3.tgz","integrity":"sha512-lHVwiH3Dq2RzbEgkWeDFb0Ey+5woVURvK/WfJw9XccKJIFvEJVDdu0ZbLmuEFtkN9Oa8tv6GcHLTuyaEUvAi7A==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEYCIQCG7qCorjwiJgKLWnZPZBTFOO2b5z7PKnYTycq7SzwMXAIhANnYLG93ApBl+Hm02OaGIB2GgFWmHRHCXhq0gBr2uhhv"}]},"directories":{}},"0.3.4":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"./js/index","version":"0.3.4","maintainers":[{"name":"tobie","email":"tobie.langel@gmail.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"},{"name":"Dave Olsen","email":"dmolsen@gmail.com","url":"http://dmolsen.com"}],"repository":{"type":"git","url":"http://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"},{"type":"Apache-2.0","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"}],"dependencies":{"yamlparser":">=0.0.2"},"devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -u tdd -R dot ./js/test/*.js"},"gitHead":"c41b39c15ba62cbd63c3a24f59975d5afdc432e3","bugs":{"url":"https://github.com/tobie/ua-parser/issues"},"homepage":"https://github.com/tobie/ua-parser","_id":"ua-parser@0.3.4","_shasum":"7f2a5d39d3270539fd3485453160c0094e364dc2","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"tobie","email":"tobie.langel@gmail.com"},"dist":{"shasum":"7f2a5d39d3270539fd3485453160c0094e364dc2","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.3.4.tgz","integrity":"sha512-bN7mrKgrsbA0ulilkbesgdMspgCrCqfwIjtPbo0UgBQKcGmbVGnsfUDIuj0lcLE89RoevpJ6QL1IhclkJ1RGMg==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEUCIASfts2sII1chaFrjwIA9bweq/2lKokEob6KVDHltMv+AiEA2EXf6m6DmCZtAinUW9VIcgpfPjRmerzJj6Uc+fr2TiY="}]},"directories":{}},"0.3.5":{"name":"ua-parser","description":"A port of Browserscope's user agent parser.","main":"./js/index","version":"0.3.5","maintainers":[{"name":"tobie","email":"tobie.langel@gmail.com"}],"contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"},{"name":"Dave Olsen","email":"dmolsen@gmail.com","url":"http://dmolsen.com"}],"repository":{"type":"git","url":"http://github.com/tobie/ua-parser.git"},"licenses":[{"type":"MIT","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"},{"type":"Apache-2.0","url":"https://raw.github.com/tobie/ua-parser/master/js/LICENSE"}],"dependencies":{"yamlparser":">=0.0.2"},"devDependencies":{"mocha":"*"},"scripts":{"test":"mocha -u tdd -R dot ./js/test/*.js"},"gitHead":"7ad65f22f29a9fad784b6c5af47fd04298a6d81b","bugs":{"url":"https://github.com/tobie/ua-parser/issues"},"homepage":"https://github.com/tobie/ua-parser","_id":"ua-parser@0.3.5","_shasum":"2ff4f9c9e6e2d64d711461f17beb2c9c697f2f1a","_from":".","_npmVersion":"1.4.23","_npmUser":{"name":"tobie","email":"tobie.langel@gmail.com"},"dist":{"shasum":"2ff4f9c9e6e2d64d711461f17beb2c9c697f2f1a","tarball":"https://registry.npmjs.org/ua-parser/-/ua-parser-0.3.5.tgz","integrity":"sha512-M7V4rRbrM7qyKgUzdJze9Rm4YJJPzQPfhTsJAtrTUSPU1ELgmxt6a6Dc4pOH20BTWLhbZqoTiAaeH4u18Bm+7Q==","signatures":[{"keyid":"SHA256:jl3bwswu80PjjokCgh0o2w5c2U4LhQAE57gj9cz1kzA","sig":"MEQCID98dEOVo+PIqjQwXUUEYqIa5bbpt4y42IaqrtdrUU4xAiBmetALjUyrozZ/a9gz3uMmeTh8OrmCTdyBYgQZL+J5gg=="}]},"directories":{}}},"maintainers":[{"email":"tobie@codespeaks.com","name":"tobie"},{"email":"commenthol@gmail.com","name":"commenthol"}],"repository":{"type":"git","url":"http://github.com/tobie/ua-parser.git"},"time":{"modified":"2022-06-28T02:32:12.984Z","created":"2011-07-29T21:29:51.452Z","0.1.0":"2011-07-29T21:29:51.452Z","0.1.1":"2011-07-29T21:29:51.452Z","0.2.0":"2011-08-02T08:12:06.850Z","0.2.1":"2011-08-08T12:46:08.409Z","0.2.3":"2011-08-09T13:42:07.509Z","0.2.4":"2012-09-13T15:42:22.532Z","0.3.0":"2012-12-27T23:11:31.858Z","0.3.1":"2012-12-30T00:24:57.819Z","0.3.2":"2013-03-21T13:49:10.570Z","0.3.3":"2013-06-03T10:21:31.126Z","0.3.4":"2014-11-08T14:35:24.444Z","0.3.5":"2014-11-30T16:15:11.206Z"},"readme":"ua-parser [![Build Status](https://secure.travis-ci.org/tobie/ua-parser.png?branch=master)](https://travis-ci.org/tobie/ua-parser)\n=========\n\n`ua-parser` is a multi-language port of [BrowserScope][2]'s [user agent string parser][3].\n\nThe crux of the original parser--the data collected by [Steve Souders][4] over the years--has been extracted into a separate [YAML file][5] so as to be reusable _as is_ by implementations in other programming languages.\n\n`ua-parser` is just a small wrapper around this data, along with ongoing improvements to the definitions.\n\nMaintainers\n-----------\n\n* C#: [Søren Enemærke](https://github.com/enemaerke) ([@sorenenemaerke](https://twitter.com/sorenenemaerke))\n* D: [Shripad K](https://github.com/shripadk) ([@24shri](https://twitter.com/24shri))\n* Go: [Yihuan Zhou](https://github.com/yihuanz) ([@yihuanz](https://twitter.com/yihuanz))\n* Haskell: [Ozgun Ataman](https://github.com/ozataman) ([@ozataman](https://twitter.com/ozataman))\n* Java: [Steve Jiang](https://github.com/sjiang) ([@sjiang](https://twitter.com/sjiang))\n* JavaScript: [Tobie Langel](https://github.com/tobie) ([@tobie](https://twitter.com/tobie))\n* Perl: [Mamod Mehyar](https://github.com/mamod) ([@mamod](https://twitter.com/mamod))\n* PHP: [Lars Strojny](https://github.com/lstrojny) ([@lstrojny](https://twitter.com/lstrojny))\n* Pig: [Niels Basjes](https://github.com/nielsbasjes) ([@nielsbasjes](https://twitter.com/nielsbasjes))\n* Python: [Lindsey Simon](https://github.com/elsigh) ([@elsigh](https://twitter.com/elsigh))\n* `regexes.yaml`: Lindsey Simon & Tobie Langel\n\nCommunication channels\n-----------------------\n\n* irc (#ua-parser on freenode) <irc://chat.freenode.net#ua-parser>\n* [mailing list](https://groups.google.com/forum/#!forum/ua-parser)\n\nContributing Changes to regexes.yaml\n------------------------------------\n\nPlease read the [contributors' guide](https://github.com/tobie/ua-parser/blob/master/CONTRIBUTING.md)\n\nOther ua-parser Libraries\n-------------------------\n\nThere are a few other libraries which make use of ua-parser's patterns. These include:\n\n* Ruby - [user_agent_parser](https://github.com/toolmantim/user_agent_parser)\n\nSee ua-parser in action\n-----------------------\n\n[whatsmyua.info](http://www.whatsmyua.info) shows what ua-parser reports for\nyour current user agent/OS/device, or for any arbitrary user agent string.\n\nUsage :: [node.js][1]\n---------------------\n```js\nvar http = require('http');\n\nhttp.createServer(function (req, res) {\n\n  var r = require('ua-parser').parse(req.headers['user-agent']);\n\n  console.log(r.ua.toString());        // -> \"Safari 5.0.1\"\n  console.log(r.ua.toVersionString()); // -> \"5.0.1\"\n  console.log(r.ua.family)             // -> \"Safari\"\n  console.log(r.ua.major);             // -> \"5\"\n  console.log(r.ua.minor);             // -> \"0\"\n  console.log(r.ua.patch);             // -> \"1\"\n\n  console.log(r.os.toString());        // -> \"iOS 5.1\"\n  console.log(r.os.toVersionString()); // -> \"5.1\"\n  console.log(r.os.family)             // -> \"iOS\"\n  console.log(r.os.major);             // -> \"5\"\n  console.log(r.os.minor);             // -> \"1\"\n  console.log(r.os.patch);             // -> null\n\n  console.log(r.device.family);        // -> \"iPhone\"\n\n}).listen(3000);\n```\n\nNote if you're only interested in one of the `ua`, `device` or `os` objects, you will getter better performance by using the more specific methods (`uaParser.parseUA`, `uaParser.parseOS` and `uaParser.parseDevice` respectively), e.g.:\n\n```js\nvar http = require('http'),\n    p = require('ua-parser');\n\nhttp.createServer(function (req, res) {\n\n  var userAgent = req.headers['user-agent'];\n\n  console.log(p.parseUA(userAgent).toString());\n  // -> \"Safari 5.0.1\"\n  console.log(p.parseOS(userAgent).toString());\n  // -> \"iOS 5.1\"\n  console.log(p.parseDevice(userAgent).toString());\n  // -> \"iPhone\"\n\n}).listen(3000);\n```\n\nUsage :: python\n---------------\nYou can install `ua-parser` by running:\n\n```python\npip install pyyaml ua-parser\n```\n\nAnd here's how to use it:\n\n```python\nfrom ua_parser import user_agent_parser\n\n# On the server, you could use a WebOB request object.\nuser_agent_string = request.META.get('HTTP_USER_AGENT')\n\n# For demonstration purposes, though an iPhone ...\nuser_agent_string = 'Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3'\n\n# Get back a big dictionary of all the goodies.\nresult_dict = user_agent_parser.Parse(user_agent_string)\n\nprint result_dict['user_agent']\n# {'major': '5', 'minor': '1', 'family': 'Mobile Safari', 'patch': None}\n\nprint result_dict['os']\n# {'major': '5', 'patch_minor': None, 'minor': '1', 'family': 'iOS', 'patch': None}\n\nprint result_dict['device']\n# {'family': 'iPhone'}\n```\n\n\nUsage :: java\n-------------\n```java\nimport ua_parser.Parser;\nimport ua_parser.Client;\n\n...\n\n  String uaString = \"Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3\";\n\n  Parser uaParser = new Parser();\n  Client c = uaParser.parse(uaString);\n\n  System.out.println(c.userAgent.family); // => \"Mobile Safari\"\n  System.out.println(c.userAgent.major);  // => \"5\"\n  System.out.println(c.userAgent.minor);  // => \"1\"\n\n  System.out.println(c.os.family);        // => \"iOS\"\n  System.out.println(c.os.major);         // => \"5\"\n  System.out.println(c.os.minor);         // => \"1\"\n\n  System.out.println(c.device.family);    // => \"iPhone\"\n```\n\n\nUsage :: Pig\n-------------\nFor Pig there are UDFs for getting a single value and UDFs for getting a tuple with all values for either Device, Os of UserAgent.\nFor most usecases the tuple UDFs will be the most useful.\n\n```pig\nREGISTER ua-parser-pig-0.1-SNAPSHOT-job.jar\n\nDEFINE Device           ua_parser.pig.Device;\nDEFINE Os               ua_parser.pig.Os;\nDEFINE UserAgent        ua_parser.pig.UserAgent;\n\nUserAgents =\n    Load 'useragents.txt' AS (useragent:chararray);\n\nAgentSpecs =\n    FOREACH UserAgents\n    GENERATE\n             Device(useragent)              AS Device,\n             Os(useragent)                  AS Os,\n             UserAgent(useragent)           AS UserAgent,\n\n             useragent                      AS Useragent;\n\nDESCRIBE AgentSpecs;\nDUMP AgentSpecs;\n```\n\nThe versions that return only a single value:\n\n```pig\nREGISTER ua-parser-pig-0.1-SNAPSHOT-job.jar\n\nDEFINE DeviceFamily     ua_parser.pig.device.Family;\nDEFINE OsFamily         ua_parser.pig.os.Family;\nDEFINE OsMajor          ua_parser.pig.os.Major;\nDEFINE OsMinor          ua_parser.pig.os.Minor;\nDEFINE OsPatch          ua_parser.pig.os.Patch;\nDEFINE OsPatchMinor     ua_parser.pig.os.PatchMinor;\nDEFINE UseragentFamily  ua_parser.pig.useragent.Family;\nDEFINE UseragentMajor   ua_parser.pig.useragent.Major;\nDEFINE UseragentMinor   ua_parser.pig.useragent.Minor;\nDEFINE UseragentPatch   ua_parser.pig.useragent.Patch;\n\nUserAgents =\n    Load 'useragents.txt' AS (useragent:chararray);\n\nAgentSpecs =\n    FOREACH  UserAgents\n    GENERATE DeviceFamily(useragent)    AS DeviceFamily:chararray,\n\n             OsFamily(useragent)        AS OsFamily:chararray,\n             OsMajor(useragent)         AS OsMajor:chararray,\n             OsMinor(useragent)         AS OsMinor:chararray,\n             OsPatch(useragent)         AS OsPatch:chararray,\n             OsPatchMinor(useragent)    AS OsPatchMinor:chararray,\n\n             UseragentFamily(useragent) AS UseragentFamily:chararray,\n             UseragentMajor(useragent)  AS UseragentMajor:chararray,\n             UseragentMinor(useragent)  AS UseragentMinor:chararray,\n             UseragentPatch(useragent)  AS UseragentPatch:chararray,\n\n             useragent                  AS Useragent;\n\nDUMP AgentSpecs;\n```\n\n\nUsage :: php\n------------\n\n```php\nrequire_once 'vendor/autoload.php';\nuse UAParser\\Parser;\n\n$ua = \"Mozilla/5.0 (Macintosh; Intel Ma...\";\n\n$parser = Parser::create();\n$result = $parser->parse($ua);\n\nprint $result->ua->family;            // Safari\nprint $result->ua->major;             // 6\nprint $result->ua->minor;             // 0\nprint $result->ua->patch;             // 2\nprint $result->ua->toString();        // Safari 6.0.2\nprint $result->ua->toVersion();       // 6.0.2\n\nprint $result->os->family;            // Mac OS X\nprint $result->os->major;             // 10\nprint $result->os->minor;             // 7\nprint $result->os->patch;             // 5\nprint $result->os->patchMinor;        // [null]\nprint $result->os->toString();        // Mac OS X 10.7.5\nprint $result->os->toVersion();       // 10.7.5\n\nprint $result->device->family;        // Other\n\nprint $result->toString();            // Safari 6.0.2/Mac OS X 10.7.5\nprint $result->uaOriginal;            // Mozilla/5.0 (Macintosh; Intel Ma...\n```\n\n[More information is available in the README](https://github.com/tobie/ua-parser/tree/master/php) in the PHP directory\n\nUsage :: D\n-------------\n```d\nimport UaParser;\n\nimport std.stdio;\n\nvoid main() {\n    auto agent = UaParser.parse(\"Mozilla/5.0 (iPhone; CPU iPhone OS 5_1_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B206 Safari/7534.48.3\");\n    std.stdio.writeln(agent.browser.family); // Mobile Safari\n    std.stdio.writeln(agent.browser.major);  // 5\n    std.stdio.writeln(agent.browser.minor);  // 1\n    std.stdio.writeln(agent.browser.patch);  // 0\n    std.stdio.writeln(agent.browser.toString); // Mobile Safari 5.1.0\n    std.stdio.writeln(agent.browser.toVersionString); // 5.1.0\n\n    std.stdio.writeln(agent.os.family); // iOS\n    std.stdio.writeln(agent.os.major);  // 5\n    std.stdio.writeln(agent.os.minor);  // 1\n    std.stdio.writeln(agent.os.patch);  // 1\n    std.stdio.writeln(agent.os.toString); // iOS 5.1.1\n    std.stdio.writeln(agent.os.toVersionString); // 5.1.1\n\n    std.stdio.writeln(agent.toFullString); // Mobile Safari 5.1.0/iOS 5.1.1\n\n    std.stdio.writeln(agent.device.family); // iPhone\n\n    std.stdio.writeln(agent.isMobile); // true\n    std.stdio.writeln(agent.isSpider); // false\n}\n```\n\nUsage :: C#\n-------------\nInstall the NuGet package\n\n\tInstall-Package UAParser\n\nSample Usage:\n\n```csharp\nusing System;\n\nnamespace UAParser.ConsoleApp\n{\n  class Program\n  {\n    static void Main(string[] args)\n    {\n      String uaString = \"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_5; en-us) AppleWebKit/533.18.1 (KHTML, like Gecko) Version/5.0.2 Safari/533.18.5\";\n\n      Parser uaParser = Parser.GetDefault();\n\n      ClientInfo c = uaParser.Parse(uaString);\n\n      Console.WriteLine(c.UserAgent);  //Safari 5.0.2\n      Console.WriteLine(c.OS); // Mac OS X 10.6.5\n      Console.WriteLine(c.Device); //\n\n      Console.ReadLine();\n    }\n  }\n}\n```\n\nUsage :: Perl\n-------------\n```perl\nuse HTTP::UA::Parser;\nmy $r = HTTP::UA::Parser->new();\n\nprint $r->ua->toString();         # -> \"Safari 5.0.1\"\nprint $r->ua->toVersionString();  # -> \"5.0.1\"\nprint $r->ua->family;             # -> \"Safari\"\nprint $r->ua->major;              # -> \"5\"\nprint $r->ua->minor;              # -> \"0\"\nprint $r->ua->patch;              # -> \"1\"\n\nprint $r->os->toString();         # -> \"iOS 5.1\"\nprint $r->os->toVersionString();  # -> \"5.1\"\nprint $r->os->family              # -> \"iOS\"\nprint $r->os->major;              # -> \"5\"\nprint $r->os->minor;              # -> \"1\"\nprint $r->os->patch;              # -> undef\n\nprint $r->device->family;         # -> \"iPhone\"\n\nMore information is available in the README in the perl directory\n```\n\nUsage :: Haskell\n---------------\n\nInstall the package:\n\n    cabal update\n    cabal install ua-parser\n\nSample Usage:\n\n```haskell\n{-# LANGUAGE OverloadedStrings #-}\n\nmodule Main where\n\nimport Web.UAParser\n\ntest_string = \"Mozilla/5.0 (iPhone; CPU iPhone OS 5_1 like Mac OS X) AppleWebKit/534.46 (KHTML, like Gecko) Version/5.1 Mobile/9B179 Safari/7534.48.3\"\n\nmain = do\n    print $ parseUA test_string\n    print $ parseOS test_string\n```\n\nResult of running this program:\n\n```haskell\n-- Result from user agent parse\nJust (UAResult {uarFamily = \"Mobile Safari\", uarV1 = Just \"5\", uarV2 = Just \"1\", uarV3 = Nothing})\n\n-- Result from operating system parse\nJust (OSResult {osrFamily = \"iOS\", osrV1 = Just \"5\", osrV2 = Just \"1\", osrV3 = Nothing, osrV4 = Nothing})\n```\n\nPlease refer to Haddocks for more info; the API is pretty straightforward.\n\nUsage :: Go\n------------\n\nInstall the package:\n\n    go get \"github.com/tobie/ua-parser/go/uaparser\"\n\nSample Usage\n\n```\npackage main\n\nimport (\n  \"github.com/tobie/ua-parser/go/uaparser\"\n  \"fmt\"\n)\n\nfunc main() {\n  testStr := \"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_3; en-us; Silk/1.1.0-80) AppleWebKit/533.16 (KHTML, like Gecko) Version/5.0 Safari/533.16 Silk-Accelerated=true\"\n  regexFile := \"../../regexes.yaml\"\n  parser := uaparser.New(regexFile)\n  client := parser.Parse(testStr)\n  fmt.Println(client.UserAgent.Family)  // \"Amazon Silk\"\n  fmt.Println(client.UserAgent.Major)   // \"1\"\n  fmt.Println(client.UserAgent.Minor)   // \"1\"\n  fmt.Println(client.UserAgent.Patch)   // \"0-80\"\n  fmt.Println(client.Os.Family)         // \"Android\"\n  fmt.Println(client.Os.Major)          // \"\"\n  fmt.Println(client.Os.Minor)          // \"\"\n  fmt.Println(client.Os.Patch)          // \"\"\n  fmt.Println(client.Os.PatchMinor)     // \"\"\n  fmt.Println(client.Device.Family)     // \"Kindle Fire\"\n}\n```\n\n[More information is available in the README](https://github.com/tobie/ua-parser/tree/master/go/uaparser) in the Go directory\n\nLicense\n-------\n\nThe data contained in `regexes.yaml` is Copyright (c) 2009 Google Inc. and [other contributors][6], and available under the [Apache License, Version 2.0][7].\n\nThe original python code is Copyright (c) 2008 Google Inc. and [other contributors][8],and is available under the [Apache License, Version 2.0][9].\n\nThe JS port is Copyright (c) 2010 Tobie Langel and [other contributors][10], and is available under [your choice of MIT or Apache Version 2.0 license][11].\n\nThe PHP port is Copyright (c) 2011-2012 Dave Olsen and [other contributors][12], and is available under the [MIT license][13].\n\nThe Java port is Copyright (c) 2012 Twitter, Inc and [other contributors][14], and is available under the [Apache License, Version 2.0][7].\n\nThe D port is Copyright (c) 2012 Shripad K and [other contributors][15], and is available under the [MIT license][16].\n\nThe C# port is Copyright (c) 2012 Søren Enemærke and [other contributors][17], and is available under the [Apache License, Version 2.0][18].\n\nThe Perl port is Copyright (c) 2012 Mamod Mehyar and [other contributors][19], and is available under the [Perl License, Version 5.10.1][20].\n\nThe Pig port is Copyright (c) 2013 Niels Basjes and [other contributors][21], and is available under the [Apache License, Version 2.0][22].\n\nThe Go port is Copyright (c) 2013 Yihuan Zhou and [other contributors][23], and is available under the [MIT License][24].\n\n\n[1]: http://nodejs.org\n[2]: http://www.browserscope.org\n[3]: http://code.google.com/p/ua-parser/\n[4]: http://stevesouders.com/\n[5]: https://raw.github.com/tobie/ua-parser/master/regexes.yaml\n[6]: https://github.com/tobie/ua-parser/commits/master/regexes.yaml\n[7]: http://www.apache.org/licenses/LICENSE-2.0\n[8]: https://github.com/tobie/ua-parser/commits/master/py\n[9]: https://raw.github.com/tobie/ua-parser/master/py/LICENSE\n[10]: https://github.com/tobie/ua-parser/commits/master/js\n[11]: https://raw.github.com/tobie/ua-parser/master/js/LICENSE\n[12]: https://github.com/tobie/ua-parser/commits/master/php\n[13]: https://raw.github.com/tobie/ua-parser/master/php/LICENSE\n[14]: https://github.com/tobie/ua-parser/commits/master/java\n[15]: https://github.com/tobie/ua-parser/commits/master/d\n[16]: https://raw.github.com/tobie/ua-parser/master/d/LICENSE\n[17]: https://github.com/tobie/ua-parser/commits/master/csharp\n[18]: https://raw.github.com/tobie/ua-parser/master/csharp/LICENSE\n[19]: https://github.com/tobie/ua-parser/commits/master/perl\n[20]: http://dev.perl.org/licenses\n[21]: https://github.com/tobie/ua-parser/commits/master/pig\n[22]: https://raw.github.com/tobie/ua-parser/master/pig/LICENSE.txt\n[23]: https://github.com/tobie/ua-parser/commits/master/go\n[24]: https://raw.github.com/tobie/ua-parser/master/go/uaparser/LICENSE.md\n","readmeFilename":"README.markdown","users":{"boustanihani":true,"leventkaragol":true,"tinyhill":true,"jsolis":true,"nano":true,"hyokosdeveloper":true,"yong_a":true,"sachacr":true,"tmiame":true,"dhanya-kr":true},"homepage":"https://github.com/tobie/ua-parser","contributors":[{"name":"Tobie Langel","email":"tobie.langel@gmail.com","url":"http://tobielangel.com"},{"name":"Lindsey Simon","email":"lsimon@commoner.com","url":"http://www.idreamofuni.com"},{"name":"Philip Tellis","email":"philip@bluesmoon.info","url":"http://bluesmoon.info"},{"name":"Dave Olsen","email":"dmolsen@gmail.com","url":"http://dmolsen.com"}],"bugs":{"url":"https://github.com/tobie/ua-parser/issues"}}