什么是 iPad 用户代理?

Posted

技术标签:

【中文标题】什么是 iPad 用户代理?【英文标题】:What is the iPad user agent? 【发布时间】: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(稍微深入研究一下,但它拥有您可能需要的所有设备)。 【参考方案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

【讨论】:

上面接受的答案不再是它了。您无法检查“iPhone”的用户代理,必须是“iPad”。我认为 jleedev 上面的链接更接近真正的交易: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 大家好,这里是 Safari 开发者库中的用户代理详细信息:developer.apple.com/library/safari/#technotes/tn2010/tn2262/… 这是另一个更全面和信息丰富的链接:developer.apple.com/library/ios/#documentation/… 这个答案不正确。从 iOS 13 开始,现在根本没有提到 iPad。 查看下面的更新答案:***.com/questions/2153877/what-is-the-ipad-user-agent/…【参考方案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

【讨论】:

这也是我们在 iPad Pro 上得到的。那么就没有办法区分 iPad / iOS 和 Mac OS 了吗? @low_rents 这真是个问题,请看这里:***.com/questions/56934826/…【参考方案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 更大的情况下有所帮助。

谢谢,苹果!

【讨论】:

以上是关于什么是 iPad 用户代理?的主要内容,如果未能解决你的问题,请参考以下文章

什么是iOS 5.0用户代理字符串?

使用 JavaScript 检测 iPad 应用内浏览器用户代理

Webview中的iOS 13 iPad用户代理问题

有啥 UNIQUIE 用户代理可以专门检测 Windows 8 设备?

从用户代理中识别 iOS 设备的好方法是啥?

新的 Safari 用户代理 - 末尾的 6 位数字