Добрый день.
Авторизуюсь на сайте.
После авторизации при открытии нового окна, авторизация сохраняется. Далее пытаюсь с помощью функции InetGet загрузить файл по ссылке, но файл не скачивается.
Я пытался с помощью этого кода скачать файл с другого сайта, на котором не требуется авторизация. Все загружается.
Как нужно применять InetGet в этом случае?
(Информация которую я пытаюсь скачать платная, у меня все оплачено, поэтому если ссылку, которую я использую в качестве параметра для InetGet я просто ввожу в браузере, то появляется стандартная форма для сохранения. У меня IE11.)
Авторизуюсь на сайте.
После авторизации при открытии нового окна, авторизация сохраняется. Далее пытаюсь с помощью функции InetGet загрузить файл по ссылке, но файл не скачивается.
Я пытался с помощью этого кода скачать файл с другого сайта, на котором не требуется авторизация. Все загружается.
Код:
Local $urllogin = "http://passport.moex.com/login" ; url к странице авторизации
;Local $urllogin = "https://passport.moex.com/ru/login?return_to=http://moex.com/ru/marketdata/archive/" ; url к странице авторизации
local $urlarchive = "http://moex.com/ru/marketdata/archive/#/engine=stock&market=shares&data_type=securities&data_interval=current&data_format=csv" ; url для ручного выбора файлов (чтобы не забыть потом, где скачивать =)
local $username = "...."
local $password = "...."
local $logmsg
local $oIE
local $oForm
local $oText
;--- Авторизуемся
$logmsg = "Открываю страницу авторизации на сайте micex: " & $urllogin
;LogPrintLineDeb( $logmsg & @CRLF)
$oIE = _IECreate( $urllogin, 0, 1 ) ; Запустить IE и открыть страничку аутентификации
$logmsg = "Страница авторизации открыта."
;LogPrintLineDeb( $logmsg & @CRLF)
$oForm = _IEFormGetCollection ( $oIE, 0)
; ввод логина
$oText = _IEFormElementGetObjByName ($oForm, "user[credentials]")
_IEFormElementSetValue ($oText, $username)
; ввод пароля
$oText = _IEFormElementGetObjByName ($oForm, "user[password]")
_IEFormElementSetValue ($oText, $username)
; жмем кнопку Войти
$logmsg = "Жмем кнопку Войти."
;LogPrintLineDeb( $logmsg & @CRLF)
$res = 'xx'
$res = _IEFormSubmit ( $oForm, 1 )
Local $sFilePath =@ScriptDir
Local $hDownload = InetGet("http://www.moex.com/iss/downloads/engines/stock/markets/shares/years/2016/months/06/days/29/trades_micex_stock_shares_2016_06_29.csv.zip", $sFilePath & "/update1.dat", $INET_FORCERELOAD, $INET_DOWNLOADBACKGROUND)
Do
Sleep(250)
Until InetGetInfo($hDownload, $INET_DOWNLOADCOMPLETE)
; Retrieve the number of total bytes received and the filesize.
Local $iBytesSize = InetGetInfo($hDownload, $INET_DOWNLOADREAD)
Local $iFileSize = FileGetSize($sFilePath)
; Close the handle returned by InetGet.
InetClose($hDownload)
; Display details about the total number of bytes read and the filesize.
MsgBox($MB_SYSTEMMODAL, "", "The total download size: " & $iBytesSize & @CRLF & _
"The total filesize: " & $iFileSize)
exit
(Информация которую я пытаюсь скачать платная, у меня все оплачено, поэтому если ссылку, которую я использую в качестве параметра для InetGet я просто ввожу в браузере, то появляется стандартная форма для сохранения. У меня IE11.)