View Sidebar
Яндекс.Метрика
 
Автоматическая загрузка отчетов брокера АЛОР на smart-lab.ru. Часть 1. Скачивание отчетов

Автоматическая загрузка отчетов брокера АЛОР на smart-lab.ru. Часть 1. Скачивание отчетов

02.04.2016 16:060 comments

Переходим к делу. Форма авторизации в личном кабинете расположена по адресу https://client.alor.ru/.

alor_login

Взглянем на исходный код страницы 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(); //Выходим

Весь скрипт первой части в этом архиве.

Переходим к следующей части.

А начало читаем тут.

Оставляйте свои отзывы и замечания ниже в комментариях...

Добавить комментарий


css.php