Изменение пользовательского агента с помощью urlmon.dll - PullRequest
1 голос
/ 19 марта 2012

При поиске способа изменения строки пользовательского агента для элемента управления webBrowser я нашел этот изящный метод:

    [DllImport("urlmon.dll", CharSet = CharSet.Ansi)]
    private static extern int UrlMkSetSessionOption(int dwOption, string pBuffer, int dwBufferLength, int dwReserved);
    const int URLMON_OPTION_USERAGENT = 0x10000001;

    public static void ChangeUserAgent(string Agent)
    {
        UrlMkSetSessionOption(URLMON_OPTION_USERAGENT, Agent, Agent.Length, 0);
    }

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

Обычное:

webBrowser1.Navigate ("http://www.whatsmyuseragent.com", "_self" , null, "User-Agent: Luke's Web Browser");

Работает только для одного запроса.

Однако я все время читаю, что первый метод работает только один раз за сеанс.В моем случае это работает столько раз, сколько я хочу.Итак, я думаю, что это связано с экземпляром Internet Explorer на компьютере?

Итак, мои вопросы:

  • Какую версию нужно установить конечному пользователю на своем компьютере?компьютер для этого метода работать как задумано?IE.измените столько, сколько хотите.
  • Поскольку это связано с установленным на компьютере Internet Explorer, влияет ли изменение пользовательского агента в моем приложении на браузер?
  • Если у пользователя есть Internet Explorerоткрыть, будет ли этот метод все еще работать?

Спасибо!

1 Ответ

1 голос
/ 30 апреля 2012

Мы используем функцию «UrlMkSetSessionOption» совсем немного. У нас есть «пользовательская оболочка веб-браузера», которая на самом деле является просто пользовательским элементом управления IE, встроенным в полноэкранную программу WinForms. Мы изменяем пользовательский агент, чтобы идентифицировать на нашем веб-сервере, что это наша «настраиваемая» оболочка браузера. Но чтобы ответить на ваши конкретные вопросы:

  1. Мы использовали это как с IE8 на XP, так и с IE9 на Win7. Я думаю, что это не зависит от версии, но мы всегда используем последнюю версию.
  2. Насколько мы можем судить, изменение этого параметра влияет только на IE, запущенный в процессе, который вызвал метод. Таким образом, если пользователь запускает IE с рабочего стола, пользовательский агент не изменяется. Если вы перезапустите программу, пользовательский агент не изменится.
  3. Работает с автономными экземплярами IE и без них. Пользовательский агент для этих автономных экземпляров остается неизменным.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...