C#访问iPhone内置网页

4

我试图在C#中访问专门为iPhone构建的网页。我发现您可以伪装用户代理为 "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" 来查看网页是如何被访问的。经过谷歌搜索(请参考此处),看起来这是一种常见的检测方式,用于判断网页是否从主屏幕访问。

因此,问题是,有人知道如何伪造其余请求,以便网页能够加载,而不是不断要求将其添加到主屏幕吗?

1个回答

3

window.navigator.standalone是客户端执行的脚本测试,用于检查网站是从哪里启动的(主屏幕还是Safari)。在请求中欺骗用户代理将使网站提供内容,但是当网站询问window.navigator.standalone时,显然会返回错误结果。

您没有提到您是否正在执行脚本,或者您想要实现什么目标,因此我只能猜测您所请求的站点是设计为首先呈现Safari启动版本,然后在测试变量后进行替代请求。

您能提供更多细节吗?也许您请求的站点URL?

更新:

好的,那么我是正确的。如果该脚本未运行,则不会看到正确的站点。我假设您正在处理自己的请求。您需要执行另一个POST请求发送到Test.aspx,并使用hidHomeScreen = true的post数据来模拟表单提交。

不幸的是,这不是通用解决方案,因为检测可能因网站实现而异。


要求添加主屏幕的网站有以下代码:if(window.navigator.standalone) { document.aspnetForm.hidHomeScreen.value = window.navigator.standalone; document.aspnetForm.action = "Test.aspx"; document.aspnetForm.method = "post"; document.aspnetForm.submit(); }。我不能分享该网站,因为它是私人的(而且我希望有一个通用的解决方案,这样就可以在其他我需要处理的网站上使用)。 - mike
好的,那我是对的。如果该脚本未运行,则您将无法看到正确的网站。我假设您正在处理自己的请求。您需要执行的操作是向Test.aspx发送另一个请求,POST数据为hidHomeScreen=true,从而模拟表单提交。 - Slappy

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接