Может ли приложение, содержащее элемент управления WebBrowser, автоматически загружать файлы, подменяя поведение браузера? - PullRequest
0 голосов
/ 18 июля 2010

предположим, что я хочу автоматически загрузить файл с URL-адреса, который находится на веб-сайте, необходимом для аутентификации, на который я вхожу, используя автоматический контроль WebBrowser на основе Internet Explorer. Но как только я попаду туда и возьму ссылку на файл, если я попытаюсь загрузить его напрямую через IE6, перейдя к нему, появится модальное диалоговое окно «Хотите открыть или сохранить этот файл». И если я попытаюсь загрузить его с помощью класса C # WebClient, это не сработало, все, что было загружено, было коротким фрагментом бессмысленного JavaScript. На самом деле, из любопытства я протестировал метод WebClient на сайте Gmail, пытаясь загрузить вложения, но он тоже не работал (я знаю, что из Gmail я могу получить их через интерфейс POP3, это был просто эксперимент).

Ну, это заставляет меня задуматься об основной механике всего этого. Прежде всего, может быть, я неправильно использую WebClient? Или, может быть, есть какой-то другой стандартный класс C # для загрузки файлов при таких обстоятельствах?

Если нет, то может ли приложение подделать поведение браузера, чтобы сервер подумал, что запрос на файл поступил от него, даже если он на самом деле поступает из другой части того же процесса? Что именно делает в этой ситуации браузер, позволяющий загружать файлы, а WebClient не может этого сделать?

Ответы [ 2 ]

2 голосов
/ 18 июля 2010

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

1 голос
/ 18 июля 2010

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

В управляемой человеком "сеансовой" аутентификации (ввод имени пользователя/ password) обычно вызывает отправку некоторых файлов cookie с сервера в браузер, и вы продолжаете входить в систему, поскольку ваш браузер продолжает отправлять эти файлы cookie на сервер при выполнении последующих запросов.

Итак, если ваш веб-клиентможет отправлять (публиковать?) учетные данные правильно и продолжать хранить и повторно отправлять файлы cookie (и / или заголовки "referrer" / "user-agent") по мере необходимости, они не должны быть другими (в конце концов, это просто запроси цепочка ответов протокола HTT).

В конкретном «элементе управления», который вы используете, могут быть меры безопасности, чтобы не допустить его использования (или API) вредоносными программами."Программа пытается отправить электронное письмо от вашего имени, вы уверены, что хотите это разрешить?"подскажите, и сопровождающая 5-секундная задержка в MS Outlook является таким примером.Так что, если конкретный API, который вы используете, имеет такую ​​подсказку / предосторожность, вы не можете позаботиться об этом совершенно молча.

...