User-Agent是HTTP请求头的一部分,记录了客户端(浏览器、爬虫、应用程序等)的详细信息。在Nginx日志中,User-Agent可以帮助我们分析访问来源、设备类型、浏览器版本等信息。
典型的User-Agent字符串包含以下信息:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
Mozilla/5.0
- 兼容性标记(Windows NT 10.0; Win64; x64)
- 操作系统信息AppleWebKit/537.36
- 渲染引擎(KHTML, like Gecko)
- 兼容性标记Chrome/91.0.4472.124
- 浏览器及版本Safari/537.36
- 兼容性标记在nginx.conf中配置日志格式:
log_format ua_log '$remote_addr - $remote_user [$time_local] '
'"$request" $status $body_bytes_sent '
'"$http_referer" "$http_user_agent"';
推荐工具:
1. GoAccess - 实时日志分析工具
bash
goaccess access.log --log-format=COMBINED
AWStats - 详细的Web统计工具
ELK Stack (Elasticsearch, Logstash, Kibana) - 企业级日志分析方案
Python示例:
from user_agents import parse
ua_string = "Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1"
user_agent = parse(ua_string)
print(f"Browser: {user_agent.browser.family} {user_agent.browser.version_string}")
print(f"OS: {user_agent.os.family} {user_agent.os.version_string}")
print(f"Device: {user_agent.device.family}")
print(f"Is mobile: {user_agent.is_mobile}")
桌面浏览器:
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
移动设备:
Mozilla/5.0 (iPhone; CPU iPhone OS 13_2_3 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/13.0.3 Mobile/15E148 Safari/604.1
爬虫/Bot:
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
API客户端:
curl/7.68.0
识别爬虫/恶意请求:
map $http_user_agent $is_bot {
default 0;
~*(googlebot|bingbot|YandexBot|baiduspider|facebookexternalhit) 1;
~*(curl|wget|python-requests) 1;
}
按设备类型分流:
map $http_user_agent $mobile {
default 0;
~*(android|iphone|ipod|ipad|blackberry|opera mini|iemobile) 1;
}
统计浏览器版本分布:
awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head -20
Python: user-agents
库
pip install pyyaml ua-parser user-agents
JavaScript: ua-parser-js
npm install ua-parser-js
在线解析工具:
通过合理分析User-Agent,您可以更好地了解您的用户群体,优化网站体验,并识别潜在的恶意请求。