什么是 iPad 用户代理?

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

那么,任何能够使用 iPad 或 iPad SDK 的人能够给我们用户代理字符串吗?

211932 次浏览

simulator开始,在 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 < sub > (这是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

)

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

From Simulator 3.2 final:

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/7B367 Safari/531.21.10

从一个真正的设备:

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

值得注意的是,当在 web-app 模式下运行时(使用 apple-mobile-web-app-capable meta 标签) ,用户代理的变化如下:

Mozilla/5.0(iPad; U; CPU OS 3 _ 2 _ 1) 例如 Mac OS X; en-us) AppleWebKit/531.21.10(KHTML,如 壁虎)版本/4.0.4手机/7B405 Safari/531.21.10

致:

Mozilla/5.0(iPad; U; CPU OS 3 _ 2 _ 1) 例如 Mac OS X; en-us) AppleWebKit/531.21.10(KHTML,如 壁虎)流动电话/7B405

人们似乎普遍认为,每台苹果手机、 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 like Mac OS X; de-de) AppleWebKit/528.18(KHTML,like Gecko) Mobile/7D11”

只是没有“狩猎”。因此,我们必须使用“ iPhone”部分来确保。这是苹果公司不建议做的事情。

Safari on iPad 用户代理字符串在 iPhone OS 3.2 SDK beta 3:

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

More info: Http://developer.apple.com/library/safari/#technotes/tn2010/tn2262/_index.html

我的上面写着:

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

IPad24.3.5:

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

给你!

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

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

You can check for iPhone, iPad and iPod in the agent string and cover all your bases.

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

只适用于 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

(将近10年后...)

例如,iPad 的用户代理从 iOS 13改为 Mac OS:

Mozilla/5.0(Macintosh; Intel Mac OS X 10 _ 15) AppleWebKit/605.1.15(KHTML,like Gecko) Version/13.0 Safari/605.1.15

从 iOS13,无法找到’iPad’,我使用这个 jscurrent-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/

由于 Apple 在 iOS 中非常有帮助地更改了用户代理字符串,你不能再可靠地使用 ipad/iphone 的正则表达式。

I suggest a combo of a regex for older and current iOS versions (/i(?:pad|phone)|mac os/i) with and additional check for navigator.maxTouchPoints. maxTouchPoints will always be 0 on a Macbook, but greater than 0 on an iPad, iPhone (usually 5).

如果需要进一步区分 iPad 和 iPhone,可以使用 window.outerWidthwindow.outerHeight获得视窗大小和方向。这只能起到一些作用,因为一些较大的 iPhone 拥有比最小的 iPad 更大的视窗。

THANKS, Apple!