Я пытаюсь автоматизировать загрузку файла с веб-сайта. Обычно, чтобы загрузить файл, я вхожу с именем пользователя и паролем. Перейдите к определенному экрану, затем нажмите кнопку.
Я пытался наблюдать за последовательностью 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. У них есть возможность создавать собственные отчеты для загрузки исторических данных, которые мне нужны для отчетов, а не для повторной публикации.