1. 程式人生 > >瀏覽解析工具cz解析資料的瀏覽器 瀏覽器版本號 作業系統 作業系統版本

瀏覽解析工具cz解析資料的瀏覽器 瀏覽器版本號 作業系統 作業系統版本

解析工具類,呼叫第三方cz包

package com.sxt.etl.util;

import java.io.IOException;

import cz.mallat.uasparser.OnlineUpdater;
import cz.mallat.uasparser.UASparser;

/**
 * 解析瀏覽器的user agent的工具類,內部就是呼叫這個uasparser jar檔案
 * 
 * @author root
 *
 */
public class UserAgentUtil {
	static UASparser uasParser = null;

	// static 程式碼塊, 初始化uasParser物件
	static {
		try {
			uasParser = new UASparser(OnlineUpdater.getVendoredInputStream());
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

	/**
	 * 解析瀏覽器的user agent字串,返回UserAgentInfo物件。<br/>
	 * 如果user agent為空,返回null。如果解析失敗,也直接返回null。
	 * 
	 * @param userAgent
	 *            要解析的user agent字串
	 * @return 返回具體的值
	 */
	public static UserAgentInfo analyticUserAgent(String userAgent) {
		UserAgentInfo result = null;
		if (!(userAgent == null || userAgent.trim().isEmpty())) {
			// 此時userAgent不為null,而且不是由全部空格組成的
			try {
				cz.mallat.uasparser.UserAgentInfo info = null;
				info = uasParser.parse(userAgent);
				result = new UserAgentInfo();
				result.setBrowserName(info.getUaFamily());
				result.setBrowserVersion(info.getBrowserVersionInfo());
				result.setOsName(info.getOsFamily());
				result.setOsVersion(info.getOsName());
			} catch (IOException e) {
				// 出現異常,將返回值設定為null
				result = null;
			}
		}
		return result;
	}

	/**
	 * 內部解析後的瀏覽器資訊model物件
	 * 
	 * @author root
	 *
	 */
	public static class UserAgentInfo {
		private String browserName; // 瀏覽器名稱
		private String browserVersion; // 瀏覽器版本號
		private String osName; // 作業系統名稱
		private String osVersion; // 作業系統版本號

		public String getBrowserName() {
			return browserName;
		}

		public void setBrowserName(String browserName) {
			this.browserName = browserName;
		}

		public String getBrowserVersion() {
			return browserVersion;
		}

		public void setBrowserVersion(String browserVersion) {
			this.browserVersion = browserVersion;
		}

		public String getOsName() {
			return osName;
		}

		public void setOsName(String osName) {
			this.osName = osName;
		}

		public String getOsVersion() {
			return osVersion;
		}

		public void setOsVersion(String osVersion) {
			this.osVersion = osVersion;
		}

		@Override
		public String toString() {
			return "UserAgentInfo [browserName=" + browserName + ", browserVersion=" + browserVersion + ", osName="
					+ osName + ", osVersion=" + osVersion + "]";
		}
	}
}

maven倉庫的依賴

<!-- https://mvnrepository.com/artifact/cz.mallat.uasparser/uasparser -->
<dependency>
    <groupId>cz.mallat.uasparser</groupId>
    <artifactId>uasparser</artifactId>
    <version>0.6.1</version>
</dependency>