import asyncio
import aiohttp
LOGIN_URL = "https://msapi.top-academy.ru/api/v2/auth/login"
# Этот ключ пока считаем статичным для твоего колледжа/приложения,
# но лучше вытащить его из фронтенда (см. комментарий ниже)
APPLICATION_KEY = "6a56a5df2667e65aab73ce76d1dd737f7d1faef9c52e8b8c55ac75f565d8e8a6"
HEADERS = {
"Accept": "application/json, text/plain, */*",
"Accept-Language": "ru_RU, ru",
"Content-Type": "application/json",
"Origin": "https://journal.top-academy.ru",
"Referer": "https://journal.top-academy.ru/",
"User-Agent": (
"Mozilla/5.0 (Windows NT 10.0; Win64; x64) "
"AppleWebKit/537.36 (KHTML, like Gecko) "
"Chrome/128.0.0.0 Safari/537.36"
),
}
async def login(username: str, password: str) -> dict:
payload = {
"application_key": APPLICATION_KEY,
"id_city": None,
"username": username,
"password": password,
}
async with aiohttp.ClientSession() as session:
async with session.post(LOGIN_URL, json=payload, headers=HEADERS) as resp:
data = await resp.json()
if resp.status != 200:
raise RuntimeError(f"Login failed [{resp.status}]: {data}")
return data
async def main():
tokens = await login("Filip_dh03", "j27H8p0B")
access_token = tokens["access_token"]
refresh_token = tokens["refresh_token"]
print("Успешный вход. user_role:", tokens.get("user_role"))
print("Город:", tokens.get("city_data", {}).get("name"))
# дальше access_token используешь как Bearer-токен для остальных запросов
if __name__ == "__main__":
asyncio.run(main())