Поставил расширение Youside — боковая панель YouTube (Chrome ID: mmecpiobcdbjkaijljohghhpfgngpjmk). Описание — стандартное: встроенный плеер, подписки, быстрый доступ. На практике — код не про YouTube.

Разбор userpage.js.

Сетевой слой: внешний control-plane

await fetch("https://mines.cloudapi.stream/user\_info", {
  method: "POST",
  headers: { "Content-Type": "application/json" },
  body: JSON.stringify({
    user_id: localStorage.getItem("user_id"),
    type: "game_new"
  })
});

Что важно:

  • жёстко задан внешний API (cloudapi.stream)

  • используется user_id из localStorage (персистентный идентификатор)

  • параметр type=game_new не связан с YouTube

Ответ сервера (result) полностью определяет поведение UI.

Серверная модель управления

Используемые поля:

  • success

  • is_valid

  • rating

  • protxt

Дальше клиент просто применяет это к DOM.

Гейтинг интерфейса

if (result.is_valid) {
  proplansID.classList.add('h_');
  playBtn.classList.remove('h_');
} else {
  playBtn.classList.add('h_');
}

Фактически feature-флаги приходят с сервера.

Инъекция HTML

if (result.protxt) {
  proplansID.innerHTML = result.protxt;
}
  • прямой innerHTML

  • без фильтрации

  • сервер может вернуть любой контент

Монетизация через подмену ссылок

document.querySelectorAll('.buyBtn').forEach(btn => {
  btn.setAttribute(
    'href',
    `https://topup.cloudapi.stream/?user\_id=${encodeURIComponent(localStorage.getItem("user\_id"))}&type=game`
  );
});
  • все .buyBtn переписываются

  • внешний домен

  • user_id передаётся в query

В описании расширения про это ничего нет.

Сбор идентификаторов

const langCode = (navigator.language || navigator.userLanguage).split('-')[0];
const extensionId = chrome.runtime.id;

Используется:

Комбинация достаточна для стабильного трекинга.

Поведение Play

playBtn.addEventListener("click", () => {
  window.location = "https://youtube.com/";
});
  • никакого плеера

  • никакого embed

  • просто редирект

Чего нет в коде

При заявленных функциях отсутствует:

  • YouTube IFrame API

  • любые запросы к youtube.com

  • логика подписок / поиска

  • работа с видеопотоком

Архитектура по факту

  1. Генерируется/читается user_id

  2. Клиент ходит в внешний API

  3. Получает конфигурацию

  4. Сервер управляет UI

  5. Внедряются ссылки монетизации

Это не YouTube-клиент, а thin-client для стороннего backend.

IOC

Extension ID:

  • mmecpiobcdbjkaijljohghhpfgngpjmk

Domains:

Hashes:

  • SHA256: 3de1a05b26284c0e3dcc81e2e4b9ba4e99e1ce1245a9c57718b28ce111c9dfd9

  • MD5: 8ac5dcbd91b84f083feb813021d9223d

Итог

Код показывает:

  • привязку пользователя к внешнему сервису через user_id

  • удалённое управление интерфейсом

  • внедрение HTML с сервера

  • скрытую подмену ссылок

При этом отсутствует заявленный YouTube-функционал.
По совокупности это выглядит как вредоносное/нежелательное расширение, замаскированное под утилиту для работы с YouTube.