Каков наилучший элемент управления WebBrowser, который позволяет один прокси на экземпляр? - PullRequest
2 голосов
/ 27 декабря 2010

Я делаю многопоточное приложение.У каждого потока должен быть свой собственный веб-браузер без графического интерфейса пользователя, который перемещается на веб-страницу, записывает данные в поля и нажимает кнопку.Мне также нужно, чтобы каждый WebBrowser имел свой собственный прокси.Я попробовал классический Windows.Forms.WebBrowser, но застрял в прокси-части, так как это зависит от глобальных настроек IE, которые не будут работать в моем случае.Любые рекомендации приветствуются.

примечание: я пытался сделать это через HttpWebRequest / Response, но он никогда не будет работать, поскольку данные для передачи на страницу содержат поле с именем [ab_test_data], которое получает свое значение из кода JavaScript, которыйрассчитать значение в соответствии с тестированием AB, которое я даже не до конца понимаю.Таким образом, WebBrowser был бы моим лучшим решением, если кто-то не может сказать мне, как преобразовать тот код Javascript, который вычисляет ab_test_data, в код C #.Алгоритм, используемый страницей, к которой я пытаюсь получить доступ, действительно сложен.

note2: значение ab_test_data зависит от Window.Event и Timestamp, которые нельзя смоделировать в httpWebRequest / Response.

примечание 3: я попробовал Gecko, но он не позволит мне ничего сделать с веб-страницей, если GeckoWebBrowser не нарисован на форме (что мне не нужно).Любые решения приветствуются.

edit: Если вы знаете какой-либо WebBrowser, который работает так, как я хочу, на любом другом языке (возможно, Java), я бы хотел знать.

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

Ответы [ 3 ]

6 голосов
/ 27 декабря 2010
1 голос
/ 28 декабря 2010

В качестве вопроса, который может помочь, я удивляюсь, почему браузеры не допускают прокси для (скажем) окна / вкладки?Я думаю, что во многом из-за недостатка времени разработки.

Это также может быть связано с тем, что браузеры [предположительно] имеют централизованные механизмы для таких вещей, как веб-запросы и кеши и т. Д. Возможноразрешение прокси для каждого окна и / или вкладки в корне изменит дизайн современного браузера и окажет негативное влияние на производительность.Я действительно не знаю.Чтобы проиллюстрировать это далее, рассмотрим такие вещи, как режим инкогнито и приватный просмотр.В этих случаях браузеры, по крайней мере, концептуально делали отдельные кэши для окон ... но я все еще держу пари, что окно Incognito и стандартное окно (в Chrome) используют один и тот же базовый механизм веб-запросов.

Rightсейчас так много людей, которым нужен синтаксический анализатор и интерпретатор JavaScript и DOM.Такие проекты, как HtmlAgility Pack и Jint , помогают, но, похоже, единого и стандартного решения не существует;по крайней мере, один с простотой веб-браузера.

[напыщенная речь ниже] ...

К сожалению, такие проекты, как Jint и HtmlAgility, вызывают беспокойство.Во-первых, это не IE, Chrome, Safari или FireFox.Вы точно не знаете, во что вы ввязываетесь.Например, вы знаете, что на странице Chrome xyz.com отлично загружается и рендерится.Вы можете запустить FireFox и увидеть, что, возможно, что-то не так и так с другими браузерами.Но с этими библиотеками вы действительно не знаете, что, если не все работает правильно (нет визуального отображения для быстрой проверки).Плюс, кто знает, в каком темпе они развиваются.Они идут в ногу с HTML5?Они отстают от основных браузеров?Как насчет производительности?Более того, в браузерах уже есть такие вещи, как кэширование и повышение производительности, которые, я сомневаюсь, вы получите с отдельными библиотеками.

Лучшее управление браузером, конечно, будет примерно таким:

IWebBrowser browser = new IE();
IWebBrowser browser = new Chrome();
IWebBrowser browser = new Safari();
IWebBrowser browser = new FireFox();

Я думаю, что это мечта, к сожалению.С одной стороны, что, если вы когда-нибудь хотели загрузить плагины с этими?А как насчет пользовательских профилей, пользовательских логинов и так далее?Я думаю, что большинству из нас нужны только браузеры без этих дополнений.

Я действительно надеюсь, что вы найдете хорошее решение для Chrome.Я не знаю, какая удача, если таковая будет, у вас будет в сфере FireFox - может, вы сможете держать нас в курсе?Эти решения развиваются так быстро - я никогда даже не слышал о CefSharp или WebKit.NET до сегодняшнего дня, и несколько месяцев назад я искал то же самое (браузеры Chrome и / или FireFox .NET) для собственного использования.Было бы здорово, если бы множество людей собралось вместе, сделало стандартный интерфейс, а затем каждая компания создала свой встроенный браузер в соответствии со спецификацией.Вот для желающих.

1 голос
/ 27 декабря 2010

использование http://webkitdotnet.sourceforge.net/

...