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

Java 判斷請求來源:PC 端與移動端 User-Agent 識別

     編輯:Java 綜合教學

Java 判斷請求來源:PC 端與移動端 User-Agent 識別

通過解析 HTTP 請求頭 User-Agent 字符串,識別客戶端類型 (Android、iOS、Windows Phone 等),實現終端適配邏輯。

核心工具類

public class DeviceDetector {
    // 移動端特徵關鍵字 (小寫匹配)
    private static final String[] MOBILE_KEYWORDS = {
        "android", "iphone", "ipad", "ipod", "mac os", "windows phone"
    };
    
    /**
     * 判斷是否為移動設備
     * @param userAgent HTTP 請求頭 User-Agent
     * @return true=移動端, false=PC端
     */
    public static boolean isMobileDevice(String userAgent) {
        if (userAgent == null) return false;
        String ua = userAgent.toLowerCase();
        for (String keyword : MOBILE_KEYWORDS) {
            if (ua.contains(keyword)) return true;
        }
        return false;
    }
}

Controller 中調用示例

@RestController
@RequestMapping("/api")
public class DemoController {
    private static final Logger log = LoggerFactory.getLogger(DemoController.class);
    
    @GetMapping("/device")
    public String detectDevice(HttpServletRequest request) {
        String ua = request.getHeader("User-Agent");
        if (DeviceDetector.isMobileDevice(ua)) {
            log.debug("移動端訪問: {}", ua);
            return "MOBILE";
        } else {
            log.debug("PC端訪問: {}", ua);
            return "PC";
        }
    }
}

常見 User-Agent 樣本

設備User-Agent 片段
Android 手機Mozilla/5.0 (Linux; Android 10; SM-G973F) AppleWebKit/537.36
iPhoneMozilla/5.0 (iPhone; CPU iPhone OS 14_0 like Mac OS X) AppleWebKit/605.1.15
iPadMozilla/5.0 (iPad; CPU OS 14_0 like Mac OS X) AppleWebKit/605.1.15
Windows PhoneMozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Lumia 950)
Windows PC (Chrome)Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36
Mac (Safari)Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/605.1.15

進階擴展建議

  1. 引入專業庫:ua-parser、Yauaa (Yet Another User Agent Analyzer) 解析更全面 (瀏覽器、OS、設備型號、是否爬蟲)
  2. 響應式設計優先:CSS Media Query + Vue/React 組件級適配,減少服務端判斷
  3. 緩存解析結果:UA 字符串重複率高,用 Guava Cache 或 Redis 緩存 UA → DeviceType
  4. 灰度發布:新版移動端頁面先放小比例流量,通過 UA 判斷分流

注意事項

  • UA 可偽造,不可作為安全授權依據
  • 關鍵字列表需持續維護 (新設備、新系統版本)
  • Mac OS X 同時出現在 iPhone/iPad/Mac,需結合 iPhone/iPad 關鍵字區分
  • 平板電腦歸類策略視業務而定 (歸移動端或單獨類別)
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved