在php中检测浏览器,版本和平台的可靠方法

时间:2012-12-08 17:54:48

标签: javascript php browser owasp

我一直在寻找一种可靠的方式(至少不那么模糊):

  1. 浏览器的名称
  2. 版本
  3. 和它所在的平台(OS)
  4. 可能更多信息,但上面的3个信息就足够了。
  5. 我想根据这些信息显示自定义内容,例如:

      

    如果用户想知道如何清除浏览器上的cookie。   假设我有很多内容已经可用于许多浏览器。   我希望自动加载适当的内容

    有没有办法让Javascript无法获取这些值?

    我遇到未找到或不准确浏览器的情况。所以我想拥有最可靠的解决方案。

    以下是2个完全符合我需要的网站:

    1. www.whatismybrowser.com(与所有者联系以了解如何在PHP中执行此操作)
    2. HawkBrowser非常详尽的测试,不是免费的
    3. 部分解决方案的其他链接:

      1. upgrademybrowser.org使用2012年8月的旧浏览器资源(source
      2. Google的www.whatbrowser.org
      3. 花了很多天尝试,搜索,但没有成功。我在Stackoverflow社区找到了许多提示:

        1. browsercapget_browser()。该项目已经停止(目前为2012年8月8日),并没有发现一些现代流行的手持设备。
        2. Javascript检测功能方法:Modernirz。对于我想要做的事情来说,不是很好的方法,需要经常更新。
        3. jQuery.browser不够好的可能性不足。
        4. quirksmode.org javascript,暂时不准确使用移动设备,并且更喜欢PHP版本。
        5. 其他有用的链接:

          1. Stakoverflow Answer 1
          2. Stackoverflow Answer 2
          3. PHP mobile Detect
          4. PIWIK分析报告
          5. 编辑1 到目前为止,我已经测试了答案和评论。这些解决方案非常令人满意:

            • PHP mobile detect 最后一个版本非常好,如果你使用它,那么在示例中为客户提供表单会很好,这样他们就可以为项目做出贡献。 (感谢@Pekka)
            • WURFL 不太近但非常好。 (感谢@Ian Roberts)

              编辑2 PHP移动检测使用WURFL

            更新

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

            例如, OWASP PhpSec [ABANDONED] 等一些安全库会将标题结构更改为自定义对象 PHP mobile detect 无法访问所需的所有信息

            对于那些使用 OWASP PhpSec [ABANDONED] 的人, http库正在修改全局标题对象结构。 (2013年12月)如果您遇到问题,请在使用 http库包含任何 PHP mobile detect 类之前使用 OWASP PhpSec >

2 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:0)

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

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

e.g。

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] =>
)

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