Копировать шаги при загрузке файла

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

Я пытался наблюдать за последовательностью 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 ответа

Решение

Использование 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

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, вам нужно установить сертификаты, чтобы включить расшифровку трафика.

Другие вопросы по тегам