Search
Write a publication
Pull to refresh

Как я библиотеку для Дневника МЭШ писал

Ну-сс, приступим. Кто я такой?

  • Ученик 7-ого класса общеобразовательной школы

  • Backend программист

  • С 10 лет начал программировать на Python

  • С 11 лет писал ботов в телеграмме

  • С 12 лет начал разбираться что такое Linux, *nix, git, bash и так далее

Как зародилась идея?

В 12 лет, когда начал разбираться что такое парсинг, захотелось написать программу для автоматического сбора оценок с ЭЖД. Я сел и начал разбираться. ДОЛГО разбираться.

А потом нашел информацию, что открытое API они закрыли в 2018 году, ведь приложение "Дневничок" конкурировало с официальным приложением.

Я начал пробовать парсить дневник через модуль requests и beautifulsoup4, но так как приложение React-овое, оно долго прогружалось. Пришлось через ж̶о̶п̶у̶ Selenium. Не получилось. А потом я потерял пароль и проект остановился...

Через полгода...

Однажды, я наткнулся на статью с заголовком:

"Как я библиотеку для сервиса Яндекс.Музыка писал" от MarshalX

И меня осенило... Я НАКОНЕЦ ПОНЯЛ,? КАК РАБОТАЮТ ПРИЛОЖЕНИЯ!!!

Мне помог учитель CTF моего друга с выбором сниффера, ему отдельное спасибо!

Начало ада

Я остановился на BurpSuite, ведь у него большой функционал (но 90% мне не было нужно). После сбора запросов, я понял, что сайт очень корявый. ПРЯМ ОЧЕНЬ! Ведь вместо 1 Header-а "Authorization", он запрашивает еще "Auth-Token", но принимает разные значения.

Нужно всего две ссылки чтобы получить данные:

  1. https://dnevnik.mos.ru/mobile/api/profile - Для получения данных ученика, родителей, школы и так далее

  2. https://dnevnik.mos.ru/mobile/api/schredule?student_id="ID студента"&date="дата" - для получения д\з, уроков и оценок в определенный день

Написание самой библиотеки

Саму библиотеку я писал часа 2. Она состоит из пяти классов

Дерево главной папки
Дерево главной папки

Каждый файл отвечает только за одно дело.

Пока!

Да, статья вышла короткой, библиотека сырая, но я и то и то буду дополнять

https://github.com/dirtyhornet277/dnevniklib кто может, поддержите, чем может!

Спасибо!

Tags:
Hubs:
You can’t comment this publication because its author is not yet a full member of the community. You will be able to contact the author only after he or she has been invited by someone in the community. Until then, author’s username will be hidden by an alias.