Данные берутся с личного кабинета МегаФона https://lk.megafon.ru .
Выкладываю код для версии ЛК.
Код: Выделить всё
$username = '9222222222';
$password = '*********';
//$url = 'https://lk.megafon.ru/api/login';
echo '<!DOCTYPE html><html lang="ru"><head><meta charset="utf-8"/></head><body><br>';
// Авторизуемся
$header = [
'Accept: application/json, text/plain, */*',
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'Host: lk.megafon.ru',
'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
'Referer: https://lk.megafon.ru',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0',
'X-Cabinet-Capabilities: web-2020'
];
$post_data = [
'login' => $username,
'password' => $password
];
$post_data = http_build_query($post_data);
$page = getData('https://lk.megafon.ru/api/login', $header, $post_data);
file_put_contents(__DIR__ . '/megafonLK.json', $page);
$json = json_decode($page);
$meg_mes = $json->message;
echo "<strong>Сообщение со странцы авторизации:</strong> $meg_mes<br><br>\r\n";
// ЛК
$header = [
'Accept: application/json, text/plain, */*',
'Accept-Language: ru-RU,ru;q=0.8,en-US;q=0.5,en;q=0.3',
'Content-Type: application/x-www-form-urlencoded; charset=UTF-8',
'Referer: https://lk.megafon.ru/',
'User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0',
'X-Cabinet-Capabilities: web-2020'
];
$page = getData('https://lk.megafon.ru/api/main/balance', $header);
// file_put_contents(__DIR__ . '/megafon1.json', $page);
$json = json_decode($page);
$meg_bal = $json->balance;
$meg_mes1 = $json->message;
echo "<strong>Баланс:</strong> $meg_bal<br><br>\r\n";
echo "<strong>Сообщение со страницы данных:</strong> $meg_mes1<br><br>\r\n";
//sg("User.Balance","$meg_bal"); // Присваиваем данные
// Минуты и интернет остаток
$page1 = getData('https://lk.megafon.ru/api/options/v2/remainders/mini', $header);
// file_put_contents(__DIR__ . '/minmegafon.json', $page1);
$json1 = json_decode($page1, true);
$min = $json1['remainders'][0]['availableValue']['value'];
$gig = $json1['remainders'][1]['availableValue']['value'];
$gig1 = $gig*1000;
if ($min == '') {
$min = '0';
}
if ($gig1 == '') {
$gig1 = '0';
}
echo "<strong>Остаток минут:</strong> $min<br><br>\r\n";
echo "<strong>Остаток мегабайт:</strong> $gig1<br><br>\r\n";
//sg("User.MinOstatok","$min"); // Присваиваем данные
//sg("User.MegabOstatok","$gig1"); // Присваиваем данные
// Название тарифа и статус
$page2 = getData('https://lk.megafon.ru/api/tariff/2019-3/current', $header);
// file_put_contents(__DIR__ . '/statusmegafon.json', $page2);
$json2 = json_decode($page2, true);
$tar = $json2['name'];
$stat = $json2['status'];
$dat = $json2['ratePlanCharges']['chargeDate'];
$dat1 = substr($dat, 0, strpos($dat, ' ' )); // Обрезаем 12.07.2022 00:02 до 12.07.2022
if ($tar == '') {
$tar = 'Без тарифа';
}
if ($stat == 'current') {
$stat = 'Активен';
}
echo "<strong>Тариф:</strong> $tar<br><br>\r\n";
echo "<strong>Статус тарифа:</strong> $stat<br><br>\r\n";
echo "<strong>Дата окончания тарифа:</strong> $dat1<br><br>\r\n";
//sg("User.TarifMob","$tar"); // Присваиваем данные
//sg("User.BalanceStat","$stat"); // Присваиваем данные
//sg("User.DataStop","$dat1"); // Присваиваем данные
echo '</body></html>';
//file_put_contents(__DIR__ . '/page.json', $page);
//print_r($json);
//die;
// Функция CURL-запроса
function getData($url, $header = false, $post_data = false)
{
global $dir;
$ch = curl_init();
curl_setopt($ch, CURLOPT_HTTP_VERSION, CURL_HTTP_VERSION_2);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_COOKIEJAR, __DIR__ . '/megaf_cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEFILE, __DIR__ . '/megaf_cookie.txt');
if ($header) {
curl_setopt($ch, CURLOPT_HTTPHEADER, $header);
}
if ($post_data) {
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
}
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_TIMEOUT, 300);
curl_setopt(
$ch,
CURLOPT_USERAGENT,
'Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:99.0) Gecko/20100101 Firefox/99.0'
);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
$ret = curl_exec($ch);
usleep(300000);
return $ret;
}
И на заметку: при частых запросах необходимо будет вводить капчу дополнительно к логину и паролю.
Чуток позже выложу такой же код для оператора Мотив (Свердловская область).
Пользуйтесь.