Как я перепроектировал расширение Chrome, чтобы написать собственное приложение Flask

1656685571 kak ya pereproektiroval rasshirenie chrome chtoby napisat sobstvennoe prilozhenie flask

от Тушара Агровала

В общем, если я не намерен пользоваться услугой, я не буду беспокоиться об ее обратном проектировании. — Йон Лех Йогансен

Как видно из моей биографии, я без ума от музыки и почти всего, что с ней связано. И я считаю, что музыкальные видео, если они хорошо срежиссированы, есть, пожалуй, лучший способ почувствовать неотъемлемую душу музыки.

Итак, все началось с того, что я посмотрел клип на песню.Heavydirtysoul” от Двадцать один пилот. Музыкальное видео было настолько глупо, что я даже не обратил внимания на текст. Лишь после того, как я прослушал это несколько раз, я понял, что я не понял много текста, кроме припева.

Это то, что является актуальной проблемой для многих ESL (английский как второй язык). Вы не можете наслаждаться песней в полной мере, если вы не понимаете слова.

Именно тогда я что-то подумал: а что если бы я мог воспроизвести текст песни вместе с музыкальными видео (подобно субтитрам)? Было бы здорово, если бы я мог создавать файлы субтитров для своих музыкальных видео, а затем воспроизводить их в видеоплеере!

Первоначальный подход и поиск Musixmatch

Тогда я начал комплексный поиск сайтов или API, которые могли бы дать мне слова песни. И, как и ожидалось, я нашел десяток сайтов, предоставивших тексты песен. Круто… не правда ли?

нет. Ибо то, что мне действительно было нужно — это выдержанные тексты, похожие на субтитры к фильму. Я хотел текст песни синхронизация с текущим видео кадром на экране. После долгих поисков я не смог найти никакой такой услуги.

Только через неделю кто-то сказал мне использовать Musixmatch, расширение Chrome, вставляющее тексты песен в видео YouTube. Итак, да, там был кто-то, кто уже делал то, о чем я думал. Это звучало как большинство других хорошо продуманных так называемых новых идей, которые я имел… и я был в шаге от получения файлов субтитров SubRip «srt» для своих любимых музыкальных видео.

И начался злом…

У меня уже был небольшой опыт работы с инструментами разработчика Chrome (благодаря Node.js и дизайну интерфейса). Я надел свои хакерские очки и запустил инструменты Chrome Dev. Я перешел на вкладку «Сеть» и стал искать любой текстовый файл, который мог бы содержать текст песни.

1*O89WdLDnoVHaOvXK5T-A5w
Снимок инструментов разработчика с воспроизведением видео на YouTube

Но я анализировал запросы на странице, которая воспроизводила видео YouTube, так что у меня было много запросов. А поскольку расширение получало тексты песен, запрос должен быть как-то связан с доменом Musixmatch.

Поэтому я фильтровал по ключевому слову «musix» и терпеливо искал свой файл и наконец нашел его. Текст песни вместе с меткой времени. Я заметил URL-адрес этого запроса, и, честно говоря, все это показалось мне тарабарщиной. В любом случае я скопировал строку URL-адреса как таковую, а затем вставил его в строку URL-адреса, и вуаля, я получил текст.

Итак, единственное, что осталось, это выяснить, как URL во фрейме и какие параметры.

1*JlKw3JsfgOuUkgG3SS0rRw
URL запроса

Параметры и какие?

После всего анализа и фильтрации я наконец-то нашел это. Длинный URL-адрес с кучей неизвестных параметров.

1*1kfqTsYqS8MjhQY5Dyqq0A
Параметры для URL-адреса

Мне нужно было копнуть глубже, чтобы действительно понять важность каждого параметра. С первого взгляда стало ясно, что единственные параметры, которые действительно имеют значение, это res и v. Остальные были только для домашнего обслуживания. Тогда я начал исследовать варианты и в конце концов потратил час только на то, чтобы найти этот параметр v является не что иное, как идентификатор видео YouTube.

Например, идентификатор видео или v для видео YouTube с URL-адресом ZQeq_T_2VE8. Теперь, когда я раскрыл тайну vя думал, что мне понадобится не больше часа, чтобы найти resно я ошибался.

Интересный случай параметра res

Час глубокого анализа и исследования ничего мне не дал. Несколько позже я понял, что URL работал, даже когда я сменил несколько алфавитов. Я продолжал рыть, и к концу 3 часов я понял, что алфавиты в строке ничего не означают. Их просто поставили случайным образом.

A typical value of res : 90rt120b114xz70xv82w85vv90a94hn90vb102av86

Так что я закончил с алфавитами, но числовые значения все еще были для меня чужими. Следующее, о чем я мог подумать, это применить несколько обратного проектирования для анализа чисел.

Я начал с удаления всех алфавитов, поскольку они ничего не означали, и первое, что я заметил, что количество этих значений было фиксированным, числом было 11. Я попробовал это со многими другими видео, но число оставалось неизменным.

Вдруг мне пришло в голову, Video Id, the v, который мы обсуждали ранее, также имел 11 символов. Однако каждый персонаж в v может быть алфавитом или цифрой или даже «-» или «_», в отличие от res который имел только цифры.

Итак, я попробовал самое очевидное отражение, которое может отразить символ на его числовое значение, ASCII, и вуаля – это все. Символы были закодированы ASCII, а алфавиты были случайным образом размещены между числами, чтобы сделать всю строку случайнее, я думаю.

В этот момент я был в восторге. В конце концов, я узнал все параметры и был всего в шаге от написания собственного удобного сценария для загрузки файла текста в формате «srt». Чтобы быть уверенным, я проверил разные видео и, казалось, никакой проблемы не было. Я также поделился URL с одним из своих друзей (да, меломан).

Я получил скорый ответ: «Что это? Нет ничего». Я проверил URL-адрес, и он нормально работал в моем браузере.

Кто был виновником? 😛

Мне не присылают ничего удивительного, как нижнее белье. Мне отправляют файлы cookie. 😛 — Дженнифер Энистон

1*zfKtWngPstlY9a7Iw64p3g
Поле файла cookie в заголовках запроса

Я снова запустил инструменты разработчика, а затем скопировал ссылку на новую песню. Это снова сработало, а затем я перешел на вкладку анонимного просмотра и вставил тот же URL. Это не сработало.

Мой опыт соревнований CTF (Capture The Flag) сразу подсказал мне, что это как-то связано с печеньем. Это наиболее вероятный случай, если URL-адрес работает в окне обозревателя, а не в другом.

Я перешел на консоль разработчика и увидел, что файл cookie действительно посылается браузером. Бесспорно, я много раз анализировал запрос и наконец пришел к выводу, что отправленный файл cookie — это тот самый файл, который сервер Musixmatch посылает в ответ. Кроме того, каждый файл cookie действителен только в течение определенного периода времени.

Итак, я написал сценарий Python с помощью urllib, который сначала получает файл cookie из обычного HTTP-ответа, поскольку файлы cookie работают во всем домене. Затем файл cookie вместе с другими параметрами был оформлен как HTTP-запрос, и мы получили текст… Наконец-то!!

Подготовка параметров для успешного запроса

Вот код Python для всех вышеописанных шагов. Код сначала генерирует параметры, затем запрос на получение файлов cookie. Затем URL-адрес готовится с помощью параметров. Далее файл cookie определяется в запросе заголовка вместе с другими полями заголовка, такими как Хост и Агент пользователя, чтобы придать запросу более аутентичный вид.

Синтаксический анализ необработанных текстов песен в формате srt

Теперь следующим важным делом или единственной оставшейся задачей было превращение необработанных данных с синхронизированным текстом в соответствующий формат srt (SubRip Text). Вот как смотрелся формат текста MusixMatch.

1*FcdBLOPuQQddd7uM6vYTrQ
Ответ HTTP для текста

Ниже приведен соответствующий формат файла 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 :-).

Заключительные слова

Итак, я собрал этот сценарий вместе с некоторыми модификациями и простым интерфейсом на флеш-сервере, у меня был собственный интерфейс получения текстов песен, возможно, единственный в своем роде во всем мире!!

Кстати, если вы любите музыку, посмотрите Musixmatch. Это действительно ошеломляюще. Это упражнение было только в образовательных целях и никоим образом не использовалось для нарушения авторских прав Musixmatch.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *