插件窝 干货文章 Nginx日志中的User-Agent如何解析

Nginx日志中的User-Agent如何解析

User Agent AppleWebKit Mozilla 517    来源:    2025-05-04

Nginx日志中的User-Agent解析指南

User-Agent是HTTP请求头的一部分,记录了客户端(浏览器、爬虫、应用程序等)的详细信息。在Nginx日志中,User-Agent可以帮助我们分析访问来源、设备类型、浏览器版本等信息。

1. 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 - 兼容性标记

2. 解析方法

方法一:使用Nginx日志格式直接记录

在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

  1. AWStats - 详细的Web统计工具

  2. 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}")

3. 常见User-Agent类型

  1. 桌面浏览器:

    Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/91.0.4472.124 Safari/537.36
    
  2. 移动设备:

    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
    
  3. 爬虫/Bot:

    Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html)
    
  4. API客户端:

    curl/7.68.0
    

4. 高级分析技巧

  1. 识别爬虫/恶意请求:

    map $http_user_agent $is_bot {
       default 0;
       ~*(googlebot|bingbot|YandexBot|baiduspider|facebookexternalhit) 1;
       ~*(curl|wget|python-requests) 1;
    }
    
  2. 按设备类型分流:

    map $http_user_agent $mobile {
       default 0;
       ~*(android|iphone|ipod|ipad|blackberry|opera mini|iemobile) 1;
    }
    
  3. 统计浏览器版本分布:

    awk -F'"' '{print $6}' access.log | sort | uniq -c | sort -rn | head -20
    

5. 推荐工具库

  1. Python: user-agents

    pip install pyyaml ua-parser user-agents
    
  2. JavaScript: ua-parser-js

    npm install ua-parser-js
    
  3. 在线解析工具:

通过合理分析User-Agent,您可以更好地了解您的用户群体,优化网站体验,并识别潜在的恶意请求。