webapp根據User-Agent獲取手機資訊
阿新 • • 發佈:2019-02-08
1.User-Agent是可以偽造的
2.User-Agent中含有作業系統和版本資訊
使用ionic做webapp應用appStore時,為了判斷當前使用者是android使用者還是ios使用者,從useragent中獲取使用者資訊,當前做法不夠完善package com.baosight.webapp.util; public class UserAgentUtil { public static String android="Android"; public static String iphone="iPhone"; public static String ipad="iPad"; //獲取使用者作業系統 public static String getOS(String userAgent){ if (userAgent.contains(android)) { return android; }else if (userAgent.contains(iphone)){ return iphone; }else if (userAgent.contains(ipad)){ return ipad; }else { return "others"; } } //獲取使用者手機型號 public static String getPhone(String userAgent){ String OS=UserAgentUtil.getOS(userAgent); String phoneStr="不知名的手機"; if (OS.equals(android)) { String rex="[()]+"; String[] str=userAgent.split(rex); str = str[1].split("[;]"); String[] res=str[str.length-1].split("Build/"); return res[0]; }else if (OS.equals(iphone)) { String[] str=userAgent.split("[()]+"); String res="iphone"+str[1].split("OS")[1].split("like")[0]; return res; }else if (OS.equals(ipad)) { return ipad; }else { return "火星人"; } } public static void main(String[] args) { /*String phone="Mozilla/5.0 (Linux; U; Android 1.5; ja-jp; GDDJ-09 Build/CDB56) AppleWebKit/528.5+ (KHTML, like Gecko) Version/3.1.2 Mobile Safari/525.20.1"; String rex="[()]+"; String[] str=phone.split(rex); str = str[1].split("[;]"); String[] res=str[str.length-1].split("Build/"); System.out.println(res[0]);*/ String userAgent="User-agent==Mozilla/5.0 (iPhone; CPU iPhone OS 9_3_2 like Mac OS X) AppleWebKit/601.1.46 (KHTML, like Gecko) Version/9.0 Mobile/13F69 Safari/601.1"; String[] str=userAgent.split("[()]+"); String res="iphone"+str[1].split("OS")[1].split("like")[0]; System.out.println(res); } }