Analýza uživatelského agenta pomocí PHP, JavaScriptu nebo Pythonu

Vyslovit frázi „user agent“ nebo „user agent string“ se rovná vyslovení nadávky. Vývojáři používali uživatelského agenta ke zjišťování, zda prohlížeč má danou funkci, místo toho, jak víte, zjišťovali, zda funkce skutečně existuje prostřednictvím detekce objektu nebo vlastnosti. Tyto dny jsou sice za námi, ale jedním ze špinavých tajemství webu je, že uživatelský agent má stále mnoho využití. Jedním z častých použití je například zjišťování, které mobilní téma nabídnout; tuto detekci lze provést na straně klienta i serveru. Nedávno jsem našel ua-parser Tobieho Langela, skvělé repo, které poskytuje jednoduchou analýzu UA v JavaScriptu, PHP a Pythonu.

Ukázkový uživatelský agent

'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'

Použití JavaScriptu

var uaParser = require('ua-parser'),
	uaParser.parse(navigator.userAgent);

console.log(ua.tostring());  // -> "Safari 5.0.1"

console.log(ua.toVersionString());  // -> "5.0.1"

console.log(ua.family);  // -> "Safari"

console.log(ua.major); // -> 5

console.log(ua.minor);  // -> 0

console.log(ua.patch);  // -> 1

Využití PHP

// Require the library
require("UAParser.php");

// Parse the UA
$result = UA::parse();

// Get loads of information! :)
print $result->full;  // -> Chrome 16.0.912/Mac OS X 10.6.8

print $result->browserFull;  // -> "Chrome 16.0.912"

print $result->browser;  // -> "Chrome"

print $result->version;  // -> "16.0.912"

print $result->major;  // -> 16 (minor, build, & revision also available)

print $result->osFull;  // -> "Mac OS X 10.6.8"

print $result->os;  // -> "Mac OS X"

print $result->osVersion;  // -> "10.6.8"

print $result->osMajor;  // -> 10 (osMinor, osBuild, & osRevision also available)

Použití Pythonu

# Import the lib
from ua_parser import user_agent_parser

# Parse the user agent
user_agent_parser.Parse(request.META.get('HTTP_USER_AGENT'))

print result_dict['user_agent']
# {'major': '5', 'minor': '1', 'family': 'Mobile Safari', 'patch': None}

print result_dict['os']
# {'major': '5', 'patch_minor': None, 'minor': '1', 'family': 'iOS', 'patch': None}

print result_dict['device']
# {'is_spider': False, 'is_mobile': True, 'family': 'iPhone'}

Výše uvedené ukázky kódu jsou všechny snadno rozpoznatelné těmi, kdo je mohou používat; použití informací uživatelského agenta je jednoduché a API také. Gratuluji Tobiemu za tuto pěknou knihovnu.