对于大多数网站来说,什么样的应用程序用户代理字符串看起来像iPhone/Chrome/什么的?
我们正在制作一款iOS和Android应用程序,它的一部分功能是webview。当它浏览我们自己的网站时,我们喜欢调整应用程序内视图的页面(例如,我们剪切标题,因为应用程序有自己的chrome)。web的其余部分按原样显示并。。问题来了 在用户代理字符串中,我们将自己标识为“OurApp/0.9.24(iPhone;iOS 6.1.2;Scale/2.00)”,这与iPhone类似,但并不完全是iPhone和包括www.google.com在内的一些网站显示为桌面页面,而不是移动优化页面 有人有过类似的问题吗? 关于如何制作一个用户字符串来识别我们的应用程序的任何建议,在包括www.google.com在内的大多数网站上看起来都像iPhone 附言。 典型的iPhone浏览器字符串如下所示:对于大多数网站来说,什么样的应用程序用户代理字符串看起来像iPhone/Chrome/什么的?,iphone,ios,webview,user-agent,Iphone,Ios,Webview,User Agent,我们正在制作一款iOS和Android应用程序,它的一部分功能是webview。当它浏览我们自己的网站时,我们喜欢调整应用程序内视图的页面(例如,我们剪切标题,因为应用程序有自己的chrome)。web的其余部分按原样显示并。。问题来了 在用户代理字符串中,我们将自己标识为“OurApp/0.9.24(iPhone;iOS 6.1.2;Scale/2.00)”,这与iPhone类似,但并不完全是iPhone和包括www.google.com在内的一些网站显示为桌面页面,而不是移动优化页面 有人有
“Mozilla/5.0(iPhone;CPU iPhone OS 5_0_1,如Mac OS X)AppleWebKit/534.46(KHTML,如Gecko)Mobile/9A405”我想你看到的结果是意料之中的。网站嗅探用户代理,以确定如何显示内容。本质上,你是在创建一个“未知”的应用程序“就世界其他地方而言,代理,因此默认情况通常是显示桌面版本 也许您可以使用默认的用户代理字符串,但可以在末尾添加一些内容作为扩展。看看这个 和 请注意最后一段的描述 Mobile/7B405:浏览器使用此选项来指示直接在浏览器中或通过第三方提供的特定增强功能。一个例子是Microsoft Live Meeting,它注册了一个扩展,以便Live Meeting服务知道软件是否已经安装,这意味着它可以为加入会议提供简化的体验
底线,根据规范,您应该能够添加“/product comment”来识别您的产品,因此在iPhone字符串的情况下,您可以将“/0.9.24 OurApp”附加到结尾,而不是开头,然后进行嗅探。许多网站都有脆弱的用户代理解析,因此,在调整时,您可能需要轻踩。我建议在用户代理的末尾添加一个标识符,比如
OurApp/0.9.24
,这在过去对我很有用
更妙的是,发送一个自定义标题,标识您的应用程序。我相信Android的Webview是开箱即用的。它发送类似于X_REQUESTED=com.your.app
的内容
这对于在iOS中添加也非常简单,并且可以防止第三方站点在您的用户代理中弄乱阅读
此外,它还可以防止您必须从用户代理解析出一个版本号以及其他内容 是的,我们应该添加我们的组件作为最后一个。或者,因为它只用于我们的网站,所以按照@ggmathur的建议使用自定义标题。是的,自定义标题可能是一个更好的解决方案(我们实际上在API调用中使用它,但不用于web端),但目前的快速修复方法确实是将我们的部分用户代理字符串附加到末尾。谢谢