user-agent判断PC和移动端

本文介绍如何利用浏览器的user-agent在nginx和Java服务端进行设备类型判断,实现PC和移动端页面的差异化处理。通过nginx配置反向代理和Java代码解析user-agent,执行特定业务逻辑。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

现在很多网站,PC浏览器和移动端浏览器所打开的页面不同,大部分是根据浏览器的user-agent进行判断的。此处不讨论响应式布局和自适应式布局。今天和大家分享下如何使用nginx和java服务端对user-agent进行解析,进行特动的业务操作。

user-agent

User Agent中文名为用户代理,简称 UA,它是一个特殊字符串头,使得服务器能够识别客户使用的操作系统及版本、CPU 类型、浏览器及版本、浏览器渲染引擎、浏览器语言、浏览器插件等。

nginx 根据User-agent进行反向代理

nginx.conf

location / {

    if ( $http_user_agent ~ "(MIDP)|(WAP)|(UP.Browser)|(Smartphone)|(Obigo)|(Mobile)|(AU.Browser)|(wxd.Mms)|(WxdB.Browser)|(CLDC)|(UP.Link)|(KM.Browser)|(UCWEB)|(SEMC\-Browser)|(Mini)|(Symbian)|(Palm)|(Nokia)|(Panasonic)|(MOT\-)|(SonyEricsson)|(NEC\-)|(Alcatel)|(Ericsson)|(BENQ)|(BenQ)|(Amoisonic)|(Amoi\-)|(Capitel)|(PHILIPS)|(SAMSUNG)|(Lenovo)|(Mitsu)|(Motorola)|(SHARP)|(WAPPER)|(LG\-)|(LG/)|(EG900)|(CECT)|(Compal)|(kejian)|(Bird)|(BIRD)|(G900/V1.0)|(Arima)|(CTL)|(TDG)|(Daxian)|(DAXIAN)|(DBTEL)|(Eastcom)|(EASTCOM)|(PANTECH)|(Dopod)|(Haier)|(HAIER)|(KONKA)|(KEJIAN)|(LENOVO)|(Soutec)|(SOUTEC)|(SAGEM)|(SEC\-)|(SED\-)|(EMOL\-)|(INNO55)|(ZTE)|(iPhone)|(Android)|(Windows CE)|(Wget)|(Java)|(curl)|(Opera)" ){

            # 跳转到百度的手机版本(二级域名) 可以根据自己的需求使用rewrite和proxy_pass
            rewrite https://m.baidu.com break; 
            # 代理到百度
            # proxy_pass https://www.baidu.com;
    }
}
先进入nginx的sbin目录
重新加载nginx.conf文件指令:sudo ./nginx -s reload

 

Java 获取user-agent

浏览器user-agent

代码

 UserAgentController.java

@RequestMapping("/userAgent")
@RestController
public class UserAgentController {

    private static final Logger logger = LoggerFactory.getLogger(UserAgentController.class);

    @RequestMapping("/demo")
    public void getUserAgent(HttpServletRequest request) {

        String agent= request.getHeader("user-agent");

        UserAgent userAgent = UserAgent.parseUserAgentString(agent);
        // 操作系统信息
        OperatingSystem operatingSystem = userAgent.getOperatingSystem();
        // 设备类型
        DeviceType deviceType = operatingSystem.getDeviceType();

        Browser browser = userAgent.getBrowser();
        Version version = browser.getVersion(agent);
        logger.info("browser:{}, version:{}",browser.getName(), version.getVersion());

        //是否PC
        if(COMPUTER.equals(deviceType)) {
            logger.info("PC");
        }

        //.... DeviceType 里面可以判断是PC还是移动端
    }
}

pom.xml

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

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值