Очистка данных с защищенного веб-сайта или автоматизация повседневных задач - PullRequest
3 голосов
/ 28 февраля 2011

У меня есть веб-сайт, на котором мне нужно войти в систему с именем пользователя, паролем и капчей.

Однажды у меня есть панель управления, на которой есть бронирования.Для каждого бронирования есть ссылка на страницу с подробной информацией, на которой указан адрес электронной почты лица, осуществляющего бронирование.

Каждый день мне нужен список всех этих адресов электронной почты, чтобы отправить им электронное письмо.

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

Я видел статью, где я могу передать куки какзаголовок, и это должно сработать, но для этого потребуется, чтобы я просмотрел cookie-файл в firebug, скопировал и вставил его.

Это будет подано не техническим специалистом, так что это не самый лучший вариант.1011 *

Другая вещь, о которой я подумал, это скрипт, который они могут запустить, который автоматизирует это в браузере?Любые советы о том, как это сделать?

Ответы [ 4 ]

2 голосов
/ 04 марта 2011

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

Вот основные шаги, которые вы должны выполнить:

  • Загрузите страницу, на которую хотите войти
  • Отправьте необходимую информацию для входа, используя POST метод (имя пользователя, пароль или все, что запрашивает страница)
  • Сохраните Cookies в ответе и используйте эти Cookies с этого моментана.
  • Запросить страницу с этими Cookies и проанализировать ее с помощью HtmlAgilityPack.

Вот что я всегда делаю при использовании HtmlAgilityPack: Отправитьзапросить на сайте, используя HttpWebRequest вместо этого, используя Load(..) метод HtmlWeb class .

Учтите, что один из параметров Load метода в HtmlDocumentкласс получает Stream.Все, что вам нужно сделать, это пропустить поток response (полученный из request.GetResponseStream()), и у вас будет HtmlDocument необходимый вам объект.

Я предлагаю вам установить Fiddler .Это действительно отличный инструмент для проверки HTTP-запросов / ответов либо из вашего браузера, либо из вашего приложения.

Запустите Fiddler и попробуйте зайти на сайт через браузер и посмотреть, что браузер отправляет на страницу и что возвращает страница, и это именно то, что вам нужно для эмуляции, используя класс HttpWebRequest.

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

Идея заключается не просто в передаче статического Cookie в заголовок.Это должно быть Cookie , возвращаемое страницей после входа в систему.

Чтобы обработать Cookies , взгляните на свойство HttpWebRequest.CookieContainer .Это проще, чем вы думаете.Все, что вам нужно сделать, это объявить переменную CookieContainer (пустую) и присвоить ее этому свойству перед отправкой любого запроса на веб-сайт.Когда веб-сайт дает ответ, Cookies должны быть автоматически добавлены в этот контейнер, чтобы вы могли использовать их при следующем запросе веб-сайта.

Редактировать 2:

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

0 голосов
/ 27 декабря 2011

Для автоматизации очистки экрана Selenium - хороший инструмент.Есть 2 вещи - 1) установить Selenium IDE (работает только в Firefox).2) Установите Selenium RC Server

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

Просто чтобы вы знали, что Browsermob использует Selenium для нагрузочного тестирования и для автоматизации задач в браузере.

Я загрузил ppt, которыйсделал некоторое время назад.Это должно сэкономить вам много времени - http://www.4shared.com/get/tlwT3qb_/SeleniumInstructions.html

. В приведенной выше ссылке выберите опцию регулярной загрузки.

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

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

Чтобы удалить веб-сайт в .NET, есть Html Agility Pack .

А вот ссылка, которая объясняет, как выполнить вход с ним: Использование HtmlAgilityPack для получения и отправки веб-форм

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

Вы можете посмотреть макросы Firefox: http://www.iopus.com/imacros/firefox/.

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

...