优酷、土豆等视频网站是通过哪些方式识别 iOS 设备的仅仅是 User-Agent 吗

主要还是 UA。以优酷为例,查看源码可以发现是直接输出带 HTML5 控制元素的 \u0026lt;video\u0026gt;,随后根据 UA 来决定是不是要跑一遍生成 SWF object 的 JS(把 \u0026lt;video\u0026gt; 替换成 \u0026lt;object\u0026gt;/\u0026lt;embed\u0026gt;)。在 Chrome 下更改 UA 后,刷新或者等当前页播完自动刷新时就能看到新页面里 Flash 变成了 HTML5 player,而 Safari 是直接就变 HTML5 player,猜测这是由于 Chrome UA 机制的问题导致偶尔切换不成。插曲:我这里可能由于 HTML5 video 解码的问题,看到了很多 exception,说明优酷在容错上并不是很细心。我的方案:检测 UA 和 HTML5 Video APIs,如果不是 mobile,直接跳过 APIs 检测,如果是,检测是否支持对应 APIs,不支持就尝试 fallback 到 Flash。补充:基于 @胡强 的观点,补充一下,为什么我会先检测 HTML5,针对移动设备,目前 HTML5 的利远大于 Flash 的弊,先检测 Flash 的话,不管设备支不支持 HTML5,只要支持 Flash 就直接用,对于有 Flash 插件的 Android 系列,无疑是适当的,对这些用户而言,上这个网站,意味着耗电快、发热高,如果先 HTML5,就能改善对这些用户的体验,至少不会留下一个「一上这网站就发热」的坏印象。
■网友
换个角度考虑,视频网站可以先检测浏览器是否支持Flash,如果浏览器不支持Flash的时候再去检测设备类型,所以你在电脑里面就算UA改为iOS的UA,但是浏览器依然支持Flash,就优先使用Flash播放了。以上为推测,未实际验证(因为我没有找到有楼主描述的问题的网页)
■网友
其实youku用的是UA,之所以你用chrome的User-Agent Switcher for Chrome失败是因为这个插件里默认包含的UA是youku不识别的。最简单验证的方法是把Safari的开发选项打开,然后UA选iPad,你再试一试,就知道了。PS: 开发选项打开方法: Safari的偏好设置 - 》高级,勾上“在菜单栏里显示开发菜单”
■网友
目前的国情是运营商不给User-agent的信息。期待解决方法。。。。。。


    推荐阅读