网站后台如何判断客户端是来自手机、还是来自电脑?

通过分析HTTP请求头部的User-Agent字段,服务器端可以判断客户端是手机还是电脑。User-Agent包含浏览器类型和操作系统信息,查找'Mobile'字样即可区分。此方法需优化以覆盖更多情况,并考虑浏览器的模拟模式。

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

( Java 面试题  | Java 学习指南  )

在浏览器打开一个网址时,此时浏览器为客户端,你的网站后台tomcat为服务器,客户端向服务器传了一个HTTP请求。

在HTTP请求的头部,有一个字段 User-Agent,用于表示客户端浏览器的类型、及操作系统的类型。以下是一 以个真实的HTTP请求抓包(客户端:小米浏览器)

GET /qianwen/ HTTP/1.1
Host: 192.168.1.109:8080
Connection: keep-alive
Cache-Control: max-age=0
User-Agent: Mozilla/5.0 (Linux; U; Android 7.1.2; 
zh-cn; MI 5X Build/N2G47H) 
AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.128 Mobile Safari/537.36 
XiaoMi/MiuiBrowser/10.4.5
Accept: text/html
Accept-Language: zh-CN,en-US;q=0.8

所以,在服务器端只需要从请求里取这个User-Agent,看看里面有没有 Mobile 字样

HttpServletRequest request = ...
String userAgent = request .getHeader("User-Agent");

然后,分析这个UserAgent即可以判断出客户端是出自手机、还是电脑

String guessDevice(String userAgent)
{
    if(userAgent == null)
        return "pc";
    if(userAgent.indexOf("Mobile")>=0)
        return "phone";
    if(userAgent.indexOf("Andr")>=0)
        return "phone";
    if(userAgent.indexOf("iPhone")>=0)
        return "phone";

    //MiuiBrowser
    if(userAgent.indexOf("Miui")>=0)
        return "phone"; 

    return "pc";
}

当然,这个分析的方法需要自己去优化,它能覆盖大多数情况。

另外,一般的浏览器也都支持模拟手机版或桌面版来访问。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

阿发你好

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值