【问题标题】:What is the iPad user agent?什么是 iPad 用户代理?
【发布时间】:2011-01-10 08:46:21
【问题描述】:

据我所知,iPad 使用的是 iPhone 操作系统,但屏幕分辨率与 iPhone 和 iPod touch 不同。如此多的网站可能不得不更改其用户代理检测以适应 iPad。

那么,任何可以访问 iPad 或 iPad SDK 的人都可以给我们用户代理字符串吗?

【问题讨论】:

  • 当您不确定您的更改是否适合时,您希望如何适应 iPad?
  • 我认为这样做是为了确保当有人在 iPad 上加载您的网站时,它不会认为它是 iPhone。用户代理对于任何检测到并对其进行操作的应用程序或网站都很重要。
  • 所有答案都已经过时了好几年 - 我只是在这里查找选项:webapps-online.com/online-tools/user-agent-strings(稍微深入研究一下,但它拥有您可能需要的所有设备)。

标签: ipad user-agent


【解决方案1】:

模拟器,在 iPad 模式下:

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_5_8; en-us) AppleWebKit/531.9 (KHTML, like Gecko) Version/4.0.3 Safari/531.9 (this适用于 3.2 beta 1)

Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10 (这适用于 3.2 beta 3)

在 iPhone 模式下:

Mozilla/5.0 (iPhone; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.20 (KHTML, like Gecko) Mobile/7B298g

我不知道模拟器的可靠性如何,但似乎无法仅从用户代理字符串中检测到设备是否为 iPad。

(注意:我在 Snow Leopard 上,Safari 的用户代理字符串是

Mozilla/5.0 (Macintosh; U; Intel Mac OS X 10_6_2; en-us) AppleWebKit/531.21.8 (KHTML, like Gecko) Version/4.0.4 Safari/531.21.10

)

【讨论】:

  • “Machintosh”?这是一个错字还是真的?如果它是真的,那可能就是我们应该检测它的方式。
  • 看起来差别不大...注意“Machintosh”的拼写而不是“Macintosh” - 或者这是一个错字?
  • 抱歉打错了。因为我不能直接从模拟器复制到Mac。
  • 10.5.8??那是最后一个 Leopard 版本,但 iPad 有一个经过调整的 iPhone 操作系统!!您的 iPhone 签名是来自 iPhone 模拟器还是来自设备?
  • 这真的很奇怪!为什么 iPad 会报告请求来自桌面 Safari,而 iPhone 会报告来自移动 Safari?我认为signautre很快就会改变。 iPad 签名报告来自 Intel CPU(错误)、Leopard OS(错误)和 Safari(错误)
【解决方案2】:

Mozilla/5.0(iPad; U; CPU iPhone OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B314 Safari/531.21.10

【讨论】:

【解决方案3】:

来自模拟器 3.2 最终版:

Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; zh-CN) AppleWebKit/531.21.10 (KHTML, 像 Gecko) 版本/4.0.4 手机/7B367 Safari/531.21.10

【讨论】:

    【解决方案4】:

    来自真实设备:

    Mozilla/5.0 (iPad; U; CPU OS OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B367 Safari/531.21.10

    【讨论】:

      【解决方案5】:

      值得注意的是,在 web-app 模式下运行时(使用 apple-mobile-web-app-capable 元标记),用户代理从以下位置更改:

      Mozilla/5.0(iPad;U;CPU 操作系统 3_2_1 像 Mac OS X;恩-我们) AppleWebKit/531.21.10(KHTML,如 Gecko) 版本/4.0.4 移动版/7B405 Safari/531.21.10

      到:

      Mozilla/5.0(iPad;U;CPU 操作系统 3_2_1 像 Mac OS X;恩-我们) AppleWebKit/531.21.10(KHTML,如 壁虎)手机/7B405

      【讨论】:

      • iPhone 也是如此。如果有人有任何解释这种差异的 Apple 文档,我会发现这很有帮助。
      【解决方案6】:

      每个移动苹果设备、iphone、ipad 或 ipod 都使用包含“Mobile”和“Safari”的用户代理似乎已成为普遍共识。

      但是,使用最新的 SDK (4.0.1) 并读取我的 Rails 服务器上的用户代理(使用 request.env["HTTP_USER_AGENT"]),我们永远不会得到“Safari”部分。

      无论请求是来自模拟器还是真实设备,调试或发布,它总是看起来像这样:

      Mozilla/5.0(iPhone;U;CPU iPhone OS 3_1_2 像 Mac OS X;de-de) AppleWebKit/528.18 (KHTML, like Gecko) Mobile/7D11"

      只是没有“Safari”。 :-( 所以我们必须使用“iPhone”部分来确定。这是苹果不推荐做的事情。

      【讨论】:

      • Chrome 在用户代理中也有 AppleWebKit。
      【解决方案7】:

      iPhone OS 3.2 SDK beta 3 中 iPad 用户代理字符串上的 Safari:

      Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; zh-CN) AppleWebKit/531.21.10 (KHTML, 像 Gecko) 版本/4.0.4 手机/7B334b Safari/531.21.10

      更多信息: http://developer.apple.com/library/safari/#technotes/tn2010/tn2262/_index.html

      【讨论】:

        【解决方案8】:

        我说:

        Mozilla/5.0 (iPad; U; CPU OS 4_3 like Mac OS X; da-dk) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8F190 Safari/6533.18.5

        【讨论】:

          【解决方案9】:

          4.3.5 下的 iPad 2:

          Mozilla/5.0 (iPad; U; CPU OS 4_3_5 like Mac OS X; en-us) AppleWebKit/533.17.9 (KHTML, like Gecko) Version/5.0.2 Mobile/8L1 Safari/6533.18.5

          【讨论】:

            【解决方案10】:

            给你!

            Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10

            【讨论】:

              【解决方案11】:

              我认为值得一提的是,您通常不需要使用整个代理字符串,除非您找到了需要将网站定制为特定模型的原因。

              您可以在代理字符串中检查 iPhone、iPad 和 iPod,并覆盖您的所有基地。

              if((navigator.userAgent.match(/iPhone/i)) || (navigator.userAgent.match(/iPod/i)) || (navigator.userAgent.match(/iPad/i))) {
                  appleMobileDevice = true;
              }
              else {
                  appleMobileDevice = false;
              }
              

              【讨论】:

                【解决方案12】:

                仅适用于 iPad

                Mozilla/5.0 (iPad; U; CPU OS 3_2 like Mac OS X; en-us) AppleWebKit/531.21.10 (KHTML, like Gecko) Version/4.0.4 Mobile/7B334b Safari/531.21.10
                

                【讨论】:

                  【解决方案13】:

                  (差不多 10 年后...)

                  iOS 13 开始,iPad 的用户代理已更改为 Mac OS,例如:

                  Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15) AppleWebKit/605.1.15 (KHTML, like Gecko) 版本/13.0 Safari/605.1.15

                  【讨论】:

                  【解决方案14】:

                  从 iOS 13 开始,找不到“iPad”,我使用这个 js current-device,它可以工作。

                  这个核心:

                  const iPadOS13Up = navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1
                  

                  https://github.com/matthewhudson/current-device/blob/master/src/index.js#L55

                  你可以看到你死了类型:http://matthewhudson.github.io/current-device/

                  【讨论】:

                    【解决方案15】:

                    由于 Apple 非常有用地更改了 iOS 中的 userAgent 字符串,因此您不能再可靠地为 ipad/iphone 使用正则表达式了。

                    我建议对旧版和当前 iOS 版本 (/i(?:pad|phone)|mac os/i) 使用正则表达式的组合,并额外检查 navigator.maxTouchPoints。 maxTouchPoints 在 Macbook 上始终为 0,但在 iPad、iPhone 上大于 0(通常为 5)。

                    如果您进一步需要区分 iPad 和 iPhone,可以使用 window.outerWidthwindow.outerHeight 来获取视口大小和方向。这只会在一些较大的 iPhone 的视口比最小的 iPad 更大的情况下有所帮助。

                    谢谢,苹果!

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2014-02-02
                      • 1970-01-01
                      • 2017-07-18
                      • 2012-09-16
                      • 2020-01-14
                      相关资源
                      最近更新 更多