Elib2Ebook

Elib2Ebook 

Старею

163subscribers

4posts

goals1
$451.55 of $1 415 raised
Ну а вдруг?

Строки. Технологии МТС. Сниффаем трафик мобильных устройств

Без лишних предисловий перейдем к сути. Есть прекрасный ресурс https://stroki.mts.ru/ с коллекцией неплохой литературы. Читать ее можно только через специальное приложение. Возможности прочитать книгу на сайте просто нет (ну или я не нашел). В общем, все как обычно - установи себе на телефон очередную читалку и попробуй  не забыть, где какую книгу ты читаешь.
Чтобы решить эту проблему, нужно задействовать некоторое кол-во специализированных инструментов. Одного браузера здесь не хватит, так как читать через сайт просто невозможно.
Что нам понадобится:
1) Сниффер трафика мобильных устройств, чтобы увидеть, какие запросы отправляет запросы приложение на сервер;
2) Postman, чтобы по быстрому воспроизвести эти запросы и проверить их работоспособность.
Приступим.
Первым делом устанавливаем на компьютер сниффер. Выбор пал на Charles. Настраивал его по инструкции
Запускаем приложение на телефоне и начинаем изучать...
Первым делом откроем какую то книгу и посмотрим, какие запросы отправляются и какие данные получаются.
Запросов приложение отправляет довольно немного и нужный находится довольно быстро:

В первую очередь необходимо определиться с тем, какие данные отправляет приложение. 
Имеем следующее:
1) GET запрос по адресу https://stroki.mts.ru/api/books/multi/973, в котором указывается только идентификатор книги;
2) Набор заголовков.
Переходим в Postman и воспроизводим там структуру запроса
Все работает. В процессе переноса и тестирования выяснил необходимый обязательный набор заголовков. На скрине обязательный набор. Значения части из них можно не указывать, но передать их обязательно надо.
Что из этого особо интересно:
1) access-token - это токен авторизации.  Неожиданно оказалось, что его аналог присутствует среди cookie на сайте и взять его можно оттуда;
2) signature - это подпись запроса. Его рассчитывает приложение, чтобы сервер мог убедиться в том, что запросы отправляет приложение и этим запросам можно доверять. Для каждого запроса подпись считается отдельно и для каждого запроса она разная (в отличии от токена авторизации). 
Получается, что чтобы выполнять запросы к серверу необходимо только 2 параметра: токен авторизации и подпись. С первым все просто - можно взять из cookie. Со вторым все сложно. Как считается подпись мы не знаем. Что делать? В одном из прошлых постов я рассказывал о том, как декомпилировать приложения и доставать оттуда данные. Повторяем процесс и находим следующее:
Вот весь код, выполняющий подсчет сигнатуры. В целом алгоритм оказался тривиален:
1) Берем ссылку, по которой выполняется запрос и добавляем к ней соль;
2) Считаем MD5 от полученной строки.
Соль закодирована. Надо расшифровать. Приводить шифрованную и расшифрованную соль здесь не буду. Но того, кто осмелится повторить мой путь и раскодировать соль, ждет очень интересная пасхалка от одного из авторов приложения, отражающая, как мне кажется, его душевное состояние. Автор, если ты прочитаешь это, то я тебя понимаю) 
Вуаля. Теперь есть все необходимые данные и алгоритмы расчета подписи, чтобы начать работать с API.
Далее возвращаемся в Charles и ищем остальные запросы.
Там все тоже просто:
1) Одним запросом получаем идентификаторы файлов
Из ветки full берем fileId и отправляем запрос на получения непосредственно ссылки на этот файл
Вуаля. Вот и ссылка на файл книги в формате epub, доступная без всяких заголовков и прочих авторизаций просто в браузере.
Итого. Защита https://stroki.mts.ru/ не удивила какой-либо хитрой системой защиты. Для полной автоматизации скачивания книг необходимо:
1) Авторизационный токен (можно достать из cookie на сайта);
2) Ссылка на книгу (так же берется с сайта);
3) Запрос на получение идентификаторов файлов;
4) Запрос на получение ссылки на файл;
5) Скачивание готового файла;
6) Алгоритм расчета подписи.
А сколько необходимо учить программирование, чтобы разобраться как делать ботов в ТГ и т п задачи. Мне самому хотелось бы также, упрощать себе жизнь изучая и преодолевая трудности в этом. Но понятия не имею откуда и как самому начать учиться. Есть ли у вас кое какие советы или свой путь по которому вы пришли к пониманию того, как работают боты, сайты и вообще код.
Помимо этой работы у вас есть основная или это просто хобби ?
Joseph, сложно сказать сколько надо учится. Я 15 лет в отрасли. И мои советы, как надо сейчас учиться программированию будут несколько устаревшими)
Конечно у меня есть постоянная работа. Этот проект просто небольшое хобби
Elib2Ebook, а даже так, стаж у вас уже на уровне сеньора. Но вот к примеру если вы бы начали изучать полным новичком новый язык то, как бы вы начали свой путь?
Subscription levels1

На поддержку энтузиазма

$1.42 per month
Go up