diff --git a/images/android.png b/images/android.png deleted file mode 100644 index 08764db..0000000 Binary files a/images/android.png and /dev/null differ diff --git a/images/arora.png b/images/arora.png deleted file mode 100644 index 5e4ba79..0000000 Binary files a/images/arora.png and /dev/null differ diff --git a/images/attrs.txt b/images/attrs.txt index 4be921e..223a319 100644 --- a/images/attrs.txt +++ b/images/attrs.txt @@ -4,3 +4,4 @@ http://iconfinder.com http://iconarchive.com http://wikimedia.org http://distrowatch.com +https://github.com/alrra/browser-logos diff --git a/images/blackberry.png b/images/blackberry.png deleted file mode 100644 index 802cd05..0000000 Binary files a/images/blackberry.png and /dev/null differ diff --git a/images/browser/360-secure.png b/images/browser/360-secure.png new file mode 100644 index 0000000..55494b4 Binary files /dev/null and b/images/browser/360-secure.png differ diff --git a/images/browser/adrenaline.png b/images/browser/adrenaline.png new file mode 100644 index 0000000..26028e3 Binary files /dev/null and b/images/browser/adrenaline.png differ diff --git a/images/browser/airweb.png b/images/browser/airweb.png new file mode 100644 index 0000000..6f2180a Binary files /dev/null and b/images/browser/airweb.png differ diff --git a/images/browser/allinone.png b/images/browser/allinone.png new file mode 100644 index 0000000..f5e3395 Binary files /dev/null and b/images/browser/allinone.png differ diff --git a/images/browser/apollo.png b/images/browser/apollo.png new file mode 100644 index 0000000..8020ec4 Binary files /dev/null and b/images/browser/apollo.png differ diff --git a/images/browser/arora.png b/images/browser/arora.png new file mode 100644 index 0000000..76e6771 Binary files /dev/null and b/images/browser/arora.png differ diff --git a/images/browser/atomic.png b/images/browser/atomic.png new file mode 100644 index 0000000..a4e206d Binary files /dev/null and b/images/browser/atomic.png differ diff --git a/images/browser/avant.png b/images/browser/avant.png new file mode 100644 index 0000000..1447641 Binary files /dev/null and b/images/browser/avant.png differ diff --git a/images/browser/aviator.png b/images/browser/aviator.png new file mode 100644 index 0000000..253e749 Binary files /dev/null and b/images/browser/aviator.png differ diff --git a/images/browser/axis.png b/images/browser/axis.png new file mode 100644 index 0000000..ae1ae46 Binary files /dev/null and b/images/browser/axis.png differ diff --git a/images/browser/baidu.png b/images/browser/baidu.png new file mode 100644 index 0000000..df83639 Binary files /dev/null and b/images/browser/baidu.png differ diff --git a/images/browser/baidu_1.png b/images/browser/baidu_1.png new file mode 100644 index 0000000..25c94d4 Binary files /dev/null and b/images/browser/baidu_1.png differ diff --git a/images/browser/boat.png b/images/browser/boat.png new file mode 100644 index 0000000..944c352 Binary files /dev/null and b/images/browser/boat.png differ diff --git a/images/browser/camino.png b/images/browser/camino.png new file mode 100644 index 0000000..4a73549 Binary files /dev/null and b/images/browser/camino.png differ diff --git a/images/browser/cheetah.png b/images/browser/cheetah.png new file mode 100644 index 0000000..3364da7 Binary files /dev/null and b/images/browser/cheetah.png differ diff --git a/images/browser/chrome-android.png b/images/browser/chrome-android.png new file mode 100644 index 0000000..e2e6db4 Binary files /dev/null and b/images/browser/chrome-android.png differ diff --git a/images/browser/chrome-android_18-36.png b/images/browser/chrome-android_18-36.png new file mode 100644 index 0000000..caf09e1 Binary files /dev/null and b/images/browser/chrome-android_18-36.png differ diff --git a/images/browser/chrome-beta-android.png b/images/browser/chrome-beta-android.png new file mode 100644 index 0000000..dea6bad Binary files /dev/null and b/images/browser/chrome-beta-android.png differ diff --git a/images/browser/chrome-beta-android_25-36.png b/images/browser/chrome-beta-android_25-36.png new file mode 100644 index 0000000..9d4f739 Binary files /dev/null and b/images/browser/chrome-beta-android_25-36.png differ diff --git a/images/browser/chrome-canary.png b/images/browser/chrome-canary.png new file mode 100644 index 0000000..3089dfe Binary files /dev/null and b/images/browser/chrome-canary.png differ diff --git a/images/browser/chrome.png b/images/browser/chrome.png new file mode 100644 index 0000000..bf3ac84 Binary files /dev/null and b/images/browser/chrome.png differ diff --git a/images/browser/chrome_1-10.png b/images/browser/chrome_1-10.png new file mode 100644 index 0000000..33fa69d Binary files /dev/null and b/images/browser/chrome_1-10.png differ diff --git a/images/browser/chromium.png b/images/browser/chromium.png new file mode 100644 index 0000000..582d657 Binary files /dev/null and b/images/browser/chromium.png differ diff --git a/images/browser/chromium_1-10.png b/images/browser/chromium_1-10.png new file mode 100644 index 0000000..187b6bf Binary files /dev/null and b/images/browser/chromium_1-10.png differ diff --git a/images/browser/coast.png b/images/browser/coast.png new file mode 100644 index 0000000..6c49c51 Binary files /dev/null and b/images/browser/coast.png differ diff --git a/images/browser/cruz.png b/images/browser/cruz.png new file mode 100644 index 0000000..a6e59a5 Binary files /dev/null and b/images/browser/cruz.png differ diff --git a/images/browser/cxm-web.png b/images/browser/cxm-web.png new file mode 100644 index 0000000..ef5f1fd Binary files /dev/null and b/images/browser/cxm-web.png differ diff --git a/images/browser/diigo.png b/images/browser/diigo.png new file mode 100644 index 0000000..6eda7bc Binary files /dev/null and b/images/browser/diigo.png differ diff --git a/images/browser/docler.png b/images/browser/docler.png new file mode 100644 index 0000000..5e69db4 Binary files /dev/null and b/images/browser/docler.png differ diff --git a/images/browser/dolphin-beta.png b/images/browser/dolphin-beta.png new file mode 100644 index 0000000..97c24bd Binary files /dev/null and b/images/browser/dolphin-beta.png differ diff --git a/images/browser/dolphin-zero.png b/images/browser/dolphin-zero.png new file mode 100644 index 0000000..d447f3a Binary files /dev/null and b/images/browser/dolphin-zero.png differ diff --git a/images/browser/dolphin.png b/images/browser/dolphin.png new file mode 100644 index 0000000..b1c0eed Binary files /dev/null and b/images/browser/dolphin.png differ diff --git a/images/browser/dooble.png b/images/browser/dooble.png new file mode 100644 index 0000000..e2d5372 Binary files /dev/null and b/images/browser/dooble.png differ diff --git a/images/browser/epic.png b/images/browser/epic.png new file mode 100644 index 0000000..53fd06b Binary files /dev/null and b/images/browser/epic.png differ diff --git a/images/browser/epic_1.png b/images/browser/epic_1.png new file mode 100644 index 0000000..a12d83d Binary files /dev/null and b/images/browser/epic_1.png differ diff --git a/images/browser/epiphany.png b/images/browser/epiphany.png new file mode 100644 index 0000000..c62163b Binary files /dev/null and b/images/browser/epiphany.png differ diff --git a/images/browser/exsoul.png b/images/browser/exsoul.png new file mode 100644 index 0000000..8111735 Binary files /dev/null and b/images/browser/exsoul.png differ diff --git a/images/browser/exsoul_1.png b/images/browser/exsoul_1.png new file mode 100644 index 0000000..db5a15e Binary files /dev/null and b/images/browser/exsoul_1.png differ diff --git a/images/browser/fake.png b/images/browser/fake.png new file mode 100644 index 0000000..a9b232b Binary files /dev/null and b/images/browser/fake.png differ diff --git a/images/browser/fennec.png b/images/browser/fennec.png new file mode 100644 index 0000000..c689cbe Binary files /dev/null and b/images/browser/fennec.png differ diff --git a/images/browser/firefox-aurora.png b/images/browser/firefox-aurora.png new file mode 100644 index 0000000..b2ae8b1 Binary files /dev/null and b/images/browser/firefox-aurora.png differ diff --git a/images/browser/firefox-aurora_5-22.png b/images/browser/firefox-aurora_5-22.png new file mode 100644 index 0000000..119b850 Binary files /dev/null and b/images/browser/firefox-aurora_5-22.png differ diff --git a/images/browser/firefox-beta.png b/images/browser/firefox-beta.png new file mode 100644 index 0000000..8132d39 Binary files /dev/null and b/images/browser/firefox-beta.png differ diff --git a/images/browser/firefox-nightly.png b/images/browser/firefox-nightly.png new file mode 100644 index 0000000..280ebf7 Binary files /dev/null and b/images/browser/firefox-nightly.png differ diff --git a/images/browser/firefox-nightly_6-22.png b/images/browser/firefox-nightly_6-22.png new file mode 100644 index 0000000..2e265ee Binary files /dev/null and b/images/browser/firefox-nightly_6-22.png differ diff --git a/images/browser/firefox.png b/images/browser/firefox.png new file mode 100644 index 0000000..346b489 Binary files /dev/null and b/images/browser/firefox.png differ diff --git a/images/browser/firefox_1.5-3.png b/images/browser/firefox_1.5-3.png new file mode 100644 index 0000000..94d38b6 Binary files /dev/null and b/images/browser/firefox_1.5-3.png differ diff --git a/images/browser/firefox_1.png b/images/browser/firefox_1.png new file mode 100644 index 0000000..cd915a9 Binary files /dev/null and b/images/browser/firefox_1.png differ diff --git a/images/browser/firefox_3.5-22.png b/images/browser/firefox_3.5-22.png new file mode 100644 index 0000000..b58107e Binary files /dev/null and b/images/browser/firefox_3.5-22.png differ diff --git a/images/browser/flock.png b/images/browser/flock.png new file mode 100644 index 0000000..7892848 Binary files /dev/null and b/images/browser/flock.png differ diff --git a/images/browser/icab-mobile.png b/images/browser/icab-mobile.png new file mode 100644 index 0000000..069d6eb Binary files /dev/null and b/images/browser/icab-mobile.png differ diff --git a/images/browser/icab-mobile_1.png b/images/browser/icab-mobile_1.png new file mode 100644 index 0000000..73587d6 Binary files /dev/null and b/images/browser/icab-mobile_1.png differ diff --git a/images/browser/iceape.png b/images/browser/iceape.png new file mode 100644 index 0000000..248f6ee Binary files /dev/null and b/images/browser/iceape.png differ diff --git a/images/browser/icecat.png b/images/browser/icecat.png new file mode 100644 index 0000000..6e03b08 Binary files /dev/null and b/images/browser/icecat.png differ diff --git a/images/browser/iceweasel.png b/images/browser/iceweasel.png new file mode 100644 index 0000000..6df944b Binary files /dev/null and b/images/browser/iceweasel.png differ diff --git a/images/browser/ilunascape-android.png b/images/browser/ilunascape-android.png new file mode 100644 index 0000000..46c8701 Binary files /dev/null and b/images/browser/ilunascape-android.png differ diff --git a/images/browser/ilunascape-ios.png b/images/browser/ilunascape-ios.png new file mode 100644 index 0000000..2cd8428 Binary files /dev/null and b/images/browser/ilunascape-ios.png differ diff --git a/images/browser/internet-explorer-developer-channel.png b/images/browser/internet-explorer-developer-channel.png new file mode 100644 index 0000000..d3a2ebe Binary files /dev/null and b/images/browser/internet-explorer-developer-channel.png differ diff --git a/images/browser/internet-explorer-tile.png b/images/browser/internet-explorer-tile.png new file mode 100644 index 0000000..1b730a4 Binary files /dev/null and b/images/browser/internet-explorer-tile.png differ diff --git a/images/browser/internet-explorer.png b/images/browser/internet-explorer.png new file mode 100644 index 0000000..ed93166 Binary files /dev/null and b/images/browser/internet-explorer.png differ diff --git a/images/browser/internet-explorer_6.png b/images/browser/internet-explorer_6.png new file mode 100644 index 0000000..ff50a48 Binary files /dev/null and b/images/browser/internet-explorer_6.png differ diff --git a/images/browser/internet-explorer_7-8.png b/images/browser/internet-explorer_7-8.png new file mode 100644 index 0000000..7b7d5ae Binary files /dev/null and b/images/browser/internet-explorer_7-8.png differ diff --git a/images/browser/k-meleon.png b/images/browser/k-meleon.png new file mode 100644 index 0000000..8ec4158 Binary files /dev/null and b/images/browser/k-meleon.png differ diff --git a/images/browser/k9.png b/images/browser/k9.png new file mode 100644 index 0000000..3e31ef2 Binary files /dev/null and b/images/browser/k9.png differ diff --git a/images/browser/kidzui.png b/images/browser/kidzui.png new file mode 100644 index 0000000..597b9a5 Binary files /dev/null and b/images/browser/kidzui.png differ diff --git a/images/browser/konqueror.png b/images/browser/konqueror.png new file mode 100644 index 0000000..e63ea75 Binary files /dev/null and b/images/browser/konqueror.png differ diff --git a/images/browser/konqueror_1-3.png b/images/browser/konqueror_1-3.png new file mode 100644 index 0000000..42cf242 Binary files /dev/null and b/images/browser/konqueror_1-3.png differ diff --git a/images/browser/kylo.png b/images/browser/kylo.png new file mode 100644 index 0000000..d1542b4 Binary files /dev/null and b/images/browser/kylo.png differ diff --git a/images/browser/lightning.png b/images/browser/lightning.png new file mode 100644 index 0000000..8a54ac3 Binary files /dev/null and b/images/browser/lightning.png differ diff --git a/images/browser/lightning_1.png b/images/browser/lightning_1.png new file mode 100644 index 0000000..320bd62 Binary files /dev/null and b/images/browser/lightning_1.png differ diff --git a/images/browser/link-bubble.png b/images/browser/link-bubble.png new file mode 100644 index 0000000..fd1f2d0 Binary files /dev/null and b/images/browser/link-bubble.png differ diff --git a/images/browser/link-bubble_1-1.4.png b/images/browser/link-bubble_1-1.4.png new file mode 100644 index 0000000..119e766 Binary files /dev/null and b/images/browser/link-bubble_1-1.4.png differ diff --git a/images/browser/maxthon-beta.png b/images/browser/maxthon-beta.png new file mode 100644 index 0000000..3add0d6 Binary files /dev/null and b/images/browser/maxthon-beta.png differ diff --git a/images/browser/maxthon.png b/images/browser/maxthon.png new file mode 100644 index 0000000..8505bcc Binary files /dev/null and b/images/browser/maxthon.png differ diff --git a/images/browser/mercury.png b/images/browser/mercury.png new file mode 100644 index 0000000..a34cb27 Binary files /dev/null and b/images/browser/mercury.png differ diff --git a/images/browser/mercury_1.png b/images/browser/mercury_1.png new file mode 100644 index 0000000..6ab7ea4 Binary files /dev/null and b/images/browser/mercury_1.png differ diff --git a/images/browser/metacert.png b/images/browser/metacert.png new file mode 100644 index 0000000..8a0ee83 Binary files /dev/null and b/images/browser/metacert.png differ diff --git a/images/browser/midori.png b/images/browser/midori.png new file mode 100644 index 0000000..5599325 Binary files /dev/null and b/images/browser/midori.png differ diff --git a/images/browser/mihtool.png b/images/browser/mihtool.png new file mode 100644 index 0000000..af9c034 Binary files /dev/null and b/images/browser/mihtool.png differ diff --git a/images/browser/mobicip.png b/images/browser/mobicip.png new file mode 100644 index 0000000..d7e7e50 Binary files /dev/null and b/images/browser/mobicip.png differ diff --git a/images/browser/mobicip_1.png b/images/browser/mobicip_1.png new file mode 100644 index 0000000..3a41892 Binary files /dev/null and b/images/browser/mobicip_1.png differ diff --git a/images/browser/mosaic.png b/images/browser/mosaic.png new file mode 100644 index 0000000..849238e Binary files /dev/null and b/images/browser/mosaic.png differ diff --git a/images/mozilla.png b/images/browser/mozilla.png similarity index 100% rename from images/mozilla.png rename to images/browser/mozilla.png diff --git a/images/browser/netscape_4-6.png b/images/browser/netscape_4-6.png new file mode 100644 index 0000000..da10be2 Binary files /dev/null and b/images/browser/netscape_4-6.png differ diff --git a/images/browser/netscape_8.png b/images/browser/netscape_8.png new file mode 100644 index 0000000..1df7dd3 Binary files /dev/null and b/images/browser/netscape_8.png differ diff --git a/images/browser/netscape_9.png b/images/browser/netscape_9.png new file mode 100644 index 0000000..670045d Binary files /dev/null and b/images/browser/netscape_9.png differ diff --git a/images/browser/netsurf.png b/images/browser/netsurf.png new file mode 100644 index 0000000..2345877 Binary files /dev/null and b/images/browser/netsurf.png differ diff --git a/images/browser/next.png b/images/browser/next.png new file mode 100644 index 0000000..4a8de3d Binary files /dev/null and b/images/browser/next.png differ diff --git a/images/browser/ninesky.png b/images/browser/ninesky.png new file mode 100644 index 0000000..9730e6a Binary files /dev/null and b/images/browser/ninesky.png differ diff --git a/images/browser/nlia.png b/images/browser/nlia.png new file mode 100644 index 0000000..d479bad Binary files /dev/null and b/images/browser/nlia.png differ diff --git a/images/browser/omega.png b/images/browser/omega.png new file mode 100644 index 0000000..f326c15 Binary files /dev/null and b/images/browser/omega.png differ diff --git a/images/browser/omniweb.png b/images/browser/omniweb.png new file mode 100644 index 0000000..80bc61c Binary files /dev/null and b/images/browser/omniweb.png differ diff --git a/images/browser/one-android.png b/images/browser/one-android.png new file mode 100644 index 0000000..0c4b21f Binary files /dev/null and b/images/browser/one-android.png differ diff --git a/images/browser/one-ios.png b/images/browser/one-ios.png new file mode 100644 index 0000000..e81b423 Binary files /dev/null and b/images/browser/one-ios.png differ diff --git a/images/browser/onion.png b/images/browser/onion.png new file mode 100644 index 0000000..acd7150 Binary files /dev/null and b/images/browser/onion.png differ diff --git a/images/browser/opera-developer.png b/images/browser/opera-developer.png new file mode 100644 index 0000000..d7e3a35 Binary files /dev/null and b/images/browser/opera-developer.png differ diff --git a/images/browser/opera-next.png b/images/browser/opera-next.png new file mode 100644 index 0000000..eb90b61 Binary files /dev/null and b/images/browser/opera-next.png differ diff --git a/images/browser/opera-next_15.png b/images/browser/opera-next_15.png new file mode 100644 index 0000000..2ddeb54 Binary files /dev/null and b/images/browser/opera-next_15.png differ diff --git a/images/browser/opera.png b/images/browser/opera.png new file mode 100644 index 0000000..f8a2bf3 Binary files /dev/null and b/images/browser/opera.png differ diff --git a/images/browser/opera_10-14.png b/images/browser/opera_10-14.png new file mode 100644 index 0000000..56603f8 Binary files /dev/null and b/images/browser/opera_10-14.png differ diff --git a/images/browser/opera_2-6.png b/images/browser/opera_2-6.png new file mode 100644 index 0000000..a8a2eb7 Binary files /dev/null and b/images/browser/opera_2-6.png differ diff --git a/images/browser/opera_7-9.png b/images/browser/opera_7-9.png new file mode 100644 index 0000000..62a772d Binary files /dev/null and b/images/browser/opera_7-9.png differ diff --git a/images/browser/orweb.png b/images/browser/orweb.png new file mode 100644 index 0000000..e92eef1 Binary files /dev/null and b/images/browser/orweb.png differ diff --git a/images/browser/pale-moon.png b/images/browser/pale-moon.png new file mode 100644 index 0000000..89f387f Binary files /dev/null and b/images/browser/pale-moon.png differ diff --git a/images/browser/phoenix_firebird.png b/images/browser/phoenix_firebird.png new file mode 100644 index 0000000..e9e1d91 Binary files /dev/null and b/images/browser/phoenix_firebird.png differ diff --git a/images/browser/photon.png b/images/browser/photon.png new file mode 100644 index 0000000..1f0c755 Binary files /dev/null and b/images/browser/photon.png differ diff --git a/images/browser/puffin.png b/images/browser/puffin.png new file mode 100644 index 0000000..860663c Binary files /dev/null and b/images/browser/puffin.png differ diff --git a/images/browser/qq.png b/images/browser/qq.png new file mode 100644 index 0000000..faa85d1 Binary files /dev/null and b/images/browser/qq.png differ diff --git a/images/browser/qq_1.png b/images/browser/qq_1.png new file mode 100644 index 0000000..179cd90 Binary files /dev/null and b/images/browser/qq_1.png differ diff --git a/images/browser/rekonq.png b/images/browser/rekonq.png new file mode 100644 index 0000000..b65cb2e Binary files /dev/null and b/images/browser/rekonq.png differ diff --git a/images/browser/rockmelt-ios.png b/images/browser/rockmelt-ios.png new file mode 100644 index 0000000..c827ea1 Binary files /dev/null and b/images/browser/rockmelt-ios.png differ diff --git a/images/browser/rockmelt.png b/images/browser/rockmelt.png new file mode 100644 index 0000000..238e5c4 Binary files /dev/null and b/images/browser/rockmelt.png differ diff --git a/images/browser/safari-ios.png b/images/browser/safari-ios.png new file mode 100644 index 0000000..e551db7 Binary files /dev/null and b/images/browser/safari-ios.png differ diff --git a/images/browser/safari-ios_1-6.png b/images/browser/safari-ios_1-6.png new file mode 100644 index 0000000..144be9e Binary files /dev/null and b/images/browser/safari-ios_1-6.png differ diff --git a/images/browser/safari.png b/images/browser/safari.png new file mode 100644 index 0000000..9276a6e Binary files /dev/null and b/images/browser/safari.png differ diff --git a/images/browser/safari_1-7.png b/images/browser/safari_1-7.png new file mode 100644 index 0000000..a378168 Binary files /dev/null and b/images/browser/safari_1-7.png differ diff --git a/images/browser/seamonkey.png b/images/browser/seamonkey.png new file mode 100644 index 0000000..c59efb7 Binary files /dev/null and b/images/browser/seamonkey.png differ diff --git a/images/browser/shiira.png b/images/browser/shiira.png new file mode 100644 index 0000000..42d6360 Binary files /dev/null and b/images/browser/shiira.png differ diff --git a/images/browser/silk_1.png b/images/browser/silk_1.png new file mode 100644 index 0000000..f660876 Binary files /dev/null and b/images/browser/silk_1.png differ diff --git a/images/browser/skyfire-android.png b/images/browser/skyfire-android.png new file mode 100644 index 0000000..b557892 Binary files /dev/null and b/images/browser/skyfire-android.png differ diff --git a/images/browser/skyfire-ios.png b/images/browser/skyfire-ios.png new file mode 100644 index 0000000..31045b4 Binary files /dev/null and b/images/browser/skyfire-ios.png differ diff --git a/images/browser/sleipnir-android.png b/images/browser/sleipnir-android.png new file mode 100644 index 0000000..c9ec2c1 Binary files /dev/null and b/images/browser/sleipnir-android.png differ diff --git a/images/browser/sleipnir-ios.png b/images/browser/sleipnir-ios.png new file mode 100644 index 0000000..064c93e Binary files /dev/null and b/images/browser/sleipnir-ios.png differ diff --git a/images/browser/sleipnir-mac.png b/images/browser/sleipnir-mac.png new file mode 100644 index 0000000..eafead8 Binary files /dev/null and b/images/browser/sleipnir-mac.png differ diff --git a/images/browser/sleipnir-windows.png b/images/browser/sleipnir-windows.png new file mode 100644 index 0000000..de313e4 Binary files /dev/null and b/images/browser/sleipnir-windows.png differ diff --git a/images/browser/slimboat.png b/images/browser/slimboat.png new file mode 100644 index 0000000..f5b9e97 Binary files /dev/null and b/images/browser/slimboat.png differ diff --git a/images/browser/sogou-mobile.png b/images/browser/sogou-mobile.png new file mode 100644 index 0000000..77f6e41 Binary files /dev/null and b/images/browser/sogou-mobile.png differ diff --git a/images/browser/sogou-mobile_1.png b/images/browser/sogou-mobile_1.png new file mode 100644 index 0000000..9ca0371 Binary files /dev/null and b/images/browser/sogou-mobile_1.png differ diff --git a/images/browser/stainless.png b/images/browser/stainless.png new file mode 100644 index 0000000..7f81c2b Binary files /dev/null and b/images/browser/stainless.png differ diff --git a/images/browser/superfast.png b/images/browser/superfast.png new file mode 100644 index 0000000..e43c9b1 Binary files /dev/null and b/images/browser/superfast.png differ diff --git a/images/browser/tor.png b/images/browser/tor.png new file mode 100644 index 0000000..22fed5a Binary files /dev/null and b/images/browser/tor.png differ diff --git a/images/browser/torch.png b/images/browser/torch.png new file mode 100644 index 0000000..8844d29 Binary files /dev/null and b/images/browser/torch.png differ diff --git a/images/browser/uc.png b/images/browser/uc.png new file mode 100644 index 0000000..99f5052 Binary files /dev/null and b/images/browser/uc.png differ diff --git a/images/browser/vitrum.png b/images/browser/vitrum.png new file mode 100644 index 0000000..3f73317 Binary files /dev/null and b/images/browser/vitrum.png differ diff --git a/images/browser/web.png b/images/browser/web.png new file mode 100644 index 0000000..0ead6c1 Binary files /dev/null and b/images/browser/web.png differ diff --git a/images/browser/webkit.png b/images/browser/webkit.png new file mode 100644 index 0000000..7bec8d5 Binary files /dev/null and b/images/browser/webkit.png differ diff --git a/images/browser/wyzo.png b/images/browser/wyzo.png new file mode 100644 index 0000000..f73e4f1 Binary files /dev/null and b/images/browser/wyzo.png differ diff --git a/images/browser/xtravo.png b/images/browser/xtravo.png new file mode 100644 index 0000000..f4b54c7 Binary files /dev/null and b/images/browser/xtravo.png differ diff --git a/images/browser/yandex.png b/images/browser/yandex.png new file mode 100644 index 0000000..6d9094b Binary files /dev/null and b/images/browser/yandex.png differ diff --git a/images/camino.png b/images/camino.png deleted file mode 100644 index 827025a..0000000 Binary files a/images/camino.png and /dev/null differ diff --git a/images/check.png b/images/check.png index 3f4e609..03dd130 100644 Binary files a/images/check.png and b/images/check.png differ diff --git a/images/chrome.png b/images/chrome.png deleted file mode 100644 index 78c51bd..0000000 Binary files a/images/chrome.png and /dev/null differ diff --git a/images/chromium.png b/images/chromium.png deleted file mode 100644 index ee413a7..0000000 Binary files a/images/chromium.png and /dev/null differ diff --git a/images/debian.png b/images/debian.png deleted file mode 100644 index cbf4ae7..0000000 Binary files a/images/debian.png and /dev/null differ diff --git a/images/device/console.png b/images/device/console.png new file mode 100644 index 0000000..444e171 Binary files /dev/null and b/images/device/console.png differ diff --git a/images/device/pc.png b/images/device/pc.png new file mode 100644 index 0000000..a000aaf Binary files /dev/null and b/images/device/pc.png differ diff --git a/images/phone.png b/images/device/phone.png similarity index 100% rename from images/phone.png rename to images/device/phone.png diff --git a/images/device/tablet.png b/images/device/tablet.png new file mode 100644 index 0000000..6ca03ed Binary files /dev/null and b/images/device/tablet.png differ diff --git a/images/device/tv.png b/images/device/tv.png new file mode 100644 index 0000000..e799d52 Binary files /dev/null and b/images/device/tv.png differ diff --git a/images/dolfin.png b/images/dolfin.png deleted file mode 100644 index bd2178d..0000000 Binary files a/images/dolfin.png and /dev/null differ diff --git a/images/firefox.png b/images/firefox.png deleted file mode 100644 index 534a856..0000000 Binary files a/images/firefox.png and /dev/null differ diff --git a/images/flock.png b/images/flock.png deleted file mode 100644 index 151f51f..0000000 Binary files a/images/flock.png and /dev/null differ diff --git a/images/freebsd.png b/images/freebsd.png deleted file mode 100644 index 2b167af..0000000 Binary files a/images/freebsd.png and /dev/null differ diff --git a/images/gentoo.png b/images/gentoo.png deleted file mode 100644 index 37bd86a..0000000 Binary files a/images/gentoo.png and /dev/null differ diff --git a/images/iceweasel.png b/images/iceweasel.png deleted file mode 100644 index 8407b3b..0000000 Binary files a/images/iceweasel.png and /dev/null differ diff --git a/images/ie.png b/images/ie.png deleted file mode 100644 index 42c15b5..0000000 Binary files a/images/ie.png and /dev/null differ diff --git a/images/ios.png b/images/ios.png deleted file mode 100644 index 6ecc1fe..0000000 Binary files a/images/ios.png and /dev/null differ diff --git a/images/ipad.png b/images/ipad.png deleted file mode 100644 index fbca8fc..0000000 Binary files a/images/ipad.png and /dev/null differ diff --git a/images/konqueror.png b/images/konqueror.png deleted file mode 100644 index 632d67b..0000000 Binary files a/images/konqueror.png and /dev/null differ diff --git a/images/kubuntu.png b/images/kubuntu.png deleted file mode 100644 index 2137a78..0000000 Binary files a/images/kubuntu.png and /dev/null differ diff --git a/images/linux.png b/images/linux.png deleted file mode 100644 index 99f3465..0000000 Binary files a/images/linux.png and /dev/null differ diff --git a/images/midori.png b/images/midori.png deleted file mode 100644 index 974fd43..0000000 Binary files a/images/midori.png and /dev/null differ diff --git a/images/mint.png b/images/mint.png deleted file mode 100644 index 20b1c87..0000000 Binary files a/images/mint.png and /dev/null differ diff --git a/images/opera.png b/images/opera.png deleted file mode 100644 index aefd6b4..0000000 Binary files a/images/opera.png and /dev/null differ diff --git a/images/os/android.png b/images/os/android.png new file mode 100644 index 0000000..68f7a20 Binary files /dev/null and b/images/os/android.png differ diff --git a/images/arch.png b/images/os/arch.png similarity index 100% rename from images/arch.png rename to images/os/arch.png diff --git a/images/bada.png b/images/os/bada.png similarity index 100% rename from images/bada.png rename to images/os/bada.png diff --git a/images/os/blackberry.png b/images/os/blackberry.png new file mode 100644 index 0000000..b6da4c1 Binary files /dev/null and b/images/os/blackberry.png differ diff --git a/images/bsd.png b/images/os/bsd.png similarity index 100% rename from images/bsd.png rename to images/os/bsd.png diff --git a/images/centos.png b/images/os/centos.png similarity index 100% rename from images/centos.png rename to images/os/centos.png diff --git a/images/os/chromium.png b/images/os/chromium.png new file mode 100644 index 0000000..bf3ac84 Binary files /dev/null and b/images/os/chromium.png differ diff --git a/images/os/debian.png b/images/os/debian.png new file mode 100644 index 0000000..5db6b1d Binary files /dev/null and b/images/os/debian.png differ diff --git a/images/fedora.png b/images/os/fedora.png similarity index 100% rename from images/fedora.png rename to images/os/fedora.png diff --git a/images/os/freebsd.png b/images/os/freebsd.png new file mode 100644 index 0000000..b902fa6 Binary files /dev/null and b/images/os/freebsd.png differ diff --git a/images/os/gentoo.png b/images/os/gentoo.png new file mode 100644 index 0000000..b003357 Binary files /dev/null and b/images/os/gentoo.png differ diff --git a/images/os/gnu.png b/images/os/gnu.png new file mode 100644 index 0000000..83cd2b8 Binary files /dev/null and b/images/os/gnu.png differ diff --git a/images/os/kubuntu.png b/images/os/kubuntu.png new file mode 100644 index 0000000..fa3a451 Binary files /dev/null and b/images/os/kubuntu.png differ diff --git a/images/os/linux.png b/images/os/linux.png new file mode 100644 index 0000000..560b72b Binary files /dev/null and b/images/os/linux.png differ diff --git a/images/lubuntu.png b/images/os/lubuntu.png similarity index 100% rename from images/lubuntu.png rename to images/os/lubuntu.png diff --git a/images/mac.png b/images/os/mac.png similarity index 100% rename from images/mac.png rename to images/os/mac.png diff --git a/images/mandriva.png b/images/os/mandriva.png similarity index 100% rename from images/mandriva.png rename to images/os/mandriva.png diff --git a/images/meego.png b/images/os/meego.png similarity index 100% rename from images/meego.png rename to images/os/meego.png diff --git a/images/os/mint.png b/images/os/mint.png new file mode 100644 index 0000000..3125ac6 Binary files /dev/null and b/images/os/mint.png differ diff --git a/images/pclinuxos.png b/images/os/pclinuxos.png similarity index 100% rename from images/pclinuxos.png rename to images/os/pclinuxos.png diff --git a/images/os/playstation.png b/images/os/playstation.png new file mode 100644 index 0000000..e0f67ac Binary files /dev/null and b/images/os/playstation.png differ diff --git a/images/os/qnx.png b/images/os/qnx.png new file mode 100644 index 0000000..173c3f7 Binary files /dev/null and b/images/os/qnx.png differ diff --git a/images/redhat.png b/images/os/redhat.png similarity index 100% rename from images/redhat.png rename to images/os/redhat.png diff --git a/images/slackware.png b/images/os/slackware.png similarity index 100% rename from images/slackware.png rename to images/os/slackware.png diff --git a/images/os/solaris.png b/images/os/solaris.png new file mode 100644 index 0000000..fc1c8e1 Binary files /dev/null and b/images/os/solaris.png differ diff --git a/images/suse.png b/images/os/suse.png similarity index 100% rename from images/suse.png rename to images/os/suse.png diff --git a/images/os/symbian.png b/images/os/symbian.png new file mode 100644 index 0000000..979bf22 Binary files /dev/null and b/images/os/symbian.png differ diff --git a/images/os/ubuntu.png b/images/os/ubuntu.png new file mode 100644 index 0000000..46ca402 Binary files /dev/null and b/images/os/ubuntu.png differ diff --git a/images/os/unix.png b/images/os/unix.png new file mode 100644 index 0000000..f8b53e6 Binary files /dev/null and b/images/os/unix.png differ diff --git a/images/webos.png b/images/os/webos.png similarity index 100% rename from images/webos.png rename to images/os/webos.png diff --git a/images/os/wii.png b/images/os/wii.png new file mode 100644 index 0000000..fa06aff Binary files /dev/null and b/images/os/wii.png differ diff --git a/images/os/windows.png b/images/os/windows.png new file mode 100644 index 0000000..fd03783 Binary files /dev/null and b/images/os/windows.png differ diff --git a/images/winphone.png b/images/os/winphone.png similarity index 100% rename from images/winphone.png rename to images/os/winphone.png diff --git a/images/os/xbox.png b/images/os/xbox.png new file mode 100644 index 0000000..1de105e Binary files /dev/null and b/images/os/xbox.png differ diff --git a/images/os/xubuntu.png b/images/os/xubuntu.png new file mode 100644 index 0000000..543c68c Binary files /dev/null and b/images/os/xubuntu.png differ diff --git a/images/pc.png b/images/pc.png deleted file mode 100644 index 4c14bf0..0000000 Binary files a/images/pc.png and /dev/null differ diff --git a/images/rockmelt.png b/images/rockmelt.png deleted file mode 100644 index 1216bfb..0000000 Binary files a/images/rockmelt.png and /dev/null differ diff --git a/images/safari.png b/images/safari.png deleted file mode 100644 index 2732f25..0000000 Binary files a/images/safari.png and /dev/null differ diff --git a/images/solaris.png b/images/solaris.png deleted file mode 100644 index 2106291..0000000 Binary files a/images/solaris.png and /dev/null differ diff --git a/images/symbian.png b/images/symbian.png deleted file mode 100644 index 154a46a..0000000 Binary files a/images/symbian.png and /dev/null differ diff --git a/images/ubuntu.png b/images/ubuntu.png deleted file mode 100644 index 0c141d8..0000000 Binary files a/images/ubuntu.png and /dev/null differ diff --git a/images/undefined.png b/images/undefined.png index bb1c590..8b9b848 100644 Binary files a/images/undefined.png and b/images/undefined.png differ diff --git a/images/windows.png b/images/windows.png deleted file mode 100644 index bf51b18..0000000 Binary files a/images/windows.png and /dev/null differ diff --git a/images/xubuntu.png b/images/xubuntu.png deleted file mode 100644 index b160523..0000000 Binary files a/images/xubuntu.png and /dev/null differ diff --git a/index.html b/index.html index 019a3da..e5bd9cb 100644 --- a/index.html +++ b/index.html @@ -6,36 +6,55 @@ -
-

UAParser.js

+

UAParser.js

Lightweight JavaScript-based User-Agent String Parser

-
-

- - -

-
+
       
@@ -140,22 +154,21 @@
-
-

How well this parse other user-agent string? try select a string to be parsed:

+
+

Pick one user agent to be tested:

-

Want more? try enter any user-agent string you want to parse here:

+

Or enter any user-agent string you want to test here:

- -``` - -## Using node.js - -```js -var UAParser = require('ua-parser'); -var parser = new UAParser(); -var uaString = 'Mozilla/5.0 (PlayBook; U; RIM Tablet OS 1.0.0; en-US) AppleWebKit/534.11 (KHTML, like Gecko) Version/7.1.0.7 Safari/534.11'; - -console.log(parser.setUA(uaString).getDevice().model); // "PlayBook" -console.log(parser.getOS()) // {name: "RIM Tablet OS", version: "1.0.0"} -console.log(parser.getEngine().name); // "AppleWebKit" -``` - -## License - -Copyright © 2012 Faisalman <> - -Permission is hereby granted, free of charge, to any person obtaining a copy of -this software and associated documentation files (the "Software"), to deal in -the Software without restriction, including without limitation the rights to use, -copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the -Software, and to permit persons to whom the Software is furnished to do so, -subject to the following conditions: - -The above copyright notice and this permission notice shall be included in all -copies or substantial portions of the Software. diff --git a/src/ua-parser.js b/src/ua-parser.js deleted file mode 100644 index fb5e942..0000000 --- a/src/ua-parser.js +++ /dev/null @@ -1,678 +0,0 @@ -// UAParser.js v0.7.0 -// Lightweight JavaScript-based User-Agent string parser -// https://github.com/faisalman/ua-parser-js -// -// Copyright © 2012-2013 Faisalman -// Dual licensed under GPLv2 & MIT - -(function (window, undefined) { - - 'use strict'; - - ////////////// - // Constants - ///////////// - - - var EMPTY = '', - UNKNOWN = '?', - FUNC_TYPE = 'function', - UNDEF_TYPE = 'undefined', - OBJ_TYPE = 'object', - MAJOR = 'major', - MODEL = 'model', - NAME = 'name', - TYPE = 'type', - VENDOR = 'vendor', - VERSION = 'version', - ARCHITECTURE= 'architecture', - CONSOLE = 'console', - MOBILE = 'mobile', - TABLET = 'tablet', - SMARTTV = 'smarttv'; - - - /////////// - // Helper - ////////// - - - var util = { - has : function (str1, str2) { - if (typeof str1 === "string") { - return str2.toLowerCase().indexOf(str1.toLowerCase()) !== -1; - } - }, - lowerize : function (str) { - return str.toLowerCase(); - } - }; - - - /////////////// - // Map helper - ////////////// - - - var mapper = { - - rgx : function () { - - // loop through all regexes maps - for (var result, i = 0, j, k, p, q, matches, match, args = arguments; i < args.length; i += 2) { - - var regex = args[i], // even sequence (0,2,4,..) - props = args[i + 1]; // odd sequence (1,3,5,..) - - // construct object barebones - if (typeof(result) === UNDEF_TYPE) { - result = {}; - for (p in props) { - q = props[p]; - if (typeof(q) === OBJ_TYPE) { - result[q[0]] = undefined; - } else { - result[q] = undefined; - } - } - } - - // try matching uastring with regexes - for (j = k = 0; j < regex.length; j++) { - matches = regex[j].exec(this.getUA()); - if (!!matches) { - for (p = 0; p < props.length; p++) { - match = matches[++k]; - q = props[p]; - // check if given property is actually array - if (typeof(q) === OBJ_TYPE && q.length > 0) { - if (q.length == 2) { - if (typeof(q[1]) == FUNC_TYPE) { - // assign modified match - result[q[0]] = q[1].call(this, match); - } else { - // assign given value, ignore regex match - result[q[0]] = q[1]; - } - } else if (q.length == 3) { - // check whether function or regex - if (typeof(q[1]) === FUNC_TYPE && !(q[1].exec && q[1].test)) { - // call function (usually string mapper) - result[q[0]] = match ? q[1].call(this, match, q[2]) : undefined; - } else { - // sanitize match using given regex - result[q[0]] = match ? match.replace(q[1], q[2]) : undefined; - } - } else if (q.length == 4) { - result[q[0]] = match ? q[3].call(this, match.replace(q[1], q[2])) : undefined; - } - } else { - result[q] = match ? match : undefined; - } - } - break; - } - } - - if(!!matches) break; // break the loop immediately if match found - } - return result; - }, - - str : function (str, map) { - - for (var i in map) { - // check if array - if (typeof(map[i]) === OBJ_TYPE && map[i].length > 0) { - for (var j = 0; j < map[i].length; j++) { - if (util.has(map[i][j], str)) { - return (i === UNKNOWN) ? undefined : i; - } - } - } else if (util.has(map[i], str)) { - return (i === UNKNOWN) ? undefined : i; - } - } - return str; - } - }; - - - /////////////// - // String map - ////////////// - - - var maps = { - - browser : { - oldsafari : { - major : { - '1' : ['/8', '/1', '/3'], - '2' : '/4', - '?' : '/' - }, - version : { - '1.0' : '/8', - '1.2' : '/1', - '1.3' : '/3', - '2.0' : '/412', - '2.0.2' : '/416', - '2.0.3' : '/417', - '2.0.4' : '/419', - '?' : '/' - } - } - }, - - device : { - sprint : { - model : { - 'Evo Shift 4G' : '7373KT' - }, - vendor : { - 'HTC' : 'APA', - 'Sprint' : 'Sprint' - } - } - }, - - os : { - windows : { - version : { - 'ME' : '4.90', - 'NT 3.11' : 'NT3.51', - 'NT 4.0' : 'NT4.0', - '2000' : 'NT 5.0', - 'XP' : ['NT 5.1', 'NT 5.2'], - 'Vista' : 'NT 6.0', - '7' : 'NT 6.1', - '8' : 'NT 6.2', - '8.1' : 'NT 6.3', - 'RT' : 'ARM' - } - } - } - }; - - - ////////////// - // Regex map - ///////////// - - - var regexes = { - - browser : [[ - - /APP-([\w\s-\d]+)\/((\d+)?[\w\.]+)/i // KTA App - ], [NAME, VERSION, MAJOR], [ - - // Presto based - /(opera\smini)\/((\d+)?[\w\.-]+)/i, // Opera Mini - /(opera\s[mobiletab]+).+version\/((\d+)?[\w\.-]+)/i, // Opera Mobi/Tablet - /(opera).+version\/((\d+)?[\w\.]+)/i, // Opera > 9.80 - /(opera)[\/\s]+((\d+)?[\w\.]+)/i // Opera < 9.80 - - ], [NAME, VERSION, MAJOR], [ - - /\s(opr)\/((\d+)?[\w\.]+)/i // Opera Webkit - ], [[NAME, 'Opera'], VERSION, MAJOR], [ - - // Mixed - /(kindle)\/((\d+)?[\w\.]+)/i, // Kindle - /(lunascape|maxthon|netfront|jasmine|blazer)[\/\s]?((\d+)?[\w\.]+)*/i, - // Lunascape/Maxthon/Netfront/Jasmine/Blazer - - // Trident based - /(avant\s|iemobile|slim|baidu)(?:browser)?[\/\s]?((\d+)?[\w\.]*)/i, - // Avant/IEMobile/SlimBrowser/Baidu - /(?:ms|\()(ie)\s((\d+)?[\w\.]+)/i, // Internet Explorer - - // Webkit/KHTML based - /(rekonq)((?:\/)[\w\.]+)*/i, // Rekonq - /(chromium|flock|rockmelt|midori|epiphany|silk|skyfire|ovibrowser|bolt|iron)\/((\d+)?[\w\.-]+)/i - // Chromium/Flock/RockMelt/Midori/Epiphany/Silk/Skyfire/Bolt/Iron - ], [NAME, VERSION, MAJOR], [ - - /(trident).+rv[:\s]((\d+)?[\w\.]+).+like\sgecko/i // IE11 - ], [[NAME, 'IE'], VERSION, MAJOR], [ - - /(yabrowser)\/((\d+)?[\w\.]+)/i // Yandex - ], [[NAME, 'Yandex'], VERSION, MAJOR], [ - - /(comodo_dragon)\/((\d+)?[\w\.]+)/i // Comodo Dragon - ], [[NAME, /_/g, ' '], VERSION, MAJOR], [ - - /(chrome|omniweb|arora|[tizenoka]{5}\s?browser)\/v?((\d+)?[\w\.]+)/i - // Chrome/OmniWeb/Arora/Tizen/Nokia - ], [NAME, VERSION, MAJOR], [ - - /(dolfin)\/((\d+)?[\w\.]+)/i // Dolphin - ], [[NAME, 'Dolphin'], VERSION, MAJOR], [ - - /((?:android.+)crmo|crios)\/((\d+)?[\w\.]+)/i // Chrome for Android/iOS - ], [[NAME, 'Chrome'], VERSION, MAJOR], [ - - /version\/((\d+)?[\w\.]+).+?mobile\/\w+\s(safari)/i // Mobile Safari - ], [VERSION, MAJOR, [NAME, 'Mobile Safari']], [ - - /version\/((\d+)?[\w\.]+).+?(mobile\s?safari|safari)/i // Safari & Safari Mobile - ], [VERSION, MAJOR, NAME], [ - - /webkit.+?(mobile\s?safari|safari)((\/[\w\.]+))/i // Safari < 3.0 - ], [NAME, [MAJOR, mapper.str, maps.browser.oldsafari.major], [VERSION, mapper.str, maps.browser.oldsafari.version]], [ - - /(konqueror)\/((\d+)?[\w\.]+)/i, // Konqueror - /(webkit|khtml)\/((\d+)?[\w\.]+)/i - ], [NAME, VERSION, MAJOR], [ - - // Gecko based - /(navigator|netscape)\/((\d+)?[\w\.-]+)/i // Netscape - ], [[NAME, 'Netscape'], VERSION, MAJOR], [ - /(swiftfox)/i, // Swiftfox - /(icedragon|iceweasel|camino|chimera|fennec|maemo\sbrowser|minimo|conkeror)[\/\s]?((\d+)?[\w\.\+]+)/i, - // IceDragon/Iceweasel/Camino/Chimera/Fennec/Maemo/Minimo/Conkeror - /(firefox|seamonkey|k-meleon|icecat|iceape|firebird|phoenix)\/((\d+)?[\w\.-]+)/i, - // Firefox/SeaMonkey/K-Meleon/IceCat/IceApe/Firebird/Phoenix - /(mozilla)\/((\d+)?[\w\.]+).+rv\:.+gecko\/\d+/i, // Mozilla - - // Other - /(uc\s?browser|polaris|lynx|dillo|icab|doris|amaya|w3m|netsurf|qqbrowser)[\/\s]?((\d+)?[\w\.]+)/i, - // UCBrowser/Polaris/Lynx/Dillo/iCab/Doris/Amaya/w3m/NetSurf/QQBrowser - /(links)\s\(((\d+)?[\w\.]+)/i, // Links - /(gobrowser)\/?((\d+)?[\w\.]+)*/i, // GoBrowser - /(ice\s?browser)\/v?((\d+)?[\w\._]+)/i, // ICE Browser - /(mosaic)[\/\s]((\d+)?[\w\.]+)/i // Mosaic - ], [NAME, VERSION, MAJOR], [ - - /(apple(?:coremedia|))\/((\d+)[\w\._]+)/i, // Generic Apple CoreMedia - /(coremedia) v((\d+)[\w\._]+)/i - ], [NAME, VERSION, MAJOR], [ - - /(aqualung|lyssna|bsplayer)\/((\d+)?[\w\.-]+)/i // Aqualung/Lyssna/BSPlayer - ], [NAME, VERSION], [ - - /(ares|ossproxy)\s((\d+)[\w\.-]+)/i // Ares/OSSProxy - ], [NAME, VERSION, MAJOR], [ - - /(audacious|audimusicstream|amarok|bass|core|dalvik|gnomemplayer|music on console|nsplayer|psp-internetradioplayer|videos)\/((\d+)[\w\.-]+)/i, - // Audacious/AudiMusicStream/Amarok/BASS/OpenCORE/Dalvik/GnomeMplayer/MoC - // NSPlayer/PSP-InternetRadioPlayer/Videos - /(clementine|music player daemon)\s((\d+)[\w\.-]+)/i, // Clementine/MPD - /(lg player|nexplayer)\s((\d+)[\d\.]+)/i, - /player\/(nexplayer|lg player)\s((\d+)[\w\.-]+)/i // NexPlayer/LG Player - ], [NAME, VERSION, MAJOR], [ - /(nexplayer)\s((\d+)[\w\.-]+)/i // Nexplayer - ], [NAME, VERSION, MAJOR], [ - - /(flrp)\/((\d+)[\w\.-]+)/i // Flip Player - ], [[NAME, 'Flip Player'], VERSION, MAJOR], [ - - /(fstream|nativehost|queryseekspider|ia-archiver|facebookexternalhit)/i - // FStream/NativeHost/QuerySeekSpider/IA Archiver/facebookexternalhit - ], [NAME], [ - - /(gstreamer) souphttpsrc (?:\([^\)]+\)){0,1} libsoup\/((\d+)[\w\.-]+)/i - // Gstreamer - ], [NAME, VERSION, MAJOR], [ - - /(htc streaming player)\s[\w_]+\s\/\s((\d+)[\d\.]+)/i, // HTC Streaming Player - /(java|python-urllib|python-requests|wget|libcurl)\/((\d+)[\w\.-_]+)/i, - // Java/urllib/requests/wget/cURL - /(lavf)((\d+)[\d\.]+)/i // Lavf (FFMPEG) - ], [NAME, VERSION, MAJOR], [ - - /(htc_one_s)\/((\d+)[\d\.]+)/i // HTC One S - ], [[NAME, /_/g, ' '], VERSION, MAJOR], [ - - /(mplayer)(?:\s|\/)(?:(?:sherpya-){0,1}svn)(?:-|\s)(r\d+(?:-\d+[\w\.-]+){0,1})/i - // MPlayer SVN - ], [NAME, VERSION], [ - - /(mplayer)(?:\s|\/|[unkow-]+)((\d+)[\w\.-]+)/i // MPlayer - ], [NAME, VERSION, MAJOR], [ - - /(mplayer)/i, // MPlayer (no other info) - /(yourmuze)/i, // YourMuze - /(media player classic|nero showtime)/i // Media Player Classic/Nero ShowTime - ], [NAME], [ - - /(nero (?:home|scout))\/((\d+)[\w\.-]+)/i // Nero Home/Nero Scout - ], [NAME, VERSION, MAJOR], [ - - /(nokia\d+)\/((\d+)[\w\.-]+)/i // Nokia - ], [NAME, VERSION, MAJOR], [ - - /\s(songbird)\/((\d+)[\w\.-]+)/i // Songbird/Philips-Songbird - ], [NAME, VERSION, MAJOR], [ - - /(winamp)3 version ((\d+)[\w\.-]+)/i, // Winamp - /(winamp)\s((\d+)[\w\.-]+)/i, - /(winamp)mpeg\/((\d+)[\w\.-]+)/i - ], [NAME, VERSION, MAJOR], [ - - /(ocms-bot|tapinradio|tunein radio|unknown|winamp|inlight radio)/i // OCMS-bot/tap in radio/tunein/unknown/winamp (no other info) - // inlight radio - ], [NAME], [ - - /(quicktime|rma|radioapp|radioclientapplication|soundtap|totem|stagefright|streamium)\/((\d+)[\w\.-]+)/i - // QuickTime/RealMedia/RadioApp/RadioClientApplication/ - // SoundTap/Totem/Stagefright/Streamium - ], [NAME, VERSION, MAJOR], [ - - /(smp)((\d+)[\d\.]+)/i // SMP - ], [NAME, VERSION, MAJOR], [ - - /(vlc) media player - version ((\d+)[\w\.]+)/i, // VLC Videolan - /(vlc)\/((\d+)[\w\.-]+)/i, - /(xbmc|gvfs|xine|xmms|irapp)\/((\d+)[\w\.-]+)/i, // XBMC/gvfs/Xine/XMMS/irapp - /(foobar2000)\/((\d+)[\d\.]+)/i, // Foobar2000 - /(itunes)\/((\d+)[\d\.]+)/i // iTunes - ], [NAME, VERSION, MAJOR], [ - - /(wmplayer)\/((\d+)[\w\.-]+)/i, // Windows Media Player - /(windows-media-player)\/((\d+)[\w\.-]+)/i - ], [[NAME, /-/g, ' '], VERSION, MAJOR], [ - - /windows\/((\d+)[\w\.-]+) upnp\/[\d\.]+ dlnadoc\/[\d\.]+ (home media server)/i - // Windows Media Server - ], [VERSION, MAJOR, [NAME, 'Windows']], [ - - /(com\.riseupradioalarm)\/((\d+)[\d\.]*)/i // RiseUP Radio Alarm - ], [NAME, VERSION, MAJOR], [ - - /(rad.io)\s((\d+)[\d\.]+)/i, // Rad.io - /(radio.(?:de|at|fr))\s((\d+)[\d\.]+)/i - ], [[NAME, 'rad.io'], VERSION, MAJOR] - - ], - - cpu : [[ - - /(?:(amd|x(?:(?:86|64)[_-])?|wow|win)64)[;\)]/i // AMD64 - ], [[ARCHITECTURE, 'amd64']], [ - - /(ia32(?=;))/i // IA32 (quicktime) - ], [[ARCHITECTURE, util.lowerize]], [ - - /((?:i[346]|x)86)[;\)]/i // IA32 - ], [[ARCHITECTURE, 'ia32']], [ - - // PocketPC mistakenly identified as PowerPC - /windows\s(ce|mobile);\sppc;/i - ], [[ARCHITECTURE, 'arm']], [ - - /((?:ppc|powerpc)(?:64)?)(?:\smac|;|\))/i // PowerPC - ], [[ARCHITECTURE, /ower/, '', util.lowerize]], [ - - /(sun4\w)[;\)]/i // SPARC - ], [[ARCHITECTURE, 'sparc']], [ - - /(ia64(?=;)|68k(?=\))|arm(?=v\d+;)|(?:irix|mips|sparc)(?:64)?(?=;)|pa-risc)/i - // IA64, 68K, ARM, IRIX, MIPS, SPARC, PA-RISC - ], [ARCHITECTURE, util.lowerize] - ], - - device : [[ - - /\((ipad|playbook);[\w\s\);-]+(rim|apple)/i // iPad/PlayBook - ], [MODEL, VENDOR, [TYPE, TABLET]], [ - - /applecoremedia\/[\w\.]+ \((ipad)/ // iPad - ], [MODEL, [VENDOR, 'Apple'], [TYPE, TABLET]], [ - - /(apple\s{0,1}tv)/i // Apple TV - ], [[MODEL, 'Apple TV'], [VENDOR, 'Apple']], [ - - /(hp).+(touchpad)/i, // HP TouchPad - /(kindle)\/([\w\.]+)/i, // Kindle - /\s(nook)[\w\s]+build\/(\w+)/i, // Nook - /(dell)\s(strea[kpr\s\d]*[\dko])/i // Dell Streak - ], [VENDOR, MODEL, [TYPE, TABLET]], [ - - /(kf[A-z]+)\sbuild\/[\w\.]+.*silk\//i // Kindle Fire HD - ], [MODEL, [VENDOR, 'Amazon'], [TYPE, TABLET]], [ - - /\((ip[honed|\s\w*]+);.+(apple)/i // iPod/iPhone - ], [MODEL, VENDOR, [TYPE, MOBILE]], [ - /\((ip[honed|\s\w*]+);/i // iPod/iPhone - ], [MODEL, [VENDOR, 'Apple'], [TYPE, MOBILE]], [ - - /(blackberry)[\s-]?(\w+)/i, // BlackBerry - /(blackberry|benq|palm(?=\-)|sonyericsson|acer|asus|dell|huawei|meizu|motorola)[\s_-]?([\w-]+)*/i, - // BenQ/Palm/Sony-Ericsson/Acer/Asus/Dell/Huawei/Meizu/Motorola - /(hp)\s([\w\s]+\w)/i, // HP iPAQ - /(asus)-?(\w+)/i // Asus - ], [VENDOR, MODEL, [TYPE, MOBILE]], [ - /\((bb10);\s(\w+)/i // BlackBerry 10 - ], [[VENDOR, 'BlackBerry'], MODEL, [TYPE, MOBILE]], [ - // Asus Tablets - /android.+((transfo[prime\s]{4,10}\s\w+|eeepc|slider\s\w+|nexus 7))/i - ], [[VENDOR, 'Asus'], MODEL, [TYPE, TABLET]], [ - - /(sony)\s(tablet\s[ps])/i // Sony Tablets - ], [VENDOR, MODEL, [TYPE, TABLET]], [ - - /(nintendo)\s([wids3u]+)/i // Nintendo - ], [VENDOR, MODEL, [TYPE, CONSOLE]], [ - - /((playstation)\s[3portablevi]+)/i // Playstation - ], [[VENDOR, 'Sony'], MODEL, [TYPE, CONSOLE]], [ - - /(sprint\s(\w+))/i // Sprint Phones - ], [[VENDOR, mapper.str, maps.device.sprint.vendor], [MODEL, mapper.str, maps.device.sprint.model], [TYPE, MOBILE]], [ - - /(Lenovo)\s?(S(?:5000|6000)+(?:[-][\w+]))/i // Lenovo tablets - ], [[VENDOR, 'Lenovo'], MODEL, [TYPE, TABLET]], [ - - /(htc)[;_\s-]+([\w\s]+(?=\))|\w+)*/i, // HTC - /(zte)-(\w+)*/i, // ZTE - /(alcatel|geeksphone|huawei|lenovo|nexian|panasonic|(?=;\s)sony)[_\s-]?([\w-]+)*/i - // Alcatel/GeeksPhone/Huawei/Lenovo/Nexian/Panasonic/Sony - ], [VENDOR, [MODEL, /_/g, ' '], [TYPE, MOBILE]], [ - - // Motorola - /\s((milestone|droid(?:[2-4x]|\s(?:bionic|x2|pro|razr))?(:?\s4g)?))[\w\s]+build\//i, - /(mot)[\s-]?(\w+)*/i - ], [[VENDOR, 'Motorola'], MODEL, [TYPE, MOBILE]], [ - /android.+\s((mz60\d|xoom[\s2]{0,2}))\sbuild\//i - ], [[VENDOR, 'Motorola'], MODEL, [TYPE, TABLET]], [ - - /android.+((sch-i[89]0\d|shw-m380s|gt-p\d{4}|gt-n8000|sgh-t8[56]9|nexus 10))/i - ], [[VENDOR, 'Samsung'], MODEL, [TYPE, TABLET]], [ // Samsung - /((s[cgp]h-\w+|gt-\w+|galaxy\snexus))/i, - /(sam[sung]*)[\s-]*(\w+-?[\w-]*)*/i, - /sec-((sgh\w+))/i - ], [[VENDOR, 'Samsung'], MODEL, [TYPE, MOBILE]], [ - /(sie)-(\w+)*/i // Siemens - ], [[VENDOR, 'Siemens'], MODEL, [TYPE, MOBILE]], [ - - /(maemo|nokia).*(n900|lumia\s\d+)/i, // Nokia - /(nokia)[\s_-]?([\w-]+)*/i - ], [[VENDOR, 'Nokia'], MODEL, [TYPE, MOBILE]], [ - - /android\s3\.[\s\w-;]{10}((a\d{3}))/i // Acer - ], [[VENDOR, 'Acer'], MODEL, [TYPE, TABLET]], [ - - /android\s3\.[\s\w-;]{10}(lg?)-([06cv9]{3,4})/i // LG Tablet - ], [[VENDOR, 'LG'], MODEL, [TYPE, TABLET]], [ - /(lg) netcast\.tv/i // LG SmartTV - ], [VENDOR, [TYPE, SMARTTV]], [ - /((nexus\s[45]))/i, // LG - /(lg)[e;\s-\/]+(\w+)*/i - ], [[VENDOR, 'LG'], MODEL, [TYPE, MOBILE]], [ - - /android.+((ideatab[a-z0-9\-\s]+))/i // Lenovo - ], [[VENDOR, 'Lenovo'], MODEL, [TYPE, TABLET]], [ - - /(mobile|tablet);.+rv\:.+gecko\//i // Unidentifiable - ], [TYPE, VENDOR, MODEL] - ], - - engine : [[ - /APP-([\w\s-\d]+)\/((\d+)?[\w\.]+)/i // KTA App - ], [[NAME, 'Mobile-App'], VERSION], [ - - /(presto)\/([\w\.]+)/i, // Presto - /(webkit|trident|netfront|netsurf|amaya|lynx|w3m)\/([\w\.]+)/i, // WebKit/Trident/NetFront/NetSurf/Amaya/Lynx/w3m - /(khtml|tasman|links)[\/\s]\(?([\w\.]+)/i, // KHTML/Tasman/Links - /(icab)[\/\s]([23]\.[\d\.]+)/i // iCab - ], [NAME, VERSION], [ - - /rv\:([\w\.]+).*(gecko)/i // Gecko - ], [VERSION, NAME] - ], - - os : [[ - - // Windows based - /microsoft\s(windows)\s(vista|xp)/i // Windows (iTunes) - ], [NAME, VERSION], [ - /(windows)\snt\s6\.2;\s(arm)/i, // Windows RT - /(windows\sphone(?:\sos)*|windows\smobile|windows)[\s\/]?([ntce\d\.\s]+\w)/i - ], [NAME, [VERSION, mapper.str, maps.os.windows.version]], [ - /(win(?=3|9|n)|win\s9x\s)([nt\d\.]+)/i - ], [[NAME, 'Windows'], [VERSION, mapper.str, maps.os.windows.version]], [ - - // Mobile/Embedded OS - /\((bb)(10);/i // BlackBerry 10 - ], [[NAME, 'BlackBerry'], VERSION], [ - /(blackberry)\w*\/?([\w\.]+)*/i, // Blackberry - /(tizen)\/([\w\.]+)/i, // Tizen - /(android|webos|palm\os|qnx|bada|rim\stablet\sos|meego)[\/\s-]?([\w\.]+)*/i - // Android/WebOS/Palm/QNX/Bada/RIM/MeeGo - ], [NAME, VERSION], [ - /(symbian\s?os|symbos|s60(?=;))[\/\s-]?([\w\.]+)*/i // Symbian - ], [[NAME, 'Symbian'], VERSION],[ - /mozilla.+\(mobile;.+gecko.+firefox/i // Firefox OS - ], [[NAME, 'Firefox OS'], VERSION], [ - - // Console - /(nintendo|playstation)\s([wids3portablevu]+)/i, // Nintendo/Playstation - - // GNU/Linux based - /(mint)[\/\s\(]?(\w+)*/i, // Mint - /(joli|[kxln]?ubuntu|debian|[open]*suse|gentoo|arch|slackware|fedora|mandriva|centos|pclinuxos|redhat|zenwalk)[\/\s-]?([\w\.-]+)*/i, - // Joli/Ubuntu/Debian/SUSE/Gentoo/Arch/Slackware - // Fedora/Mandriva/CentOS/PCLinuxOS/RedHat/Zenwalk - /(hurd|linux)\s?([\w\.]+)*/i, // Hurd/Linux - /(gnu)\s?([\w\.]+)*/i // GNU - ], [NAME, VERSION], [ - - /(cros)\s[\w]+\s([\w\.]+\w)/i // Chromium OS - ], [[NAME, 'Chromium OS'], VERSION],[ - - // Solaris - /(sunos)\s?([\w\.]+\d)*/i // Solaris - ], [[NAME, 'Solaris'], VERSION], [ - - // BSD based - /\s([frentopc-]{0,4}bsd|dragonfly)\s?([\w\.]+)*/i // FreeBSD/NetBSD/OpenBSD/PC-BSD/DragonFly - ], [NAME, VERSION],[ - - /(ip[honead]+)(?:.*os\s*([\w]+)*\slike\smac|;\sopera)/i // iOS - ], [[NAME, 'iOS'], [VERSION, /_/g, '.']], [ - - /(mac\sos\sx)\s?([\w\s\.]+\w)*/i // Mac OS - ], [NAME, [VERSION, /_/g, '.']], [ - - // Other - /(haiku)\s(\w+)/i, // Haiku - /(aix)\s((\d)(?=\.|\)|\s)[\w\.]*)*/i, // AIX - /(macintosh|mac(?=_powerpc)|plan\s9|minix|beos|os\/2|amigaos|morphos|risc\sos)/i, - // Plan9/Minix/BeOS/OS2/AmigaOS/MorphOS/RISCOS - /(unix)\s?([\w\.]+)*/i // UNIX - ], [NAME, VERSION] - ] - }; - - - ///////////////// - // Constructor - //////////////// - - - var UAParser = function (uastring) { - - var ua = uastring || ((window && window.navigator && window.navigator.userAgent) ? window.navigator.userAgent : EMPTY); - - if (!(this instanceof UAParser)) { - return new UAParser(uastring).getResult(); - } - this.getBrowser = function () { - return mapper.rgx.apply(this, regexes.browser); - }; - this.getCPU = function () { - return mapper.rgx.apply(this, regexes.cpu); - }; - this.getDevice = function () { - return mapper.rgx.apply(this, regexes.device); - }; - this.getEngine = function () { - return mapper.rgx.apply(this, regexes.engine); - }; - this.getOS = function () { - return mapper.rgx.apply(this, regexes.os); - }; - this.getResult = function() { - return { - ua : this.getUA(), - browser : this.getBrowser(), - engine : this.getEngine(), - os : this.getOS(), - device : this.getDevice(), - cpu : this.getCPU() - }; - }; - this.getUA = function () { - return ua; - }; - this.setUA = function (uastring) { - ua = uastring; - return this; - }; - this.setUA(ua); - }; - - - /////////// - // Export - ////////// - - - // check js environment - if (typeof(exports) !== UNDEF_TYPE) { - // nodejs env - if (typeof(module) !== UNDEF_TYPE && module.exports) { - exports = module.exports = UAParser; - } - exports.UAParser = UAParser; - } else { - // browser env - window.UAParser = UAParser; - // requirejs env (optional) - if (typeof(define) === FUNC_TYPE && define.amd) { - define(function () { - return UAParser; - }); - } - // jQuery/Zepto specific (optional) - var $ = window.jQuery || window.Zepto; - if (typeof($) !== UNDEF_TYPE) { - var parser = new UAParser(); - $.ua = parser.getResult(); - $.ua.get = function() { - return parser.getUA(); - }; - $.ua.set = function (uastring) { - parser.setUA(uastring); - var result = parser.getResult(); - for (var prop in result) { - $.ua[prop] = result[prop]; - } - }; - } - } - -})(this); diff --git a/ua-list-example.js b/ua-list-example.js index 7f269df..2e9f8f5 100644 --- a/ua-list-example.js +++ b/ua-list-example.js @@ -161,6 +161,9 @@ var uaExampleList = [ // Polaris "LG-LX600 Polaris/6.0 MMP/2.0 Profile/MIDP-2.1 Configuration/CLDC-1.1", +// Rockmelt +"Mozilla/5.0 (Windows; U; Windows NT 6.1; en-US) AppleWebKit/534.7 (KHTML, like Gecko) RockMelt/0.8.36.78 Chrome/7.0.517.44 Safari/534.7", + // Safari // OSX "Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_6; en-us) AppleWebKit/533.20.25 (KHTML, like Gecko) Version/5.0.4 Safari/533.20.27", @@ -174,12 +177,21 @@ var uaExampleList = [ // SeaMonkey "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1b4pre) Gecko/20090405 SeaMonkey/2.0b1pre", +// Silk +"Mozilla/5.0 (Linux; U; Android 2.3.4; en-us; Silk/1.0.13.328_10008910) AppleWebKit/533.1 (KHTML, like Gecko) Version/4.0 Mobile Safari/533.1 Silk-Accelerated=true", + +// Skyfire +"Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_7; en-us) AppleWebKit/530.17 (KHTML, like Gecko) Version/4.0 Safari/530.17 Skyfire/2.0", + // Slimbrowser "Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 5.1; Trident/4.0; SlimBrowser)", // Swiftfox "Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.8.1) Gecko/20061024 Firefox/2.0 (Swiftfox)", +// UC +"Mozilla/5.0 (Linux; U; Android 2.3.4; en-US; MT11i Build/4.0.2.A.0.62) AppleWebKit/534.31 (KHTML, like Gecko) UCBrowser/9.0.1.275 U3/0.8.0 Mobile Safari/534.31", + // Tizen "Mozilla/5.0 (Linux; U; Tizen/1.0 like Android; en-us; AppleWebKit/534.46 (KHTML, like Gecko) Tizen Browser/1.0 Mobile",