UserAgentUtils使用

概述

在软件开发中,经常会遇到需要获取客户端操作系统和版本号等信息的需求。

参考官网

The user-agent-utils java library can be used to parse HTTP requests in real-time or to analyze log files and gather information about the user-agent.

简单翻译:可用于实时解析HTTP请求,也可以用于解析日志文件获取user-agent信息。

GitHub

引入如下maven依赖,虽然很久没有更新,上次release还是Jan 24, 2018

<dependency>
    <groupId>eu.bitwalker</groupId>
    <artifactId>UserAgentUtils</artifactId>
    <version>1.21</version>
</dependency>

源码组织:
在这里插入图片描述
示例:

public static void main(String[] args) {
	// org.springframework.web.server.ServerWebExchange
	ServerHttpRequest request = exchange.getRequest();
	Map<String, String> headers = request.getHeaders().toSingleValueMap();
	UserAgent userAgent = UserAgent.parseUserAgentString(headers.get("User-Agent"));
	String browser = getBrowser(userAgent.getBrowser().name());
	String operatingSystem = getOperatingSystem(userAgent.getOperatingSystem().name());

	// com.netflix.zuul.context.RequestContext
	RequestContext ctx = RequestContext.getCurrentContext();
	HttpServletRequest req = ctx.getRequest();
	UserAgent userAgent = UserAgent.parseUserAgentString(req.getHeader("User-Agent"));

	Browser browser = UserAgent.parseUserAgentString(request.getHeader("User-Agent")).getBrowser();
	Version version = browser.getVersion(request.getHeader("User-Agent"));
}

private String getBrowser(String browser) {
  if (StrUtil.isNotEmpty(browser)) {
        if (browser.contains("CHROME")) {
            return "CHROME";
        } else if (browser.contains("FIREFOX")) {
            return "FIREFOX";
        } else if (browser.contains("SAFARI")) {
            return "SAFARI";
        } else if (browser.contains("EDGE")) {
            return "EDGE";
        }
    }
    return browser;
}

private String getOperatingSystem(String operatingSystem) {
    if (StrUtil.isNotEmpty(operatingSystem)) {
        if (operatingSystem.contains("MAC_OS_X")) {
            return "MAC_OS_X";
        } else if (operatingSystem.contains("ANDROID")) {
            return "ANDROID";
        }
    }
    return operatingSystem;
}

参考

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

johnny233

晚饭能不能加鸡腿就靠你了

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值