21

我一直在寻找一种可靠的方式来拥有(至少是不那么晦涩的方式):

  1. 浏览器的名称
  2. 版本
  3. 以及它所在的平台(OS)
  4. 也许更多信息,但上面的 3 个信息就足够了。

我想根据这些信息显示自定义内容,例如:

如果用户想知道如何清除浏览器上的 cookie。假设我已经为许多浏览器提供了许多内容。版本我想自动加载适当的内容

有没有办法不涉及 Javascript 来获取这些值?

我有没有找到浏览器或不准确的用例。所以我想有最可靠的解决方案。

这里有 2 个网站可以满足我的需要:

  1. www.whatismybrowser.com(联系所有者了解如何在 PHP 中进行操作)
  2. HawkBrowser真的是详尽的测试,不是免费的

与部分解决方案的其他链接:

  1. upgrademybrowser.org使用 2012 年 8 月的旧 browsercap(来源
  2. 谷歌的www.whatbrowser.org

花了很多天尝试,寻找,但没有成功。我从 Stackoverflow 社区发现了很多提示:

  1. browsercap带有get_browser ()。该项目已停止(目前为 2012 年 8 月 8 日)并且没有检测到一些现代流行的手持设备。
  2. Javascript 检测特征方法:Modernirz。对于我想做的事情来说,这不是一个好方法,时间太长了,而且必须经常更新。
  3. jQuery.browser不够好没有足够的可能性。
  4. quirksmode.org javascript,目前在移动设备上不准确,更喜欢 PHP 版本。

其他有用的链接:

  1. Stakoverflow 答案 1
  2. 堆栈溢出答案 2
  3. PHP移动检测
  4. PIWIK分析报告

编辑 1 到目前为止,我已经测试了答案和评论。这些解决方案非常令人满意:

  • PHP mobile 检测最后一个版本非常好,如果您正在使用它,最好将示例中的表单提供给客户端,以便他们可以为项目做出贡献。(感谢@Pekka)
  • WURFL不太新,但也很好。(感谢@Ian Roberts)

    编辑 2 PHP 移动检测使用 WURFL

更新

确保您收到的标头未被任何其他库修改。

例如,像OWASP PhpSec [ABANDONED]之类的一些安全库将标头结构更改为自定义对象,并且 PHP 移动检测不再能够访问它需要的所有信息

对于那些使用OWASP PhpSec [ABANDONED]的人, http 库正在修改全局标头对象结构。(2013 年 12 月)因此,如果您有问题,只需在使用http 库包含任何OWASP PhpSec类之前使用PHP 移动检测

4

2 回答 2

3

你考虑过WURFL吗?它的主要目的是对移动设备浏览器进行分类,但它声称也有一种识别桌面浏览器的模式。

于 2012-12-08T18:12:28.677 回答
0

您从 get_browser() 获得的 PHP 中的浏览器信息

因此您可以使用 ajax 调用 PHP 站点,提供有关用户代理的信息

例如

PHP

$info = get_browser(null, true);
echo json_encode($info);

get_browser 提供的数组看起来像

Array
(
    [browser_name_regex] => ^mozilla/5\.0 (windows; .; windows nt 5\.1; .*rv:.*) gecko/.* firefox/0\.9.*$
    [browser_name_pattern] => Mozilla/5.0 (Windows; ?; Windows NT 5.1; *rv:*) Gecko/* Firefox/0.9*
    [parent] => Firefox 0.9
    [platform] => WinXP
    [browser] => Firefox
    [version] => 0.9
    [majorver] => 0
    [minorver] => 9
    [cssversion] => 2
    [frames] => 1
    [iframes] => 1
    [tables] => 1
    [cookies] => 1
    [backgroundsounds] =>
    [vbscript] =>
    [javascript] => 1
    [javaapplets] => 1
    [activexcontrols] =>
    [cdf] =>
    [aol] =>
    [beta] => 1
    [win16] =>
    [crawler] =>
    [stripper] =>
    [wap] =>
    [netclr] =>
)

这当然不是一个可靠的解决方案,因为您可以根据需要更改浏览器字符串。

于 2012-12-08T18:12:56.897 回答