-
Notifications
You must be signed in to change notification settings - Fork 22
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Не работает скрипт Tele2 #28
Comments
У меня нет Tele2 номера. Это кто-то контрибутил. Попробуй починить и прислать pull-request. |
Теле2 теперь просит капчу. Для себя можно сделать так
Токен вроде должен жить долго, если не долго то надо обновлять его по Далее import requests
if __name__ == '__main__':
number = '7<phone number>'
token = '<access token from cookies>'
response = requests.get(
url='https://my.tele2.ru/api/subscribers/{}/balance'.format(number),
headers={'Authorization': 'Bearer {}'.format(token)},
)
balance = response.json().get('data', {}).get('value', None)
print("{} - {}".format(number, balance)) Tele2, если читаете, дайте апи по логину и паролю для получения информации о состояния счета и только read-only ))) |
У теле2 за бэком для сайта стоит keycloak. Можно к нему непосредственно обращаться, чтобы получать токены по логину/паролю и рефрешить его потом. Вот, например, юзер портал, где можно залогиниться через номер и пароль от сайта: https://sso.tele2.ru/auth/realms/tele2-b2c/account |
Посмотрел работу вебсайта, access токен живёт 4 часа, а вот refresh токен уже бессмертный, получить по нему access и новый refresh (а старый будет работать и дальше) можно таким запросом:
Но лучше посмотреть авторизацию приложения, там нет капчи и скорее всего можно обменять логин и пароль на токены. В приложении используется certificate pinning для защиты, но сертификат просто валяется в apk. |
Через какое то время выдает:
|
@gapaus У меня работает с 29 октября без особых проблем след конструкция (автоматизация браузера)
(function(d) {
script = d.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.onload = function() {
console.log(JSON.stringify(Cookies.get(), null, 2));
};
script.src = 'https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.js';
d.getElementsByTagName('head')[0].appendChild(script);
})(document);
(function () {
window.cookiesData = {<тут объект что получили выше>};
const injectCookiesAndReload = () => {
(function(d) {
script = d.createElement('script');
script.type = 'text/javascript';
script.async = true;
script.onload = function() {
Object.entries(window.cookiesData).forEach(function (i) {Cookies.set(i[0], i[1], { path: '/', expires: 365 });});
location.reload();
};
script.src = 'https://cdn.jsdelivr.net/npm/js-cookie@rc/dist/js.cookie.min.js';
d.getElementsByTagName('head')[0].appendChild(script);
})(document);
};
if (new Date(JSON.parse(atob(window.cookiesData.access_token.split('.')[1])).exp - 1000) < new Date()) {
// token expired, refresh it
return fetch("https://voronezh.tele2.ru/auth/realms/tele2-b2c/protocol/openid-connect/token", {
"headers": {
"accept": "application/json, text/plain, */*",
"accept-language": "en,ru-RU;q=0.9,ru;q=0.8,en-US;q=0.7",
"content-type": "application/x-www-form-urlencoded",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin"
},
"referrer": "https://voronezh.tele2.ru/lk?pageParams=askForRegion%3Dtrue",
"referrerPolicy": "no-referrer-when-downgrade",
"body": "grant_type=refresh_token&client_id=digital-suite-web-app&refresh_token=" + window.cookiesData.refresh_token,
"method": "POST",
"mode": "cors",
"credentials": "include"
}).then((response) => {
return response.json();
}).then(data => {
window.cookiesData.access_token = data.access_token;
window.cookiesData.refresh_token = data.refresh_token;
injectCookiesAndReload();
});
} else {
injectCookiesAndReload();
}
})(); Со стороны этот "странный" подход использую, как уже писал выше, в https://github.com/estin/cywad UPDATE еще один момент возможно что access_token/refresh_token связаны с сессией в ЛК. Т.е. если сессия "протухла" юзер долго не появлялся, то сессия "зачищается" со всеми |
@estin у меня работало день или два, потом как раз получилось как в UPDATE. |
@gapaus извини, еще раз спокойно глянул как у меня работает.
Ну и конечно у меня получается есть "пользовательская активность на сайте". Самое простое с чего можно начать это:
|
Теле2 опять поменяла доступ к их API. Есть ли какая-то возможность восстановить или обойти как-то опять? Из функционала нужна всего лишь проверка баланса) Спасибо!
При необходимости могу скинуть все ошибки и их характер.
The text was updated successfully, but these errors were encountered: