吾爱破解 - 52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 2677|回复: 13
收起左侧

[Java 转载] 一个比较全的ua识别工具类

[复制链接]
danran 发表于 2021-1-18 11:07
本帖最后由 danran 于 2021-1-18 11:10 编辑

最近做一些东西要用到,于是写了一个通过请求头ua识别 系统+浏览器的工具类,分享给大家,
有啥bug或者优化建议可以在下方留言,本人菜鸟,
发代码出来希望大家有对我代码啥好建议可以交流一下
有啥ua补充也可以留言
[Java] 纯文本查看 复制代码
/**
 * [url=home.php?mod=space&uid=686208]@AuThor[/url] Administrator
 */
public class VisitorUtils {
    public static String getOs(String userAgent) {
        if (userAgent.length() < 4) {
            return "其他系统";
        }
        if (userAgent.contains("Windows")) {
            if (userAgent.contains("Windows NT 10.0")) {
                return "Windows 10";
            } else if (userAgent.contains("Windows NT 6.2")) {
                return "Windows 8";
            } else if (userAgent.contains("Windows NT 6.1")) {
                return "Windows 7";
            } else if (userAgent.contains("Windows NT 6.0")) {
                return "Windows Vista";
            } else if (userAgent.contains("Windows NT 5.2")) {
                return "Windows XP";
            } else if (userAgent.contains("Windows NT 5.1")) {
                return "Windows XP";
            } else if (userAgent.contains("Windows NT 5.01")) {
                return "Windows 2000";
            } else if (userAgent.contains("Windows NT 5.0")) {
                return "Windows 2000";
            } else if (userAgent.contains("Windows NT 4.0")) {
                return "Windows NT 4.0";
            } else if (userAgent.contains("Windows 98; Win 9x 4.90")) {
                return "Windows ME";
            } else if (userAgent.contains("Windows 98")) {
                return "Windows 98";
            } else if (userAgent.contains("Windows 95")) {
                return "Windows 95";
            } else if (userAgent.contains("Windows CE")) {
                return "Windows CE";
            }
        } else if (userAgent.contains("Mac OS X")) {
            if (userAgent.contains("iPhone")) {
                return "iPhone";
            } else if (userAgent.contains("iPad")) {
                return "iPad";//判断系统
            } else {
                return "Mac";//判断系统
            }
        } else if (userAgent.contains("Android")) {
            return "Android";//判断系统
        } else if (userAgent.contains("Linux")) {
            return "Linux";//判断系统
        } else if (userAgent.contains("FreeBSD")) {
            return "FreeBSD";//判断系统
        } else if (userAgent.contains("Solaris")) {
            return "Solaris";//判断系统
        }
        return "其他系统";
    }

    public static String getBrowser(String userAgent) {
        if (userAgent.length() < 4) {
            return "其他浏览器";
        }
        if (userAgent.contains("Edge")) {
            return "Microsoft Edge";
        } else if (userAgent.contains("QQBrowser")) {
            return "QQ浏览器";
        } else if (userAgent.contains("Chrome") && userAgent.contains("Safari")) {
            return "Chrome";
        } else if (userAgent.contains("Firefox")) {
            return "Firefox";
        } else if (userAgent.contains("360")) {//Internet Explorer 6
            return "360浏览器";
        } else if (userAgent.contains("Opera")) {//Internet Explorer 6
            return "Opera";
        } else if (userAgent.contains("Safari") && !userAgent.contains("Chrome")) {
            return "Safari";
        } else if (userAgent.contains("Sogou")) {//Internet Explorer 6
            return "搜狗浏览器";
        } else if (userAgent.contains("TencentTraveler")) {//Internet Explorer 6
            return "腾讯浏览器";
        } else if (userAgent.contains("UC")) {//Internet Explorer 6
            return "UC浏览器";
        } else if (userAgent.contains("MicroMessenger/7")) {//Internet Explorer 6
            return "微信访问";
        } else if (userAgent.contains("TIM")) {//Internet Explorer 6
            return "TIM访问";
        } else if (userAgent.contains("QQ")) {//Internet Explorer 6
            return "QQ访问";
        } else if (userAgent.contains("Maxthon")) {//Internet Explorer 6
            return "遨游浏览器";
        } else if (userAgent.contains("Quark")) {//Internet Explorer 6
            return "夸克浏览器";
        } else if (userAgent.contains("Build")) {//Internet Explorer 6
            return "百度浏览器";
        } else if (userAgent.contains("2345")) {//Internet Explorer 6
            return "2345浏览器";
        } else if (userAgent.contains("Zeus")) {//Internet Explorer 6
            return "宙斯浏览器";
        } else if (userAgent.contains("LieBao")) {//Internet Explorer 6
            return "猎豹浏览器";
        } else if (userAgent.contains("Vivo")) {//Internet Explorer 6
            return "vivo浏览器";
        }  else if (userAgent.contains("Tao")) {//Internet Explorer 6
            return "淘宝浏览器";
        } else if (userAgent.contains("Vivo")) {//Internet Explorer 6
            return "vivo浏览器";
        }
        else if (userAgent.contains("MSIE")) {
            if (userAgent.contains("MSIE 10.0")) {//Internet Explorer 10
                return "IE 10";
            } else if (userAgent.contains("MSIE 9.0")) {//Internet Explorer 9
                return "IE 9";
            } else if (userAgent.contains("MSIE 8.0")) {//Internet Explorer 8
                return "IE 8";
            } else if (userAgent.contains("MSIE 7.0")) {//Internet Explorer 7
                return "IE 7";
            } else if (userAgent.contains("MSIE 6.0")) {//Internet Explorer 6
                return "IE 6";
            }
        }
        return "其他浏览器";
    }
}

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

QingYi. 发表于 2021-1-18 11:22
你用一个数组或者map 扫一遍,扫到了直接返回不就行了。。。还套这么多判断语句
asaSKTY 发表于 2021-1-18 11:21
本帖最后由 asaSKTY 于 2021-1-18 20:01 编辑

[Java] 纯文本查看 复制代码
   public static String getBrowser(String userAgent) {
        if (userAgent.length() < 4) {
            return "其他浏览器";
        }

这 userAgent.length() < 4 不对,如果我输入"Tao"  length必然小于4,就不会走下面的if了。
你应该是拷贝第一个方法的时候忘记改了

改成 <=1 就好

asaSKTY 发表于 2021-1-18 11:21
[Java] 纯文本查看 复制代码
   public static String getBrowser(String userAgent) {
        if (userAgent ...[/quote]
[mw_shl_code=java,true]lse if (userAgent.contains("TIM")) {//Internet Explorer 6
            return "TIM访问";
        } else if (userAgent.contains("QQ")) {//Internet Explorer 6
            return "QQ访问";
else if (userAgent.contains("Tao")) {//Internet Explorer 6
            return "淘宝浏览器";
else if (userAgent.contains("UC")) {//Internet Explorer 6
            return "UC浏览器";
else if (userAgent.contains("360")) {//Internet Explorer 6
            return "360浏览器";

这些分支,由于你 这里判断了length
[Java] 纯文本查看 复制代码
    if (userAgent.length() < 4) {
            return "其他浏览器";
        }

将永远无法执行到

点评

ua基本不可能这么短的  发表于 2021-1-18 12:53
derain 发表于 2021-1-18 11:18
QingYi. 发表于 2021-1-18 11:21
这个else if 我爱了
代码这么长,不是一个规范的代码
WoShiXXX 发表于 2021-1-18 11:22
Ubuntu端的Firefox84.0的UA是这样的:
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 Firefox/84.0
头像被屏蔽
小非凡 发表于 2021-1-18 11:23
提示: 作者被禁止或删除 内容自动屏蔽
QingYi. 发表于 2021-1-18 11:26
小非凡 发表于 2021-1-18 11:23
大佬们,想放到JS里面用,这个代码怎么改

java和js差不多 不是很好改吗,都是基础语法,都没开额外空间;不懂的百度一下就能解决了
 楼主| danran 发表于 2021-1-18 12:54
WoShiXXX 发表于 2021-1-18 11:22
Ubuntu端的Firefox84.0的UA是这样的:
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:84.0) Gecko/20100101 ...

好的谢谢你
头像被屏蔽
我去年买了各表 发表于 2021-1-18 13:04
提示: 作者被禁止或删除 内容自动屏蔽
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则

返回列表

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-11-25 20:27

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表