Копировать шаги при загрузке файла - PullRequest
1 голос
/ 22 марта 2011

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

Я пытался наблюдать за последовательностью POST, используя режим разработчика Chrome, а затем повторять все шаги, используя класс .Net WebClient, но безуспешно. Я наследовал от класса WebClient и добавил обработку файлов cookie. Который, кажется, работает. Я захожу на страницу входа и публикую сообщения с помощью WebClient.UploadValues. Примерно в половине случаев это похоже на работу. Следующим шагом является создание еще одного действия POST для URL отчета. Я снова использую WebClient.UploadValues, но ответ от сервера - это страница с внутренней ошибкой.

У меня есть пара вопросов. 1) Есть ли лучшие инструменты, чем ручное кодирование кода C #, для репликации множества взаимодействий веб-браузера? Меня действительно волнует только возможность загружать файл в определенное время каждый день на Windows-коробку. 2) WebClient не является лучшим классом для этого. Возможно, это немного упрощенно. Я пытался использовать HttpWebRequest, но он не имеет средств для кодирования запросов POST. Любые другие рекомендации? 3) Несмотря на то, что плагин разработчика Chrome, кажется, показывает все взаимодействие, я нахожу его немного громоздким в использовании. Мне было бы интересно увидеть все необработанные сообщения (хотя и не зашифрованные, сайт доступен только через https), поэтому я могу посмотреть, действительно ли я повторяю все шаги.

Я даже могу опубликовать точный код, который я использую. Сайт, с которого я беру данные, в частности, веб-сайт Standard and Poors. У них есть возможность создавать собственные отчеты для загрузки исторических данных, которые мне нужны для отчетов, а не для повторной публикации.

Ответы [ 2 ]

1 голос
/ 22 марта 2011

Использование IE для загрузки файла было бы намного проще, по сравнению с написанием кода C # / Perl / Java для репликации http-запросов.

Причина в том, что даже небольшое изменение в коде JavaScript может прервать поток.

С IE вы можете автоматизировать его с помощью COM.Следующий пример VBA открывает IS и выполняет поиск Google:

Sub Search_Google()
Dim IE As Object
Set IE = CreateObject("InternetExplorer.Application")

IE.Navigate "http://www.google.com" 'load web page google.com

While IE.Busy
  DoEvents  'wait until IE is done loading page.
Wend

IE.Document.all("q").Value = "what you want to put in text box"
ie.Document.all("btnG").Click 
'clicks the button named "btng" which is google's "google search" button

While ie.Busy
  DoEvents  'wait until IE is done loading page.
Wend

End Sub
0 голосов
/ 22 марта 2011

3) Although Chrome's developer plugin appears to show all interaction, I find it a bit cumbersome to use. I'd be interested in seeing all of the raw communication (unencrypted though, the site is only accesses via https), so I can see if I'm really replicating all of the steps.

Для этого вы можете использовать Fiddler , чтобы просмотреть все происходящее взаимодействие и данные RAW, идущие вперед и назад.Чтобы он работал с HTTPS, вам нужно установить сертификаты , чтобы включить расшифровку трафика.

...