Smoke

 
<<< Back

Парсим данные баланса из ЛК Билайн (Update)

Сценарий на получение информации о статусе домашнего интернета

Привет! Что это?

Сегодня увидел у directman скрипт парсинга личного кабинета Билайн, жаль, что он старый и уже не работает, но я же могу сам! Загорелось, не знаю зачем но пусть будет. Ковырялся в ЛК больше 3 часов, чтобы найти откуда можно цепануть данные, нужно отдать должное программистам Билайна - запрятали знатно!
Сделано для Билайн Россия и только для проверки домашнего интернета!
Важно №1! В сценарии вы увидите упоминание Нижнего Новгорода, если не будет работать так - замените на свой город.
Важно №2! Я пока не знаю, сколько будут жить куки и токен! Поэтому, может и зря я это пишу... - ОТВЕТ - ВЕЧНАЯ КУКА!

Что умеем?

Для себя сделал вот так:

Баланс Л/С 0897776776 составляет: 42.24 руб. Оплатить 448 руб. до 01.02.2020 17:26:31
Интернет НЕ заблокирован

Но там очень много еще всего, я вытащит только то, что нужно мне. Пишите, если вам чего-либо не хватает - посмотрим.

Как пользоватся?

  1. Нужны куки. Получаем из с этой страницы: https://nizhniy-novgorod.beeline.ru/customers/fina... и только с нее, ибо там есть ваш токен на доступ к субдоменам! Скачать куки нужно в файл используя вот это расширение для гуглоХрома
  2. Закидываем куки на сервер
  3. Создаем сценарий и в него:
//в этом файле будет храниться сессия
$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));

Отдает даже остатки минут/интернета и много чего еще...

Discuss (3) (2)

See also:
2023-03-13 Debounce настройка в z2m
2023-03-06 Боремся с mysql и жором места на диске
2021-10-24 Определяем выключен ли свет по камере о_О
2021-10-18 Опять прокси WS! Теперь для KeenDNS+NGINX
2021-09-19 Хитрый MJPEG или укрощение строптивого
2021-06-08 Парсим информер с Яндекс.Погоды
2021-01-13 Не разговаривает Алиса через облако?
2020-12-15 Разгоняем Xiaomi Home
2020-11-04 Проксирование WebSocket с wss:// -> ws://
2020-11-02 Как получить время езды до работы?
2020-06-02 Стилизация штатного редактора кода, часть 2
2020-06-01 Распознавание речи - бесплатно, просто, быстро.
2020-06-01 Стилизация штатного редактора кода
2020-01-28 Camshoter на свой лад
2020-01-21 Google Location + Yandex Maps, на свой лад
2020-01-19 Получение Я.Погоды из сценария
2020-01-17 Рассказ хейтера сцен в MJDM. Часть 2
2020-01-17 Как можно НЕ использовать сцены в MJDM. Часть 2
2020-01-16 Перезагружаем роутер Zyxel из MJDM
2019-12-12 Как подружить Camshoter и обычную вебку
2019-10-07 Управление планшетом из сцен/WEB
2019-10-07 Использование злосчастных WebSoccet
2020-01-17 ~DELETED~
2019-07-23 Как можно НЕ использовать сцены в MJDM. Часть 1.

Нижний Новгород, Россия

На форуме: SmoKE_xDDD