Как я могу заблокировать строку агента пользователя в IE11?

11571
Tyler

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

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

5
[Это] (http://www.howtogeek.com/howto/18450/) может быть актуальным, хотя и для IE8. Doktoro Reichard 10 лет назад 1
Какую версию IE11 вы используете? Полнофункциональная сенсорная версия Modern UI или настольная версия? Ваши варианты зависят от вашего ответа. Ramhound 10 лет назад 2
Настольная версия Tyler 10 лет назад 0
@Tyler - это означает, что вы можете использовать расширение IE для изменения пользовательского агента. Возможно, вы также захотите попробовать функцию `compatability view`. В конце концов, вам может потребоваться использовать другой браузер, если расширение не может быть использовано для изменения пользовательского агента, а веб-сайт не может быть изменен. Ramhound 10 лет назад 1
Проблема в том, что сайт работает только с IE. И теперь, когда новый IE меняет свою строку пользователя, я думаю, что у нас действительно могут быть проблемы. Спасибо. Tyler 10 лет назад 0

3 ответа на вопрос

4
Rik

The problem with UAPick from Bayden Systems and also the method of using IE11s own "Development Tools" with F12, Ctrl+8, User Agent String, is that these setting do not survive a restart of IE11.

I did some testing with changing the values in the registry from the links @harrymc already provided.

First changing the HKEY_LOCAL_MACHINE one but that didn't take here.
HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent

However changing HKEY_CURRENT_USER worked. (but is user specific)
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent

First the result without changes: (result from myip.nl)
This is for a Windows 8.1 64bit with 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. 

I made a IE9.reg with the following:

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" 

This completely changes your "User Agent String". After executing it i got:

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 

But this would also change your "Platform". I would leave that one out. (You could also leave "Mozilla" on the default.)

Maybe, if your webpages only looks for MSIE, it's sufficient to only change the Version-information. Platform and "Mozilla" can remain untouched so websites can still identify it correctly. I also added the Compatible-tag. Maybe that's also used.

REGEDIT4 [HKEY_CURRENT_USER\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent] "Compatible"="compatible" "Version"="MSIE 9.0" 

This results in:

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 

The string given by the Development Tools (F12, Ctrl+8, User Agent String) gives for IE9 is:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)

This seems closest to the original and adds the ability to identify it as IE9 compatible.

I don't know what exactly in your "User Agent String" triggers your websites to 'give' a mobile view (you didn't specify your UA) but playing with these values should fix it and these settings survive a restart of IE11 and the PC.


Edit:
So the problem is the Touch in:
Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/7.0; Touch; LCJB; rv:11.0)

IE doesn't give you the possibility to change (or remove) the parts it adds itself. We can change Compatible, Platform, Version and can add Pre and Post Platform tokens. (although Version won't be in send IE11 anymore and Pre and Post Platform won't be send in the header.)

You could try setting the compatibility mode to see it Touch is still there. (Did you try that already ?) If that works you could add the troubled sites to the list so they always display in compatibility mode.

If IE keeps on insisting to send Touch you could try mangling the UA with an extended Platform-key.

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) // (" 

This way your UA would be
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)
and hopefully the site has more trouble finding Touch between the first ( and ).

If that doesn't work the only option would be a add-on which would override the UA (like UAPick but one which would be permanent after restarts).


Edit #2:

Found another option. If the site scans the whole UA it will find Touch. With the following you mangle the Platform-part of the UA with a linefeed so it will definitely not find it: (I found this solution here)

Make a notouch.vbs-file with the following:

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 

(notice the & vbLf & "IGNORE:-part)

After executing the .vbs, the platform-part has a linefeed and after that an IGNORE-line. It will look like this in the headers:

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) 

See... no more Touch in the User agent line ;)
(it's a hack, but hey... it works)

Вы хорошо поработали, убедившись, что мой ответ работает. harrymc 10 лет назад 1
@harrymc Да, я должен был упомянуть, что они одинаковы, но, поскольку вы не уверены, что это применимо к его платформе, я подумал, давайте попробуем. Rik 10 лет назад 1
Что ж, после прочтения вашего ответа я ** уверен **, поэтому изменил свой ответ, сказав, что он подтвержден вашими экспериментами. harrymc 10 лет назад 1
Mozilla / 5.0 (совместимый; MSIE 9.0; Windows NT 6.1; Trident / 7.0; Touch; LCJB; rv: 11.0) Touch; это то, что переводит сайты в мобильный режим. Есть идеи, как это заблокировать? Tyler 9 лет назад 0
@Tyler Вы спрашивали об изменении «Строки User Agent». Мой ответ показал, как это сделать. Приносит ли это изменения (например, мобильный сайт)? Если сайт реагирует на слово «Touch», то после моего ответа следует удалить слово в строке User Agent, и сайт перестанет быть «мобильным». Rik 9 лет назад 0
@ Рик, правильно. Ваш метод изменяет части строки, однако Touch; еще прошло. Mozilla / 5.0 (совместимый; MSIE 9.0; Windows NT 6.1; Trident / 7.0; Touch; LCJB; rv: 11.0), как Gecko Tyler 9 лет назад 0
@ Тайлер Ааа, понятно. Не могли бы вы вручную посмотреть в реестре `HKEY_CURRENT_USER \ SOFTWARE \ Microsoft \ Windows \ CurrentVersion \ Internet Settings \ 5.0 \ User Agent` и возможные подразделы (Pre / Post Platform), чтобы увидеть какие-либо упоминания о" Touch ". Также см. [Здесь] (http://msdn.microsoft.com/en-us/library/ms537503 (v = vs.85) .aspx). Если нет, то попробуйте проверить значение HKEY_LOCAL_MACHINE по тому же пути. Rik 9 лет назад 0
@ Tyler Edit ... Я думаю (если в реестре ничего не задано) принимаются значения по умолчанию. Вы можете (и сделали) изменить платформу, совместимость и т. Д. Но то, что вы хотите изменить, - это та часть, которая стоит за ней (Trident ... и т. Д.). Я постараюсь выяснить, как перезаписать эту часть. Rik 9 лет назад 0
@ Тайлер Я добавил Редактировать в конец моего ответа. Кроме того ... Вы уже пробовали режим Compatibly? (Вы можете добавить сайты в список для постоянной совместимости). В противном случае попробуйте манипулирование UA с помощью ключа платформы, как описано в моем редактировании. Rik 9 лет назад 1
@Tyler Я добавил второе редактирование (# 2). Это включает в себя добавление перевода строки в части платформы. Таким образом, все, что стоит за ним, окажется на второй (IGNIORE:) - строке. Это должно работать для вас. С тестированием здесь я мог изменить все в User Agent. Надеюсь, это поможет вам ... Rik 9 лет назад 0
2
harrymc

Вы уверены, что проблема связана с строкой 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 показали, что вышесказанное должно работать для вашей платформы. Вы можете поэкспериментировать с изменением этих значений, чтобы замаскировать свой браузер, чтобы увидеть, изменит ли это поведение этого веб-сайта.

Да, поскольку эмуляция IE9 или использование USPick для установки в качестве IE9 исправляет проблему, пока IE не перезапустится снова. По сути, именно «сенсорный» фрагмент UA приводит к тому, что сайт обслуживается в «мобильном режиме». Tyler 10 лет назад 0
@Tyler: это исправление продолжает работать, даже если IE перезапускается снова, потому что он находится в реестре. harrymc 10 лет назад 0
Больше возможностей: (1) Попробуйте [этот метод] (http://www.door2windows.com/how-to-change-internet-explorer-user-agent-string-in-all-versions-of-internet-explorer- без любого инструмента /) с использованием редактора локальной политики. (2) Вы можете попробовать бесплатный [UAPick] (http://www.enhanceie.com/ietoys/uapick.asp). Предостережение: работает только в режиме рабочего стола и требует отключения расширенного защищенного режима. harrymc 10 лет назад 0
Метод 2 уже упоминается в комментариях (и мой ответ) и не переживает перезапуск IE11. (Он работает так же, как инструмент разработки (F12), который также не переживает перезапуск.) Метод 1 интересен. Вы можете добавить «MSIE 9.0» к вашей обычной строке User Agent (в конце). Если сайт просто проверяет наличие `MSIE` в строке, возможно, он будет служить вам правильным сайтом. Это необходимо проверить на сайтах, для которых был задан этот вопрос. Rik 10 лет назад 0
@Rik: Извиняюсь за то, что пропустил ваше упоминание о UAPick. Что касается метода редактора локальной политики, я жду от автора плаката, добавить ли его в мой ответ. harrymc 10 лет назад 0
1
tumchaaditya

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

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

Просто добавлю мои 0,02 доллара: да, это работает со многими сайтами. Но это зависит от того, что сайт утверждает, что «я работаю только с IE», что означает «я также работаю с другими браузерами, но я тестирую только с IE, и если вы укажете любое другое имя, я просто буду утверждать, что он не работает» , Hennes 10 лет назад 1
Что, кажется, имеет место здесь, потому что сайт перенаправляет на мобильную версию ... После обновления до Windows 8.1 я испытывал такое поведение и с другими сайтами с хорошим поведением. tumchaaditya 10 лет назад 1