首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 網頁程式設計 >> JSP 程式設計 >> 關於JSP

JSP 獲取客戶端瀏覽器與作業系統資訊:User-Agent 解析與常用 Request API 速查

     編輯:關於JSP

核心 API:User-Agent 解析

String agent = request.getHeader("User-Agent");
// 範例: "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36"

// 簡易切割 (僅示範,生產請用專業庫)
StringTokenizer st = new StringTokenizer(agent, ";");
st.nextToken();                 // "Mozilla/5.0"
String browserToken = st.nextToken().trim(); // "Windows NT 10.0" 或類似
String osToken = st.nextToken().trim();      // "Win64; x64" 或類似

// 注意:UA 格式極不統一,**強烈建議使用成熟解析庫**

推薦解析庫 (Java)

YAUAA 使用範例

UserAgentAnalyzer analyzer = UserAgentAnalyzer.newBuilder().build();
UserAgent ua = analyzer.parse(request.getHeader("User-Agent"));
String browser = ua.getValue(UserAgent.BROWSER_NAME);      // "Chrome"
String browserVer = ua.getValue(UserAgent.BROWSER_VERSION); // "120.0.0.0"
String os = ua.getValue(UserAgent.OPERATING_SYSTEM_NAME);   // "Windows 10"
String device = ua.getValue(UserAgent.DEVICE_CLASS);        // "Desktop"
boolean isBot = ua.getValue(UserAgent.AGENT_CLASS).equals("Robot");

常用 Request 物件 API 速查表

庫Maven 坐標特點
YAUAA (Yet Another User Agent Analyzer)nl.basjes.parse.useragent:yauaa極快、準確、支援設備/OS/瀏覽器/版本多維度、可擴展規則
User-Agent-Utilseu.bitwalker:UserAgentUtils簡單易用、輕量、開箱即用
UAParser (uap-java)com.github.ua-parser:uap-java基於 regexes.yaml 規則庫、跨語言一致
方法用途範例回傳
getHeader(String name)取得 HTTP HeaderUser-Agent, Referer, Accept-Language
getMethod()HTTP 方法GET, POST, PUT
getRequestURI()請求 URI (含 context path)/myapp/article/123
getServletPath()匹配的 Servlet 路徑/article/detail
getServerName()伺服器主機名localhost, www.example.com
getServerPort()伺服器端口8080, 443
getRemoteAddr()客戶端 IP (可能為代理 IP)192.168.1.100
getRemoteHost()客戶端主機名 (DNS 反解,慢)client-host.example.com
getProtocol()協議版本HTTP/1.1
getHeaderNames()所有 Header 名稱枚舉Iterator
getHeaders(String name)多值 Header (如多個 Cookie)Enumeration

伺服器端系統資訊 (非客戶端)

System.getProperty("os.name");     // "Windows 10", "Linux"
System.getProperty("os.version");  // "10.0", "5.15.0"
System.getProperty("os.arch");     // "amd64", "aarch64"
System.getProperty("java.version"); // "21.0.1"
System.getProperty("java.vendor");  // "Eclipse Adoptium"

最佳實踐建議

  1. 不要信任 UA 做關鍵業務邏輯:可偽造、代理修改、爬蟲伪裝。僅用於統計分析、相容性降級、日誌記錄。
  2. 響應式設計替代 UA 判斷:CSS Media Queries、JS window.matchMedia 處理不同螢幕/裝置。
  3. 真實客戶端 IP 獲取:反向代理 (Nginx) 設置 X-Forwarded-For,Java 端讀取 request.getHeader("X-Forwarded-For") 取第一個非代理 IP。
  4. 隱私合規:GDPR/個資法要求 UA/IP 屬個人資料,收集需告知、最小化、加密儲存、定期清理。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved