V2EX = way to explore
V2EX 是一个关于分享和探索的地方
Sign Up Now
For Existing Member  Sign In
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
zhenhang
V2EX  ›  程序员

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

  •  
  •   zhenhang · Nov 17, 2016 · 7662 views
    This topic created in 3448 days ago, the information mentioned may be changed or developed.

    刚遇上了个悲剧,公司的 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 replies    2016-11-18 00:27:42 +08:00
    Miy4mori
        1
    Miy4mori  
       Nov 17, 2016 via Android
    就一字符串能怎么判断,要么正则要么包含,当然也可能是我菜,求大神指导……
    cha1
        2
    cha1  
       Nov 18, 2016 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  
       Nov 18, 2016
    https://github.com/zsxsoft/php-useragent
    现在就随便维护一下的、人肉写规则、直接正则 if/elseif 的库_(:з」∠)_

    (什么时候能写成配置文件就好了……)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   6006 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 53ms · UTC 03:31 · PVG 11:31 · LAX 20:31 · JFK 23:31
    ♥ Do have faith in what you're doing.