Хочу поделиться опытом, как я исследовал получение ссылок на bigcinema.tv и ex-fs.net. После просьбы
tarzann5 о помощи в разборе получения ссылок этих ресурсов, через долгое время, я наконец взялся и начал исследовать эти сайты. Начал делать тестовые подкасты, в итоге вообще сделал полноценные под себя.
Так вот. На обоих ресурсах для плеера uppod используются кодированные ссылки. Но дело в том, что в закодированные данные также добавляется и "мусорные" байты. В итоге, если раскодировать как обычно, со взятыми из их плеера uppod данными для дешифровки - получить можно "битые" раскодированные ссылки или вообще кашу.
Где и когда эти мусорные данные добавляются я так и не нашёл. Однако использовал другой метод вычисления.
Пробуем раскодировать ссылки и если они частично получаются битыми или просто выглядят как-будто правильно, но не работают - значит, скорее всего в шифровку добавили "мусор".
Пробуя получать ссылки, пытаемся понять какого вида они должны быть. В моём случае они были вида:
http://bigcinema.tv/pl/uhr_g-BOy2MjWwxX ... txt/582314
но не работали. Точнее надо отдать должное авторам bigcinema в запутывании - по этой ссылке отдавался закодированный плейлист, но не рабочий.
Пишем функцию кодирования ссылки - переписываем свою "DecodeUppodText" наоборот
- таблицы замещения меняем местами,
- HmsUtf8Decode(HmsBase64Decode(sData)) в конце функции убираем и ставим в начало HmsBase64Encode(HmsUtf8Encode(sData).
Слушаем через Charles запросы с сайта и видим реальную ссылку, например:
http:// b.bigcinema.tv /title/uhr_g-BOy2MjWwxXJZA2uiwxMzg3NTI3MjQw/582314/s01e01.flv
Видим, что средняя переменная часть похожи, но немного отличаются. Проверяем тем, что берём эту часть и заменяем в нашей раскодированной немного неправильной ссылке - раскодируем оттуда данные и получаем рабочий плейлист.
Значит на самом деле, раскодированная ссылка с сайта, должна иметь вид не
http:// bigcinema.tv /pl/uhr_g-BOy2MjWwxXJZA2uMNM©wxMzg3NTI3MjQw/txt/582314, как мы получили изначально, а
http:// bigcinema.tv /pl/uhr_g-BOy2MjWwxXJZA2uiwxMzg3NTI3MjQw/txt/582314
Зашифровываем эту настоящую ссылку и получаем кодированную, какая она "должна" быть на сайте
Сравниваем ссылку с сайта и нами кодированную реальную ссылку.
RWaQBfmU4GNxkGJxto9buS3Q6TV8tCVnRWNDklnCi5ZliHx765huSyxce19JiZGx65hJMoBIiyaNeQnqv7BU6WhQ4IvLejepJAEE - с сайта
RWaQBfmU4GNxkGJxto9buS3Q6TV8tCVnRWNDklnCi5ZliHx765huSyxce19 x65hJMoBIiyaNeQnqv7BU6WhQ4IvLejepJAEE - закодированная нами.
Я поставил пробелы там, где идёт отличие. И видим, что на сайте лишние символы "JiZG". Повторяем эту процедуру ещё для разных ссылок, и видим, что "лишние" символы всегда одни и те же, но в разных местах.
Просто в коде получения ссылки пишем вырезку "мусорных" символов перед раскодировкой и всё.
С ex-fs.net всё было намного сложнее. Я переписал функцию декодирования текста плеера uppod - добавил туда недостающую (видимо ранее не пригождалась) функцию "tr". Она есть во всех плеерах uppod и является стандартной.
Я отредактировал
этот пост, добавил в функцию DecodeUppodText2 строчку вида
sData = DecodeUppod_tr(sData, "r", "A");
и внизу функцию "DecodeUppod_tr". Эта универсальная функция должна работать для всех, у кого в плеере uppod нет данных client_codec_a и client_codec_b, но есть hash.
Может кому пригодится и сэкономит время.