Internet Explorer: редактирование строки агента пользователя таким образом, чтобы оно просматривалось сервером

3923
Beems

ОС: Windows 7/8
Браузер: Internet Explorer 11
Платформа: x86

Как я могу отредактировать строку агента пользователя на машине, чтобы она была универсально видна в коде на стороне сервера и в журналах веб-сервера? Это должно быть постоянное, развертываемое решение, так что использование инструментов разработчика, скорее всего, не будет работать в долгосрочной перспективе.

Единственный способ установить / изменить строку пользовательского агента для Internet Explorer, чтобы ее видел удаленный веб-сервер, - использовать следующий ключ реестра \ значение:

Key: HKEY_LOCAL_MACHINE\Software\Policies\Microsoft\Windows\CurrentVersion\Internet Settings\User Agent\Version Value: SomeTestString Data: NULL 

Выше приведено то, что, по-видимому, используется параметром групповой политики Windows Components\Internet Explorer\Customize User Agent String.

Если добавить ключ / значение, как показано выше, ваш агент пользователя будет выглядеть как что - то вроде, Mozilla/5.0 (SomeTestString; Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko к сожалению, это присоединяет пользовательскую строку, добавьте в строку агента пользователя, который расщепляет многие сайты Google и Netflix (и, возможно, многое другое)

Использование другого найденного ключа / значения реестра покажет строку агента пользователя через запрос JavaScript, но она не отображается в журналах веб-сайта (не видна серверу):

Key: HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent Value: SomeTestString Data: NULL 

Если вы посмотрите в журналах веб - сервера, вы видите только что - то вроде этого: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko, но если вы нажмете на страницу, которая использует JavaScript для отображения пользовательского агента, вы видите что - то вроде этого: Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; .NET4.0E; .NET4.0C; .NET CLR 3.5.30729; .NET CLR 2.0.50727; .NET CLR 3.0.30729; Tablet PC 2.0; SomeTestString; rv:11.0) like Gecko.

Любой совет приветствуется, так как я застрял в строке, которая нарушает работу некоторых сайтов. Обратите внимание, что нам нужно указать пользовательский элемент в строке пользовательского агента для поддержки сторонней платформы, которой мы не можем управлять.

0
Что именно ваш вопрос? Darth Android 9 лет назад 0
Отредактировано, чтобы уточнить в первом предложении Beems 9 лет назад 0

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

1
NuTTyX

Вы можете использовать «инструменты разработчика» из IE.

Просто нажмите F12, чтобы активировать его.

  • В старых версиях это находится в меню инструментов, измените строку агента пользователя и настройте ее.

  • На более новых он находится в меню эмуляции .


После некоторых исследований я нашел несколько записей в реестре, которые можно настроить, чтобы изменить часть строки UA.

Чистый IE11 на Win7 используетMozilla/5.0 (Windows NT 6.1; Trident/7.0; rv:11.0) like Gecko

Win8 использует, NT 6.3как правило, добавляет Touchкуда-то.

Я думаю, что эти значения по умолчанию не могут быть изменены реестром, тем не менее, я думаю, что вы можете избавиться от большей части .NETи других вещей, которые он добавляет, удалив записи в

  • [HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform]
  • [HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent\Post Platform]

Просто учтите, что compatibility modeв IE также изменяет строку UA, чтобы показать прежнюю версию IE, чтобы «заставить» сервер думать, что это более старая версия (я думаю, он использует IE6 или 7), поэтому, возможно, большая часть того, что вы хотите, будет сделать бесполезным, если кто-то должен использовать compatibility modeдля загрузки веб-страницы.

Извините, я уточнил вопрос. Я должен был заявить, что мне нужно постоянное, развертываемое решение. Beems 9 лет назад 0
Не могли бы вы написать, какая именно строка user-agent вам нужна? NuTTyX 9 лет назад 0
1
Lance Leonard

Это было возможно в определенный момент времени, но эта функция устарела и больше не поддерживается напрямую.

Разница между строкой пользовательского агента, сообщаемой во время HTTP-согласования («видимой сервером»), и значением, сообщаемым через свойство DOM, является преднамеренным изменением, разработанным (частично) для того, чтобы справляться с перегрузкой строки пользовательского агента людьми именно таким образом. ,

В первой статье описывается набор значений реестра, которые корректировали строку агента пользователя DOM за один раз; Вполне возможно, что настройки Post Platform продолжают работать. Вам необходимо настроить параметры для всех клиентских компьютеров, на которых запущен инструмент.

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

Надеюсь это поможет...

- Ланс

Благодаря Лэнсу, проблема, связанная с тем, что полный пользовательский агент больше не отправляется во время переговоров, заключалась в том, что наша проблема заключалась Мы можем отправить его во время этого, но он добавляет пользовательскую строку, которая ломает некоторые веб-сайты. Использование ключей «Post Platform» или векторов версий [https://msdn.microsoft.com/en-us/library/ms537512(v=vs.85).aspx] кажется наилучшим вариантом, но чистый сервер Побочное решение обнаружения скорее всего уклонится от нас. Beems 9 лет назад 0
Одно время векторы версий были бы идеальным решением. Однако они зависят от условных комментариев, которые были отключены в IE10. Сожалею. : - \ Lance Leonard 9 лет назад 0
Благодарю. В последнее время Microsoft очень усложняет мне жизнь. Beems 9 лет назад 0
Здравствуйте @Lance, не могли бы вы предоставить информацию об устаревании ключей реестра User-agent? Я не могу найти информацию об устаревании по указанному URL. Спасибо! andrej 6 лет назад 0
@andrej - Я не думаю, что когда-либо было официальное заявление как таковое. RegKeys всегда считались неподдерживаемыми (поэтому dev мог менять реализацию, не беспокоясь о совместимости). Самое близкое, что я могу найти сейчас, находится в нижней части https://docs.microsoft.com/en-us/previous-versions/windows/internet-explorer/ie-developer/compatibility/hh869301%28v%3dvs.85%29 , что говорит о том, что, начиная с IE10, ключи до и после платформы сообщались только через «navigator.userAgent». Теперь, когда IE официально не поддерживается, эти старые документы становятся все труднее найти. (Я не уверен, что это плохо.) Lance Leonard 6 лет назад 0