说短语“用户代理”或“用户代理字符串”无异于说脏话。开发人员过去常常使用用户代理来检测浏览器是否具有给定功能,而不是通过对象或属性检测来检查该功能是否实际存在。虽然那些日子已经过去了,但是网络的肮脏秘密之一是用户代理仍然有很多用途。例如,一种常见的用途是检测提供哪个移动主题;这种检测可以在客户端和服务器端进行。我最近发现了 Tobie Langel 的 ua-parser,这是一个很棒的存储库,它提供了简单的 JavaScript、PHP 和 Python 用户分析。
示例用户代理
'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'
JavaScript 用法
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
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)
Python 用法
# 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'}
上面的代码示例对于会使用它们的人来说都是很容易识别的;使用用户代理信息很简单,API 也很简单。 Tobie 为这个漂亮的图书馆干得好。
