Сценарий на получение информации о статусе домашнего интернета
Сегодня увидел у directman скрипт парсинга личного кабинета Билайн, жаль, что он старый и уже не работает, но я же могу сам! Загорелось, не знаю зачем но пусть будет. Ковырялся в ЛК больше 3 часов, чтобы найти откуда можно цепануть данные, нужно отдать должное программистам Билайна - запрятали знатно!
Сделано для Билайн Россия и только для проверки домашнего интернета!
Важно №1! В сценарии вы увидите упоминание Нижнего Новгорода, если не будет работать так - замените на свой город.
Важно №2! Я пока не знаю, сколько будут жить куки и токен! Поэтому, может и зря я это пишу... - ОТВЕТ - ВЕЧНАЯ КУКА!
Для себя сделал вот так:
Баланс Л/С 0897776776 составляет: 42.24 руб. Оплатить 448 руб. до 01.02.2020 17:26:31
Интернет НЕ заблокирован
Но там очень много еще всего, я вытащит только то, что нужно мне. Пишите, если вам чего-либо не хватает - посмотрим.
//в этом файле будет храниться сессия
$cookie_file = ROOT . 'tablet/files/beeline_cooc.txt';
//Найдем токен в куках
foreach(file($cookie_file) as $k => $v) {
if(strpos($v,'BISAuthTokenCookie',0) !== false) {
$token = trim(substr(stristr($v, 'BISAuthTokenCookie'), 18));
break;
}
}
//-----------------------------------
//Обработаем ошибки!
if($token == '' || empty($token) || strlen($token) < 100) {
echo json_encode(array('status' => 'error', 'text' => 'Не удалось получить токен из файла с cookie!'));
die();
}
//-----------------------------------
//урл для получения основной инфы
$dataURL = 'https://widgetpay1.beeline.ru/api/PromisedPayment/Fttb?OamAuthToken='.$token;
$dataRequest = json_decode(file_get_contents($dataURL), TRUE);
//Обработаем ошибки!
if(empty($dataRequest['PromisedPaymentWidget']['FinInfo']['MonthlyPayment'])) {
echo json_encode(array('status' => 'error', 'text' => 'Ошибка получения данных!'));
die();
}
//-----------------------------------
//Наконец то сами данные!
$MonthlyPayment = $dataRequest['PromisedPaymentWidget']['FinInfo']['MonthlyPayment'];
$endOfInternet = strtotime($dataRequest['PromisedPaymentWidget']['FinInfo']['BcEndDate']);
$statusBlock = $dataRequest['PromisedPaymentWidget']['FinInfo']['Status'];
$needMoreBalance = $dataRequest['PromisedPaymentWidget']['FinInfo']['PromisedPaymentParams']['TotalAmount']-$dataRequest['PromisedPaymentWidget']['FinInfo']['PromisedPaymentParams']['Fee'];
$balance = $MonthlyPayment-$needMoreBalance;
echo 'Баланс Л/С '.$login.' составляет: '.$balance.' руб. Оплатить '.round($needMoreBalance).' руб. до '.date('d.m.Y H:i:s', $endOfInternet);
if($statusBlock == 0) {
echo '<br> <span style="color: green;">Интернет НЕ заблокирован</span>';
} else {
echo '<br> <span style="color: red;">Интернет заблокирован!</span>';
}
//echo '<pre>';
//var_dump($dataRequest);
Сначала заходим в ЛК под логином и паролем. Далее нужны куки, забрать нужно разришением с этой страницы
Ну а далее, код. На выходе массив со всей информацией в ЛК. Как выяснилось, кука вечная и не ограничена по времени.
//в этом файле будет храниться сессия
$cookie_file = ROOT . 'tablet/files/beeline_cooc_chel.txt';
$data = shell_exec('curl --cookie '.$cookie_file.' "https://krasnodar.beeline.ru/api/profile/userinfo/data/?noTimeout=false&blocks=BalanceNotification,Status,ProfileSummary,Balance,Accumulators,Services,AdditionalBalances,InternetExtension,Convergence"');
echo '<pre>';
var_dump(json_decode($data, TRUE));
Отдает даже остатки минут/интернета и много чего еще...
Нижний Новгород, Россия
На форуме: SmoKE_xDDD