Tushar Agrawal
Как видно из моего био, я без ума от музыки и в значительной степени что-либо связано с ним. И я верю, что музыкальные клипы, если хорошо направлены, возможно, лучше почувствовать присущую душу музыки.
Итак, все началось со мной, наблюдая за музыкальным видео песни ” heavydirtysoul ” by Двадцать один пилот . Музыкальное видео было настолько допинга, я даже не заботился о лирике. Это было только после того, как я слушал ему несколько раз, я понял, что не получил большую часть лирики, кроме частей хора.
Это то, что является реальной проблемой для многих динамиков ESL (английский как второго языка). Вы не можете насладиться песней в полной мере, если вы не получите тексты песен.
Тогда я подумал о чем-то: что, если я смогу сыграть тексты песни рядом с музыкальными клипами (много как субтитры)? Это было бы здорово, если бы я мог создать файлы субтитров для моих музыкальных клип, а затем играть на его видеоплеер!
Первоначальный подход и поиск Musixmatch
Затем я начал всеобъемлющий поиск сайтов или API, которые могут предоставить мне лирику для песни. И как и ожидалось, я нашел дюжину сайтов, которые предоставили лирику. Круто … не так ли?
Неа. Потому что, что мне действительно нужно было тромуровано лирику, очень похоже на субтитры для фильма. Я хотел текст текста в Синхронизация С текущей видеокадрой на экране. После многих поисков я не смог найти такую службу.
Это было только через неделю кто-то сказал мне использовать Musixmatch , хромированное расширение, которое встроено лирика на видео на YouTube. Итак, да, там был кто-то там, кто уже делал то, о чем я думал. Это звучало как большая часть других, подумала так называемые новые идеи, которые у меня были … И я был просто шагом от приема подбривки «SRT» субтитровки для моих любимых музыкальных клипов.
И взлом начался …
У меня уже было немного опыта работы с инструментами разработчика Chrome (благодаря узел. Джей и проектирование переднего конца). Поэтому я надел свои хакеры и выпустил инструменты Chrome dev. Я переключился на вкладку Network и начал искать любой текстовый файл, который может содержать текстовые слова.
Но я анализировал запросы на странице, которая играла видео YouTube, поэтому у меня было много запросов. И поскольку расширение было привлечено лирика, запрос должен иметь что делать с доменом Musixmatch.
Поэтому я фильтровал с помощью ключевого слова «музыку» и терпеливо посмотрел на мой файл, и я наконец нашел его. Лирика вместе со меткой времени. Я отметил URL этого запроса и откровенно, все казалось, что мне казалось гибберски. В любом случае, я скопировал URL-строку как таковой, а затем вставил его в URL-бар, и вуаля, я получил текст.
Итак, единственное, что осталось – выяснить, как урл оформлен и каковы были параметрами.
Параметры и что?
Ведь анализ и фильтрация я наконец закончился с этим. Длинный URL с кучей неизвестных параметров.
Мне нужно было дрочить глубже, чтобы на самом деле понять важность каждого параметра. На взгляд, было ясно, что единственные параметры, которые на самом деле имели значение, были res и V Отказ Другие были просто для домашнего вещества. Тогда я начал исследовать варианты и заканчивал тратить час, чтобы найти, что параметр V Ничего, кроме YouTube Video ID.
Например, идентификатор видео или V Для видео YouTube с URL есть Zqeq_t_2ve8. . Теперь, когда я представил тайну V Я думал, что это заберет меня вряд ли еще час, чтобы найти о res , но мальчик я не прав.
Любопытный случай параметра «res»
Час глубокого анализа и исследования ничего не дал мне. Чуть позже я понял, что URL работал, даже когда я изменил несколько алфавитов. Я продолжал копать и к концу 3 часов я понял, что алфавиты в строке ничего не значат. Они просто поставили случайно.
A typical value of res : 90rt120b114xz70xv82w85vv90a94hn90vb102av86
Итак, я был сделан с алфавитами, но числовые значения все еще были инопланетными для меня. Следующее, что я мог бы подумать о том, что применил немного обратной машины для анализа чисел.
Я начал с удаления всех алфавитов, поскольку они ничего не знали, и первое, что я заметил, что количество этих ценностей были исправлены, число 11. Я попробовал со многими другими видео, но номер остался постоянным.
Внезапно это ударило меня, идентификатор видео, V Мы обсуждали ранее, также имели 11 персонажей. Однако каждый персонаж в V может быть алфавит или цифру или даже «-» или «_», в отличие от res которые имели только цифры.
Итак, я попробовал самое очевидное отображение, которое может сопоставить персонажа к его числовому значению, ASCII и Voilà, это было. Персонажи были кодированы ASCII, и алфавиты были случайным образом введены между числами для того, чтобы вся строка выглядела более случайным, я думаю.
На данный момент я был в восторге. В конце концов, я узнал обо всех параметрах и был всего лишь шагом от написания своего удобного сценария для загрузки файла лирики в формате «SRT». Просто чтобы быть уверенным, я проверил разные видео, и казалось, не было никакой проблемы. Я также поделился URL-адресом одним из моих друзей (да, музыкальный любовник).
Я получил быстрый ответ, и это сказано: «Что это? Там нет ничего”. Я пересекал URL, и он работал нормально в моем браузере.
Кто был виновником?:П
Я снова выпустил инструменты разработчика, а затем скопировал ссылку на новую песню. Он снова работал, а затем я перешел на вкладку инкогнито и вставил этот же URL. Это не сработало.
Мой опыт конкурсов CTF (захват флага) сразу сказал мне, что у него есть что связано с печеньями. Это наиболее вероятный случай, если URL работает в окне браузера, а не с другим.
Я перешел на консоль разработчиков и увидел, что файл cookie был действительно отправлен браузером. Безусловно, я проанализировал запрос много раз, и он, наконец, произошел для меня, что отправляется файл cookie, был тот же, что Musixmatch Server отправляется в ответ. Также каждое cookie действует только в течение определенного периода времени.
Итак, я написал сценарий Python, используя Urllib, который сначала получает файл cookie из обычного http-ответа, поскольку cookie работает через домен. Тогда печенье вместе с другими параметрами было обрамлено как HTTP-запрос, и мы получили тексты песен … Наконец-то!!
Подготовка параметров для успешного запроса
Вот код Python для всех шагов, обсуждаемых выше. Код сначала генерирует параметры, а затем запрос, чтобы получить куки. URL затем подготовлен с использованием параметров. Далее, Cookie определяется в запросе заголовка вместе с другими полями заголовка, такими как «Host» и «user-agent», чтобы дать ему больше аутентичного запроса.
Разборка сырого таймера в формате SRT
Теперь следующая основная вещь или единственная оставлена задача состояла в том, чтобы преобразовать данные лирики SARWED TIMED в правильный формат SRT (Subrip Text). Вот как выглядел формат текста Musixmatch Lyrics.
Ниже приведен правильный формат для файла SRT. Эти файлы содержат отформатированные линии простого текста в группах, разделенных пустой строкой. Субтитры пронумеруются последовательно, начиная с 1, как показано на рисунке ниже.
100:00:00,350 --> 00:00:03,45071 buildings explodedor caught fire.
200:00:03,490 --> 00:00:05,020Elliot, tell me what it isthat you think he did.
300:00:05,060 --> 00:00:06,930Sorry.I don't know if I can say.
Это звучало, как и целая много работы, поскольку данные были необходимы, чтобы данные еще не были правильно отформатированы. Но, если у вас есть необходимые данные и знание Python, все, что нужно, это простой скрипт для обработки данных, и это именно то, что я сделал. Теги HTML меня немного раздражали во время анализа HTML, но угадайте, что, есть удивительная библиотека только для анализа HTML, который сделал весь процесс очень простым. Нет очков, чтобы угадать название библиотеки, HTMLParser:-).
Окончательные слова
Итак, я собрал этот скрипт вместе с некоторыми модификациями и с простым передним концом на сервере Flask, у меня была собственная лирика, вытекающая интерфейс, возможно, единственный в своем роде во всем мире !!
Кстати, если вы в музыку, посмотрите на Musixmatch. Это действительно потрясающе. Это упражнение было только для образовательных целей и никоим образом не использовалось для нарушения авторских прав Musixmatch.
Оригинал: “https://www.freecodecamp.org/news/how-i-reverse-engineered-a-chrome-extension-to-write-my-own-flask-app-d77f36421106/”