Smoke

 
<<< Назад

Парсим данные баланса из ЛК Билайн (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));

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

Обсуждение (3) (2)

Смотрите так же:
13.03.2023 Debounce настройка в z2m
06.03.2023 Боремся с mysql и жором места на диске
24.10.2021 Определяем выключен ли свет по камере о_О
18.10.2021 Опять прокси WS! Теперь для KeenDNS+NGINX
19.09.2021 Хитрый MJPEG или укрощение строптивого
08.06.2021 Парсим информер с Яндекс.Погоды
13.01.2021 Не разговаривает Алиса через облако?
15.12.2020 Разгоняем Xiaomi Home
04.11.2020 Проксирование WebSocket с wss:// -> ws://
02.11.2020 Как получить время езды до работы?
02.06.2020 Стилизация штатного редактора кода, часть 2
01.06.2020 Распознавание речи - бесплатно, просто, быстро.
01.06.2020 Стилизация штатного редактора кода
28.01.2020 Camshoter на свой лад
21.01.2020 Google Location + Yandex Maps, на свой лад
19.01.2020 Получение Я.Погоды из сценария
17.01.2020 Рассказ хейтера сцен в MJDM. Часть 2
17.01.2020 Как можно НЕ использовать сцены в MJDM. Часть 2
16.01.2020 Перезагружаем роутер Zyxel из MJDM
12.12.2019 Как подружить Camshoter и обычную вебку
07.10.2019 Управление планшетом из сцен/WEB
07.10.2019 Использование злосчастных WebSoccet
17.01.2020 ~DELETED~
23.07.2019 Как можно НЕ использовать сцены в MJDM. Часть 1.

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

На форуме: SmoKE_xDDD