Как заставить элемент управления WebBrowser притворяться, что это браузер Firefox? - PullRequest
0 голосов
/ 28 февраля 2012

Я использую программу VB.NET, которая использует элемент управления WebBrowser для навигации в Интернете. Сайт, на который мне нужно перейти, внезапно стал не дружелюбным к IE. Итак, я пытаюсь показать сайту, что элементом управления WebBrowser является не IE, а браузер Mozilla Firefox. Как я могу это сделать? Могу ли я изменить заголовок HTTPrequest, который отправляет элемент управления? Или что-то типа того? Спасибо!

------------- Редактировать --------------

Привет, xxbbcc! Спасибо за ваш большой ответ. HttpWebRequest - это единственный вариант, который я оставил. Раньше я работал с этим в прошлом, но я сомневаюсь, что это будет работать в случае сайта, который мне нужен.

Проблема в том, что сайт использует МНОГО сценариев для создания веб-страницы, и кнопка, на которую нужно нажать, на самом деле является ссылкой, которая вызывает сценарий, а затем страница строится еще дальше. Последний HTML-код - это то, что мне нужно.

Теперь проблема еще сложнее, чем я думал. Абсолютно не имеет значения, какой user-agent указан в заголовках запроса (я выяснил это с помощью Fiddler, благодаря jfmags). Кажется важным то, что после того, как сайт перенаправляет браузер на HTTPS-адрес, Firefox продолжает отправлять запросы HTTP / 1.1, в то время как IE начинает отправлять запросы HTTP / 1.0, и это, вероятно, приводит к сбою. Это сделано по проекту владельцев сайта. Я нашел обсуждение в сети об этом здесь http://answers.microsoft.com/en-us/ie/forum/ie8-windows_other/how-to-force-ie-to-use-http11-over-ssl-through/360eca2d-e290-4078-ad37-7665bec706c4, но это не кажется окончательным. Раньше я работал с Mozilla ActiveX Control, но сейчас он устарел, поскольку проект был прекращен.

Сайт, о котором я говорю, это пресловутый сайт .

Я знаю, я пират, это плохо. Скачивая фильм, я, вероятно, причиняю многомиллионные убытки некоторым огромным и невероятно богатым компаниям Но там, где я живу, просто невозможно купить фильм с оригинальным звучанием, все они покалечены перезаписью. Итак, какие варианты я оставил? Мне нравятся фильмы.

Я попытаюсь выяснить, может ли HttpWebRequest справиться с этим.

Ответы [ 3 ]

1 голос
/ 03 мая 2012

Вы можете прочитать о GeckoFX. Это элемент управления, похожий на WebBrowser, но он работает на движке Gecko (на том же движке работает Firefox).

http://code.google.com/p/geckofx/

0 голосов
/ 28 февраля 2012

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

Действительно, элемент управления WebBrowser - IE.

Edit :

В своем комментарии вы сказали, что вам нужен только HTML-код страницы, чтобы имитировать нажатие кнопки на этой странице,В этом случае вы можете попробовать использовать объекты HttpWebRequest / HttpWebResponse для отправки / получения HTTP-запросов на сервер.Вы можете использовать их для отправки любого заголовка, чтобы вы могли легко смоделировать любой браузер, отправив нужные заголовки.Вы можете использовать Fiddler, чтобы сначала перейти на сайт и сохранить запросы в Firefox, а затем использовать информацию из этих запросов для создания ваших HttpWebRequest объектов.

Когда у вас есть HTML-код, вы можете его анализировать иделай как хочешь.Если вам нужно нажать кнопку, которая запускает обратную передачу на сервер, вы можете проанализировать соответствующие данные из HTML-ответа и затем создать запрос POST.HttpWebRequest работает как в синхронном, так и в асинхронном режимах, поэтому вы можете либо загрузить страницу, используя несколько строк кода, либо контролировать весь процесс загрузки (это более сложно).

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

0 голосов
/ 28 февраля 2012

Вы не можете.Элементом управления веб-браузера является Internet Explorer.

...