我们开始将笔记本电脑升级到 Windows 8 触摸屏,我们发现一些较旧的网站(我们无法更改的网站)将触摸屏检测为移动设备,无法正确加载网站。我们在桌面模式下使用 IE11。
有没有办法可以改变我们传递给网络服务器的用户字符串?
答案1
问题在于UAPick从拜登系统并且使用 IE11 自己的“开发工具”的方法是F12,Ctrl+ 8,,User Agent String
这些设置在 IE11 重新启动后无法继续存在。
我根据@harrymc 提供的链接,对注册表中的值进行了更改,进行了一些测试。
首先改变HKEY_LOCAL_MACHINE
一个,但是没有成功。
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent
然而改变是HKEY_CURRENT_USER
有效的。(但是是特定于用户的)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent
首先是没有变化的结果:(结果来自myip.nl)
这适用于带有 IE11 v11.0.9600.16384 的 Windows 8.1 64 位。
User agent: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Browser: Unknow browser.
我做了IE9.reg
以下事情:
REGEDIT4
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent]
@="Mozilla/5.0"
"Compatible"="compatible"
"Platform"="Windows NT 6.1"
"Version"="MSIE 9.0"
这完全改变了你的“用户代理字符串”。执行后我得到:
User agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko
Browser: Internet explorer 9.0
但这也会改变您的“平台”。我会省略这个。(您也可以保留默认的“Mozilla”。)
也许,如果您的网页只查找MSIE
,那么仅更改 -信息就足够了Version
。Platform
并且“Mozilla”可以保持不变,因此网站仍然可以正确识别它。我还添加了Compatible
-标签。也许这也有用。
REGEDIT4
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent]
"Compatible"="compatible"
"Version"="MSIE 9.0"
其结果是:
User agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko
Browser: Internet explorer 9.0
F12开发工具( ,Ctrl+ 8, )为 IE9提供的字符串User Agent String
是:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)
这看起来最接近原始版本,并增加了识别其为与 IE9 兼容的功能。
我不知道您的“用户代理字符串”中究竟是什么触发您的网站“提供”移动视图(您没有指定您的 UA),但使用这些值应该可以修复它,并且这些设置在 IE11 和 PC 重新启动后仍然存在。
编辑:
所以问题在于Touch
:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; Touch; LCJB; rv:11.0)
IE 不允许你更改(或删除)它自己添加的部分。我们可以更改兼容性、平台、版本,并可以添加前平台和后平台令牌。(尽管版本不再在发送 IE11 中,并且前平台和后平台不会在标题中发送。)
您可以尝试设置兼容模式以查看它Touch
是否仍然存在。(您已经尝试过了吗?)如果有效,您可以将有问题的网站添加到列表中,以便它们始终以兼容模式显示。
如果 IE 继续坚持发送,Touch
您可以尝试使用扩展的平台键来破坏 UA。
REGEDIT4
[HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent]
@="Mozilla/5.0"
"Platform"="Windows NT 6.1; Trident/7.0; rv:11.0) // ("
这样,您的 UA 就会
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; rv:11.0) // (; Trident/7.0; Touch; LCJB; rv:11.0)
并且希望网站Touch
在第一个(
和之间找到更多麻烦)
。
如果这不起作用,唯一的选择就是使用一个可以覆盖 UA 的附加组件(如 UAPick,但在重启后会永久存在)。
编辑#2:
找到了另一个选项。如果网站扫描整个 UA,它将要找到Touch
。使用下面的方法,你会用换行符破坏 UA 的平台部分,所以它肯定找不到它:(我找到了这个解决方案这里)
notouch.vbs
使用以下内容创建一个文件:
Dim oShell
set oShell = CreateObject("WScript.Shell")
oShell.RegWrite "HKCU\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Platform", "Windows NT 6.1; Trident/7.0; rv:11.0)" & vbLf & "IGNORE: (", "REG_SZ"
Set oShell = Nothing
(注意& vbLf & "IGNORE:
- 部分)
执行 .vbs 后,平台部分有一个换行符,之后是 IGNORE 行。它在标题中看起来如下:
User agent: Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; rv:11.0)
IGNORE: (Windows NT 6.1; Trident/7.0; Touch; LCJB; rv:11.0)
Touch
看到了吧...用户代理行中不再有内容了;)
(这是一个 hack,但是... 它有效)
答案2
您确定是用户代理字符串导致了问题吗?
如果你不确定,你可以使用Fiddler2跟踪和捕获 URL 请求及其所有标头,您还可以在 Composer 中尝试对该 URL 请求进行修改,以查看这会对网站产生什么影响。
微软文章了解用户代理字符串在本节中
用户代理注册表项表示可以通过注册表项在 IE11 中修改用户代理字符串的某些部分,
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent
如下所示:
HKEY_LOCAL_MACHINE (or HKEY_CURRENT_USER)
SOFTWARE
Microsoft
Windows
CurrentVersion
Internet Settings
5.0
User Agent
(default) = "Mozilla/4.0"
Compatible = "compatible"
Platform = "Windows NT 5.1"
Version = "MSIE 6.0"
Pre Platform
Token = Value
Post Platform
Token = Value
文章说:
User Agent 键的默认值将替换用户代理字符串中报告的应用程序名称和应用程序版本令牌。请注意,前七个字符用于应用程序名称,其余字符指定应用程序版本令牌。
Compatible、Platform 和 Version 值替换了用户代理字符串中的相应标记。
可以使用注册表编辑器在 Pre-Platform 项或 Post-Platform 项下创建新的字符串值,从而将其他标记添加到用户代理字符串中。值名称应为完整标记;值数据将被忽略。添加到 Pre-Platform 项的标记出现在最终用户代理字符串中的平台标记之前。添加到 Post-Platform 项的标记出现在最终用户代理字符串中的平台标记之后。Pre-Platform 项或 Post-Platform 项中的多个标记以不可预测的顺序显示。
@Rik 的一些实验表明,上述方法应该适用于您的平台。您可以尝试更改这些值来伪装您的浏览器,看看这是否会改变该网站的行为。
答案3
我猜你指的是 Windows 8.1。
如果是这样的话,微软在 Windows 8.1 中更改了 IE11 的用户代理字符串,这会让旧网站将 PC 检测为移动设备,即使是我的非触摸屏笔记本电脑也是如此。有一个解决方案,实际上可以说是一种变通方法。获取 chrome/FF 并安装用户代理切换器插件。然后“伪造”一些旧浏览器(我个人推荐 IE8)来加载旧网站。
这可能不是最好的方法,但我确信这是最简单的方法。