Страницы: 1
RSS
VBA: сохранение файла с сайта, доступного через форму (через submit... post)
 
Добрый день!  
 
Обдумываю автоматизацию процесса загрузки файлов из Интернета. Ресурс защищен от роботов, поэтому придется кому-то прикладывать к процессу руки - моя задача сократить эти телодвижения только до ввода кода на картинке - все остальное должна делать автоматика.  
 
Работаем в VBA, пока продумываю вариант с автоматизацией Iternet Explorer (как элемента формы, либо как отдельностоящего окна). Чтобы добраться до страницы, через которую загружается файл придется при входе на сайт выбрать сертификат (подозреваю это будет делать человек), ввести пароль (стандартный диалог винды), далее выполнить поиск по базе (особых проблем автоматизации не вижу), сохранить найденную запись в файле word - есть такая кнопа на странице, при нажатии (планирую программно) кнопы открывается страница с кодом на картинке в форме (с методом post), несколькими полями опций и кнопкой. По кнопке с сайта прилетает файлик и IE предлагает его открыть или сохранить - вот пока не придумал как этот шаг автоматизировать... надо избавить пользователя от этого диалога и самостоятельно сохранить файл с правильным именем. Далее предполагается автоматически его подложить в почтовое сообщение и отправить инициатору всего этого процесса, а оператор (помощник робота) займется следующим запросом.  
 
Есть какой-то способ перехватить файлик с сайта и программно с ним разобраться - обозвать, сохранить и т.д.?  
 
Пока на ум приходит только идея заставить IE полученный файл автоматом открыть (не спрашивая пользака)... а дальше уже его сохранять методами IE... ну или Word, если он его в нем откроет.  
 
Еще вопрос, можно ли в IE при входе на сайт программно выбрать сертификат, а также указать имя+пароль пользователя (запрашиваются не на странице а отдельным диалогом винды)?  
 
Альтернативно, можно через httprequest авторизоваться на ресурсе с помощью сертификата + пароля? Стоит ли копать в эту сторону вместо автоматизации IE? Например, взаимодействие с сайтом строить через httprequest, а картинку против роботов отображать в форме VBA?
 
"По кнопке с сайта прилетает файлик и IE предлагает его открыть или сохранить"  
- вот здесь кнопку нажимать не нужно, а посмотреть какой запрос отправляется на сервер при её нажатии, и затем самостоятельно его сделать, например так:  
 
Set obj_http =  CreateObject("Microsoft.XMLHTTP")  
obj_http.Open "POST", form.action, false  
obj_http.send form_data 'здесь запрос и посылается  
Set obj_ado = CreateObject("ADODB.Stream")  
obj_ado.Mode = 3  
obj_ado.Type = 1  
obj_ado.Open  
obj_ado.Write obj_http.responseBody  
obj_ado.SaveToFile filepath, 2 'сохраняем в файл  
obj_ado.Close  
Set obj_ado = nothing
 
Можно и капчу (текст с картинки) программно вводить  
 
Недавно искал (и нашел) решение для VBA в виде DLL:  
http://ag-vba.ucoz.ru/load/biblioteka_vb_dll_dlja_servisa_http_antigate_com/1-1-0-2  
 
Не тестировал - но, судя по всему, все работает.  
Заводим аккаунт на антегейте, платим 1 доллар за 1000 распознаваний, - и все работает без вмешательства пользователя.
 
держи, может пригодится http://www.excelworld.ru/forum/3-2168-1  
 
> Альтернативно, можно через httprequest авторизоваться на ресурсе с помощью сертификата + пароля? Стоит ли копать в эту сторону вместо автоматизации IE? Например, взаимодействие с сайтом строить через httprequest, а картинку против роботов отображать в форме VBA?  
 
я бы поступил именно так. Тыкать браузером в пользователя как-то не кошерно ) По возможности лучше этого не делать.
Чебурашка стал символом олимпийских игр. А чего достиг ты?
Тишина - самый громкий звук


https://github.com/nervgh
 
Коллеги, спасибо большое!  
 
В итоге сам делать не стал - дописал ТЗ и отдал айтишнику. Решили заделать внутренний web-сервис - пользователь вводит параметры запроса на нашей web-странице, остальное все делает сервер - обращается к китайскому серверу за расшифровкой картинки, подставляет его в запрос на ресурсе, получает файл, далее шлет его письмом, либо отображает ссылкой в запросе инициатора (это пока открытый вопрос).  
 
Но показанные приемы мне еще пригодятся - иногда сам делаю подобные програмки.
Страницы: 1
Читают тему
Наверх