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

2016-11-17 22:58:22 +08:00
 zhenhang

刚遇上了个悲剧,公司的 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 是不是也是这样判断的,还是用什么其他方式?

7086 次点击
所在节点    程序员
3 条回复
Miy4mori
2016-11-17 23:49:43 +08:00
就一字符串能怎么判断,要么正则要么包含,当然也可能是我菜,求大神指导……
zqhong
2016-11-18 00:23:26 +08:00
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
2016-11-18 00:27:42 +08:00
https://github.com/zsxsoft/php-useragent
现在就随便维护一下的、人肉写规则、直接正则 if/elseif 的库_(:з」∠)_

(什么时候能写成配置文件就好了……)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/321324

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX