Изменить пользовательский агент IE - PullRequest
2 голосов
/ 09 января 2011

Я использую WatiN для автоматизации Internet Explorer, и до сих пор это было здорово. Однако мне бы очень хотелось изменить пользовательский агент IE, чтобы сервер думал, что это на самом деле Firefox или какой-то другой браузер.

Строка useragent в Firefox выглядит примерно так:

Mozilla / 5.0 (Windows; U; Windows NT 6.1; ru-ru; rv: 1.9.2.13) Gecko / 20101203 Firefox / 3.6.13

Со следующим кодом

RegistryKey ieKey = Registry.LocalMachine.CreateSubKey(@"SOFTWARE\Microsoft\Windows\CurrentVersion\Internet Settings\5.0\User Agent");
            ieKey.SetValue("", "Mozilla/5.0");
            ieKey.SetValue("Compatible", "Windows");
            ieKey.SetValue("Version", "U");
            ieKey.SetValue("Platform", "Windows NT 5.1; en-US");
            ieKey.DeleteSubKeyTree("Post Platform");

Мне удалось изменить строку useragent IE с

Mozilla / 4.0 (совместимо; MSIE 8.0; Windows NT 6.1; Trident / 4.0; AskTbMP3R7 / 5.9.1.14019)

до

Mozilla / 4.0 (Windows; U; Windows NT 6.1; Trident / 4.0; en-US; rv: 1.9.2.13)

Теперь вопрос: как мне удалить часть Trident / 4.0 и добавить часть "Gecko / 20101203 Firefox / 3.6.13" после скобок?

Я действительно хотел бы сделать это программно в C #, без использования каких-либо надстроек IE.

Заранее спасибо.

Ответы [ 2 ]

4 голосов
/ 10 января 2011

Нет поддерживаемого пути к do this in C# without any IE Addons, если только элемент управления WebBrowser не запущен in-proc, и в этом случае вы можете использовать UrlMkSetSessionOption() API. См. Строка User-Agent: использование и злоупотребление

Если вы хотите использовать add-ons, см. http://www.enhanceie.com/ietoys/uapick.asp

Теперь есть хак без поддержки , который я бы не рекомендовал, а именно, вы могли бы заменить строку COMPATIBLE на остаток от Firefox UA, за которым следует CRLF и текст IGNORE:. Это может привести к тому, что заголовок HTTP «обернется» в новый заголовок, поэтому вы будете отправлять заголовки, которые выглядят примерно так:

Пользователь-агент: Mozilla / 5.0 (Windows; U; Windows NT 6.1; en-US; rv: 1.9.2.13) Gecko / 20101203 Firefox / 3.6.13 ИГНОР: MSIE 8.0; Windows NT 6.1; Trident / 4.0; AskTbMP3R7 / 5.9.1.14019)

1 голос
/ 10 января 2011

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

В любом случае, как вы уже обнаружили, это не так легко сделать с IE, как с другими браузерами.

Если вы действительноЕсли я хочу сделать это, я предлагаю пройти через прокси-сервер и отправить его за вас.Это должно быть относительно легко написать на любом языке.Вы можете запустить прокси на локальном компьютере, где находится браузер, и все это будет прозрачно как для пользователя браузера, так и для веб-сайта (на локальном компьютере даже IP-адрес будет правильным, что может быть проблемой).для удаленных прокси)

Некоторые антивирусные и антивирусные приложения действительно стоят того, чтобы сделать это, уже имея возможность заблокировать пользовательский агент и реферальные данные, чтобы сайты не могли их отслеживать.Насколько я знаю, они в значительной степени используют именно эту технику (те же локальные прокси-серверы также используются для фильтрации вредоносных программ до того, как они попадут в браузер).

...