Переходим к делу. Форма авторизации в личном кабинете расположена по адресу https://client.alor.ru/.
Взглянем на исходный код страницы HTML и найдем там саму форму авторизации:
<form name="form_auth" method="post" target="_top" action="/index.php?login=yes" class="b-auth-form"> <input type="hidden" name="AUTH_FORM" value="Y" /> <input type="hidden" name="TYPE" value="AUTH" /> <input type="hidden" name="backurl" value="/index.php" /> <div class="b-auth-form__messages"></div> <input class="b-auth-input__login" type="text" name="USER_LOGIN" maxlength="255" value="P054137" placeholder="Логин"/> <input class="b-auth-input__password" type="password" name="USER_PASSWORD" maxlength="255" placeholder="Пароль"/> <label class="b-auth-input__remember"><input type="checkbox" id="USER_REMEMBER" name="USER_REMEMBER" value="Y" /> Запомнить меня</label> <button class="b-auth-input__submit" type="submit" name="Login" value="1">Войти</button> </form>
Для успешного входа, помимо правильного логина и пароля, следует передать следующие пары переменная-значение:
AUTH_FORM=Y
TYPE=AUTH
backurl=/index.php
Процедура авторизации в Личном кабинете Алор
Вот код процедуры, который позволит пройти авторизацию. В процедуре используются функции Curl для работы с COOKIE. В процедуру передаем логин и пароль.
//Процедура авторизации в Личном кабинете function Alor_login($login, $pass){ global $USERAGENT; global $ALOR_COOKIE; $url = "https://client.alor.ru/index.php?login=yes"; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //для протокола SSL curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //для протокола SSL curl_setopt($ch, CURLOPT_URL, $url); // откуда пришли на эту страницу curl_setopt($ch, CURLOPT_REFERER, $url); curl_setopt($ch, CURLOPT_POST, 1); $post = "AUTH_FORM=Y"; $post .= "&"; $post .= "TYPE=AUTH"; $post .= "&"; $post .= "backurl=/index.php"; $post .= "&"; $post .= "USER_LOGIN=$login"; $post .= "&"; $post .= "USER_PASSWORD=$pass"; curl_setopt($ch, CURLOPT_POSTFIELDS, $post); curl_setopt($ch, CURLOPT_USERAGENT, $USERAGENT); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //сохранять полученные COOKIE в файл curl_setopt($ch, CURLOPT_COOKIEJAR, $ALOR_COOKIE); $result=curl_exec($ch); curl_close($ch); }
Процедура выхода из личного кабинета АЛОР
Сразу привожу код процедуры выхода из личного кабинета:
//Процедура выхода из личного кабинета function Alor_exit(){ global $USERAGENT; global $ALOR_COOKIE; $url = "https://client.alor.ru/index.php?logout=yes"; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //для протокола SSL curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //для протокола SSL curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, $USERAGENT); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //отсылаем серверу COOKIE полученные от него при авторизации curl_setopt($ch, CURLOPT_COOKIEFILE, $ALOR_COOKIE); $result=curl_exec($ch); curl_close($ch); @unlink ( $ALOR_COOKIE ); // Удаляем кукис }
Сохранение отчета
Разберемся со скачиванием отчетов.
Алор предоставляет отчеты за день в двух форматах: в формате HTML и в формате XML. Нас интересует формат XML.
После авторизации скачать отчет XML можно по ссылке вида:
"https://client.alor.ru/reports/daily/view/?action=save&type=united&filename=20160329".
filename=20160329 – это дата отчета.
Если отчет еще не сформирован, или он выпадает на выходной день, то Алор вернет пустую строку вместо XML.
Вот процедура, которая скачивает отчет с Алор и сохраняет его в папку. В процедуру передаем только дату отчета.
//Процедура сохраняет отчет в файл function Alor_save_file($filename){ global $USERAGENT; global $ALOR_COOKIE; global $dir; $url = "https://client.alor.ru/reports/daily/view/?action=save&type=united&filename=$filename"; $ch = curl_init(); curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0); //для протокола SSL curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0); //для протокола SSL curl_setopt($ch, CURLOPT_URL, $url); curl_setopt($ch, CURLOPT_USERAGENT, $USERAGENT); curl_setopt($ch, CURLOPT_HEADER, 0); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); //отсылаем серверу COOKIE полученные от него при авторизации curl_setopt($ch, CURLOPT_COOKIEFILE, $ALOR_COOKIE); $result=curl_exec($ch); curl_close($ch); file_put_contents("${dir}reports/$filename.xml", $result); }
Обратите внимание, в процедурах используются глобальные переменные:
$USERAGENT – каким браузером прикидываемся, например: "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4".
$ALOR_COOKIE – полный путь к файлу, в который сохраняем COOKIE
$dir – полный путь к папке со скриптом
Скачивание нескольких отчетов
И напоследок, процедура сохранения не одного, а сразу нескольких отчетов за указанный период.
//Скачиваем отчеты брокера за указанный период function Alor_reports_range( $start_date, $ending_date ) { $start_date = mktime (0, 0, 0, date( "m", $start_date ), date( "d", $start_date ), date( "Y", $start_date ) ); $ending_date = mktime (0, 0, 0, date( "m", $ending_date ), date( "d", $ending_date ), date( "Y", $ending_date ) ); if ($start_date <= $ending_date){ do { sleep(1); //Делаем паузу в 1 секунду, чтобы не DOS-ить сайт $filename = date( "Ymd", $start_date ); Alor_save_file( $filename ); $start_date = $start_date + 86400; } while ($start_date <= $ending_date); } }
Пример использования
$day = 21; $month = 03; $year = 2016; $start_date = mktime (0, 0, 0, $month, $day, $year); $day = 24; $month = 03; $year = 2016; $ending_date = mktime (0, 0, 0, $month, $day, $year); $login_alor = "P000000"; $pass_alor = "***************"; $USERAGENT = "Mozilla/4.0 (Windows; U; Windows NT 5.0; En; rv:1.8.0.2) Gecko/20070306 Firefox/1.0.0.4"; $dir = $_SERVER['DOCUMENT_ROOT'] . "/alor_smart_lab/" ; //Путь к папке со скриптом $ALOR_COOKIE = $dir . 'alor_cookie.txt'; Alor_login($login_alor, $pass_alor); //Логинемся Alor_reports_range( $start_date, $ending_date ); //Скачиваем отчеты брокера за указанный период Alor_exit(); //Выходим
Весь скрипт первой части в этом архиве.
Переходим к следующей части.
А начало читаем тут.
Оставляйте свои отзывы и замечания ниже в комментариях...
Свежие комментарии