""" User-Agent解析工具模块 ============================================================= 提供HTTP请求User-Agent的解析功能: - parse_user_agent: 解析操作系统和浏览器信息 """ import re def parse_user_agent(): """ 解析User-Agent,获取操作系统和浏览器信息 通过正则匹配User-Agent字符串,识别客户端操作系统和浏览器类型。 支持 Windows、macOS、Linux、Android、iOS 及主流浏览器识别。 Returns: dict: 包含os和browser的字典 { 'os': 'Windows 10', # 操作系统信息 'browser': 'Chrome' # 浏览器名称 } 无法识别时返回 '未知' """ from flask import request user_agent = request.headers.get('User-Agent', '') result = { 'os': '未知', 'browser': '未知' } if not user_agent: return result ua_lower = user_agent.lower() # 操作系统识别规则(按优先级从高到低排列) os_patterns = [ (r'windows nt 10\.0', 'Windows 10'), (r'windows nt 6\.1', 'Windows 7'), (r'windows nt 6\.2', 'Windows 8'), (r'windows nt 6\.3', 'Windows 8.1'), (r'windows nt', 'Windows'), (r'mac os x', 'macOS'), (r'linux', 'Linux'), (r'android', 'Android'), (r'iphone', 'iOS'), (r'ipad', 'iOS'), ] for pattern, os_name in os_patterns: if re.search(pattern, ua_lower): result['os'] = os_name break # 浏览器识别规则(按优先级从高到低排列) browser_patterns = [ (r'edg', 'Edge'), # Edge 浏览器(基于Chromium) (r'chrome', 'Chrome'), # Chrome 浏览器 (r'safari', 'Safari'), # Safari 浏览器 (r'firefox', 'Firefox'),# Firefox 浏览器 (r'msie', 'IE'), # Internet Explorer (r'trident', 'IE'), # IE 11(Trident内核) ] for pattern, browser_name in browser_patterns: if re.search(pattern, ua_lower): result['browser'] = browser_name break return result