V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
zhenhang
V2EX  ›  程序员

大家都是用什么方式解析 UserAgent 的?

  •  
  •   zhenhang · 2016-11-17 22:58:22 +08:00 · 7053 次点击
    这是一个创建于 2929 天前的主题,其中的信息可能已经有所发展或是发生改变。

    刚遇上了个悲剧,公司的 App 内置浏览器的 UserAgent 里面带有 qq 两个字母(因为 App 名称拼音首字母刚好包含 qq ),结果在跳到有赞商城后被认成 QQ 浏览器了,然后就自动跳转到 qq 授权登录的页面去,结果自然是出错登不上了!

    我猜测人家是直接判断字符串里存不存在“ QQ ”,因为看了一下连我自己也是这么写的

    以 php 为例

        function is_qq_browser()
        {
            $userAgent = app('request')->server->get('HTTP_USER_AGENT');
            return (false !== strpos(strtolower($userAgent), 'qq'));
        }
    

    瞬间想起了“为什么没有 windows9 ”这个梗(因为说很多软件会把它误人成 Windows98 or 95 这样的)

    我想知道大家判断 UserAgent 是不是也是这样判断的,还是用什么其他方式?

    3 条回复    2016-11-18 00:27:42 +08:00
    Miy4mori
        1
    Miy4mori  
       2016-11-17 23:49:43 +08:00 via Android
    就一字符串能怎么判断,要么正则要么包含,当然也可能是我菜,求大神指导……
    zqhong
        2
    zqhong  
       2016-11-18 00:23:26 +08:00 via Android   ❤️ 1
    http://php.net/manual/zh/function.get-browser.php

    试试看这个。

    或者试试自己解析 UA ,这是维基百科给出的大部分 UA 的定义:
    Mozilla/[version] ([system and browser information]) [platform] ([platform details]) [extensions]

    也可以参考下,地址是这个: https://zh.m.wikipedia.org/zh-hans/用户代理
    zsx
        3
    zsx  
       2016-11-18 00:27:42 +08:00
    https://github.com/zsxsoft/php-useragent
    现在就随便维护一下的、人肉写规则、直接正则 if/elseif 的库_(:з」∠)_

    (什么时候能写成配置文件就好了……)
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1223 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 17:39 · PVG 01:39 · LAX 09:39 · JFK 12:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.