我正在尝试访问专为 iPhone 构建的 C# 网页。我发现您可以将用户代理欺骗为 "Mozilla/5.0 (iPhone; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543a Safari/419.3"
,以使网站认为您是 iPhone。
但是,对于某些网站,我只会收到一条回复,告诉我先将网站添加到主屏幕。查看响应,似乎他们正在检查一些变量 "window.navigator.standalone"
以查看网页是如何访问的。在谷歌搜索( see here )之后,这似乎是检测网页是否从主屏幕访问的常用方法。
因此,问题是,有没有人知道如何欺骗请求的其余部分,以便网页加载而不是不断要求添加到主屏幕?
最佳答案
window.navigator.standalone 是在客户端执行的脚本测试,用于检查站点的启动位置(主屏幕或 safari)。在请求中欺骗用户代理会让站点提供内容,但是当站点询问 window.navigator.standalone 时,显然是错误的返回。
您没有提到您是否正在执行脚本,或者您正在尝试实现什么,所以我只能推测您请求的站点旨在首先呈现 safari 启动版本,然后在测试变量时将发出备用请求。
你能提供更多细节吗?也许是您请求的站点 URL?
更新:
好吧,那我是对的。如果该脚本没有运行,您将看不到正确的站点。我假设您正在处理自己的请求。您需要做的是将另一个请求作为 POST 发送到 Test.aspx,post 数据为 hidHomeScreen=true,从而模拟表单提交。
遗憾的是,这不是通用解决方案,因为检测可能因站点实现而异。
关于C# 访问 iPhone 构建的网页,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/6053182/