java經過瀏覽器請求頭(User-Agent)獲取訪問者設備信息以及系統版本


我的博客 地址:http://www.wenhaofan.com/article/20181125220342

在開發AutuBlog項目時須要作後臺的登陸記錄,想起瀏覽器的User-Agent,因而嘗試從瀏覽器的請求頭中獲取一些有用的信息。java

經過總結大量請求頭數據寫出如下正則瀏覽器

^Mozilla/\d\.\d\s+\(+.+?\)

該正則含義爲工具

    以Mozilla/開頭+瀏覽器版本格式爲數字.數字+空格+(+任意字符串+匹配第一個) 測試

測試數據ui

Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/56.0.2924.87 Safari/537.36spa

Mozilla/5.0 (Windows NT 10.0; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Safari/537.36操作系統

Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:36.0) Gecko/20100101 Firefox/36.0ci

Mozilla/5.0 (Windows NT 6.1) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.153 Safari/537.36開發

經測試能夠順利的獲取到設備 以及操做系統信息字符串

完整工具類代碼以下

package com.autu.common.kit;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

import javax.servlet.http.HttpServletRequest;

public class AgentUserKit {
	private static String pattern = "^Mozilla/\\d\\.\\d\\s+\\(+.+?\\)";
	private static String pattern2 = "\\(+.+?\\)";
	private static Pattern r = Pattern.compile(pattern);
	private static Pattern r2 = Pattern.compile(pattern2);

	public static String getDeviceInfo(HttpServletRequest request) {
		String userAgent = request.getHeader("User-Agent");
		return getDeviceInfo(userAgent);
	}

	private static String getDeviceInfo(String userAgent) {
		Matcher m = r.matcher(userAgent);
		String result = null;
		if (m.find()) {
			result = m.group(0);
		}

		Matcher m2 = r2.matcher(result);
		if (m2.find()) {
			result = m2.group(0);
		}
		result = result.replace("(", "");
		result = result.replace(")", "");
		return filterDeviceInfo(result);
	}

	public static String filterDeviceInfo(String result) {
		if (StrKit.isBlank(result)) {
			return null;
		}
		result = result.replace(" U;", "");
		result = result.replace(" zh-cn;", "");
		return result;
	}

	public static void main(String[] args) {
		System.out.println(getDeviceInfo(
				"Mozilla/5.0 (Linux; U; Android 7.0; zh-cn; MI 5s Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 XiaoMi/MiuiBrowser/10.2.2"));
	}

}
若是有發現不能匹配的請求頭歡迎留言
相關文章
相關標籤/搜索