5

Мы начинаем обновлять наши ноутбуки до сенсорного экрана Windows 8, и мы обнаруживаем, что некоторые из старых сайтов (которые мы не можем изменить) определяют сенсорный экран как мобильное устройство и не будут правильно загружать сайт. Мы используем IE11 в режиме рабочего стола.

Есть ли способ изменить какие пользовательские строки мы передаем на веб-серверы?

3 ответа3

4

Проблема с UAPick от Bayden Systems, а также с методом использования собственных "средств разработки" для 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)
Это для Windows 8.1 64bit с IE11 v11.0.9600.16384.

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 и "Мозилла" могут остаться нетронутыми, поэтому веб-сайты могут по-прежнему правильно их идентифицировать. Я также добавил тег 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, User Agent String) для IE9:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

Это кажется наиболее близким к оригиналу и добавляет возможность идентифицировать его как совместимый с IE9.

Я не знаю, что именно в вашем "User Agent String" запускает ваши сайты, чтобы "дать" мобильное представление (вы не указали свой UA), но игра с этими значениями должна исправить это, и эти настройки переживают перезапуск IE11 ПК.


Редактировать:
Так что проблема в Touch в:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; Touch; LCJB; rv:11.0)

IE не дает вам возможности изменить (или удалить) части, которые он добавляет сам. Мы можем изменить Compatible, Platform, Version и добавить токены до и после платформы. (хотя Версия больше не будет отправлять IE11, а Pre и Post Platform не будут отправляться в заголовке.)

Вы можете попробовать установить режим совместимости, чтобы увидеть, что 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: -part)

После выполнения .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 в строке User agent;)
(это взломать, но эй ... это работает)

2

Вы уверены, что проблема связана с строкой user-agent?

Если вы не уверены, вы можете использовать Fiddler2 для отслеживания и захвата запроса URL вместе со всеми его заголовками, а также можете поэкспериментировать в Composer с созданием модификаций этого запроса URL, чтобы увидеть, как это повлияет на веб-сайт.

В статье Microsoft « Понимание строк пользовательского агента» в разделе «Разделы реестра пользовательского агента» говорится, что определенные части строки пользовательского агента можно изменить в 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 заменяет токены имени приложения и версии приложения, указанные в строке user-agent. Помните, что первые семь символов используются для имени приложения, а остальные символы указывают маркер версии приложения.

Значения Compatible, Platform и Version заменяют соответствующие токены в строке агента пользователя.

Дополнительные токены можно добавить в строку агента пользователя с помощью редактора реестра, чтобы создать новые строковые значения в ключе Pre-Platform или Post-Platform. Имя значения должно быть полным токеном; данные значения игнорируются. Токены, добавленные в ключ Pre-Platform, появляются перед токеном платформы в последней строке user-agent. Токены, добавленные в ключ Post-Platform, появляются после токена платформы в последней строке user-agent. Несколько токенов в ключе Pre-Platform или Post-Platform отображаются в непредсказуемом порядке.

Некоторые эксперименты @Rik показали, что вышесказанное должно работать для вашей платформы. Вы можете поэкспериментировать с изменением этих значений, чтобы замаскировать свой браузер, чтобы увидеть, изменит ли это поведение этого веб-сайта.

1

Я предполагаю, что вы имеете в виду Windows 8.1.
Если это так, MS изменила строку пользовательского агента для IE11 в Windows 8.1, и старые веб-сайты распознают ПК как мобильное устройство, даже для моего ноутбука без сенсорного экрана. Существует решение, на самом деле обходной путь, чтобы сказать. Получите chrome/FF и установите аддон переключателя агента пользователя. Затем "подделать" какой-нибудь старый браузер (Моя личная рекомендация IE8) для загрузки старых сайтов.

Это может быть не лучшим способом, но я уверен, что это самый простой.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .