Ограничения Manifest V3 в расширении EasyProxy для управления прокси

Как перестать искать подходящее расширение и написать его самому. Отличия API Firefox и Chrome Extensions.

Экстеншены и плагины

Как перестать искать подходящее расширение и написать его самому. Отличия API Firefox и Chrome Extensions.

Всем привет! Меня зовут Александр, я продуктовый инженер в KTS.
Недавно мы разрабатывали AI-копайлот для сервис-деска в виде расширения на Chrome. Копайлот подсказывал оператору ответы для клиента на основе контекста диалога, истории обращений и базы знаний компании. Уже на старте стало понятно, что разработка расширений сильно отличается от привычной фронтенд-разработки.
Основная сложность была не столько в реализации конкретных фич, сколько в архитектуре: где должен жить тот или иной код, как организовать взаимодействие между частями расширения и как не заложить проблемы на будущее. Дополнительно добавились нюансы интеграции в страницу и ограничения, связанные с публикацией в Chrome Web Store.
Поударявшись о всевозможные подводные камни, я решил написать эту статью. В ней я разберу ключевые этапы разработки и публикации, покажу удачные и неудачные подходы и на что стоит обратить внимание, если вы планируете делать браузерное расширение со сложной логикой.
Сразу задам фрейм: в статье речь пойдет именно о расширениях для Chrome (Manifest V3), хотя многие подходы будут применимы и к другим браузерам на базе Chromium.

Когда верстаешь адаптив, постоянно скачешь между десктопом и мобильной версией: то DevTools в режиме устройства, то ресайз окна, то открыть на телефоне. Десктоп и мобайл при этом никогда не видны одновременно — один прячется, когда смотришь на другой.
Готовые мобильные симуляторы это не закрывали: они хорошо делают своё дело, но не дают посмотреть адаптив прямо на вкладке, поверх десктопа. Я сделал свой инструмент — и в статье разбираю, как это устроено технически.

Современные фронтенд-приложения постоянно взаимодействуют с файлами.
Пользователи загружают аватары, перетаскивают видео в дашборды, экспортируют CSV-отчеты, просматривают PDF-файлы, скачивают сгенерированные конфигурационные файлы и работают с медиаконтентом прямо в браузере. На первый взгляд все это выглядит довольно просто: поле загрузки файла, элемент предпросмотра, возможно, кнопка скачивания — и задача решена.
Но именно здесь начинаются настоящие проблемы.

У бизнеса часто возникает закономерный вопрос: зачем нужна ВАТС, если уже есть мобильная связь и городская линия. Разница становится очевидной при масштабировании. Cуть в тщательно контролируемой модели коммуникаций, где всё имеет значение: кто принимает вызов, где фиксируется история звонков, как система работает при увеличении нагрузки, и как все эти данные использовать для контроля и анализа? Свежий обзор провайдеров ВАТС с актуальными ценами для увлечённых специалистов и рациональных руководителей - в материале о виртуальных АТС.

В 2026 году уже не нужно гадать, человек писал GitHub-репозиторий или AI. Я сделал Chrome-расширение, которое оценивает репозиторий по прозрачным эвристикам: README, коммиты, структуру файлов и метаданные. Без нейросети, без чёрного ящика — только понятные правила и объяснимый вердикт.
В статье рассказываю, как появился детектор, почему просто “число AI-похожести” оказалось недостаточно, как я перешёл к профилям вроде “AI-код”, “AI-документация” и “код человека”, и какие сигналы реально помогают отличать vibe-coded репозиторий от ручной работы.

Работая с GitLab каждый день, повторяешь кучу одинаковых действий которые хотелось бы делать быстрее чем позволяет UI. Надоело, запилил Chrome-расширение.
В статье рассказываю как устроено внутри: авторизация через session cookies без токенов, цепочки действий в background worker, борьба с постоянно меняющимся DOM GitLab (Vue-миграция между версиями сломала все селекторы несколько раз).
Из фич: кнопки на MR странице (rebase, bump версии, auto-merge, ship), Jira-сайдбар прямо в GitLab, бейджи размера/конфликтов/тредов на списке MR, cherry-pick в несколько веток, command palette.

Navigation API предоставляет возможность инициировать (программно запускать), перехватывать и управлять навигацией в браузере. Он также позволяет исследовать (traverse) сущности истории (history entries) приложения. Это улучшенный вариант предыдущих возможностей веб-платформы, связанных с навигацией, таких как History API и window.location, который решает их проблемы и специально предназначен для одностраничных приложений (single-page applications, SPA).

Возможно вы уже знаете, что в чарт «Яндекс Музыки» залетают треки, сгенерированные ИИ. Например, перепевка стихотворения Есенина «Сыпь, гармоника», которая сейчас на 16 месте чарта. Или трек «Ярмарка судеб» исполнителя Alena, который был даже спет в эфире телеканала Россия 1.
Мне нравились алгоритмы «Яндекс Музыки». Благодаря им в своё время я открыл много малоизвестных артистов, которых слушаю до сих пор. Но с появлением Suno, Lyria, Udio, алгоритмами рекомендаций Яндекса пользоваться стало невозможно. Мне то и дело подсовывались низкокачественные ИИ-треки.
В какой-то момент меня это достало. Я провёл своё расследование и получил неутешительные результаты. В базе «Яндекс Музыки» сейчас как минимум 140 тысяч ИИ-исполнителей. Ежемесячно они загружают больше 100 тысяч ИИ-треков, что составляет примерно 40% от всех загружаемых треков. А каждый 10-й трек в чарте – сгенерирован ИИ. И «Яндекс» ничего с этим не делает.

Недавно наткнулся на расширение Page Locker в Chrome Web Store. По описанию — всё безобидно: блокировка страниц, размытие контента, защита по PIN/таймеру. Типичный productivity/security тул.
Но при разборе кода оказалось, что внутри есть поведение, которое с заявленным функционалом вообще не связано.
Разберёмся.

В 2026 году растёт риск перебоев и ограничений в работе интернета в РФ. В таких условиях имеет смысл заранее продумать, как сохранить привычное окружение при нестабильном доступе к сети.
Помимо личных файлов, кино и музыки, хочется сохранить архив сайтов и веб-страниц для чтения в будущем — на месяцы или даже годы вперёд. Но в каком формате это лучше делать?

Эпичная история установки всех* расширений для браузера Firefox. Это был непростой процесс, который-таки увенчался успехом. Не обошлось в нём и без некоторых любопытных поворотов, неразрешённых вопросов и помощи друга.
Как выяснилось, всего у Firefox 84 тысячи расширений. Вроде бы не особо много, и по факту даже меньше 50 ГБ. Так что приступим!
*Всех, кроме 8, которые мы не соскрейпили (или которые удалили в промежутке между моментом проверки их списка на сайте и запуском скрипта), и 42, которые отсутствовали в extensions.json.1 Так что чисто технически мы установили 99,94% всех расширений.

За последний год я постепенно погрузился в пучину вайбкодинга. На примере свеженаписанного расширения хочу поделиться как этот год повлиял на моё кодерское мышление.
Самые значимые сдвиги я делю на 3 пункта:
1. Ощущение всемогущества
2. Желание ещё большего могущества
3. Сломанный стереотип: "не надо платить за то, что можешь сделать сам и бесплатно"

Проблема не в том, что инструментов мало. Проблема в том, что большинство из них построены вокруг браузера прошлого поколения, тогда как frontend уже давно живёт внутри runtime. Именно из этой практической боли появился собственный runtime-инспектор — сначала как консольный скрипт для одной конкретной задачи, а затем как полноценный инструмент, который неожиданно нашел отклик у QA и разработчиков.

Часто использую ChatGPT и другие нейросети для работы: обсуждаю идеи, пишу код, прошу объяснить сложные темы. В итоге в чате накапливаются сотни сообщений. И тут начинается хаос:
Нужно найти функцию, которую обсуждали утром? 5 минут скролла вверх в поисках нужного места — и я уже потерял нить разговора. Приходится начинать заново.
Отдельная боль — потеря контекста моделью. Пишешь код, а модель внезапно «забывает» техническое задание из начала диалога. ChatGPT просто обрезает контекст, а понимаешь это только спустя 10 минут потраченного времени.
В голове крутилась идея, как это исправить. Минутный поиск готовых решений не дал, поэтому сделал собственное расширение.

Браузер — основная рабочая среда QA-инженера, но стандартные DevTools не всегда удобны для повседневных проверок. В этой статье собраны 10 полезных расширений Chrome, которые помогают быстрее проверять верстку, отслеживать визуальные изменения, анализировать ссылки, работать с API и генерировать тестовые данные. Подборка ориентирована на практическое использование и подойдёт как manual-, так и automation-QA.

Вам когда-нибудь хотелось сохранить статью в PDF без лишних деталей, только в виде текста? Или сохранить только определённый элемент страницы? И чтобы всё это было на одной длинной странице, без разрывов?
Мне тоже. Поэтому, я решил написать своё решение и оформить его в виде браузерного расширения.

Минимум настроек — максимум результата: удобное управление окнами и быстрый workflow для работы без переключения на мышь. Подойдет как обывателю, так и профессионалу.

Это разбор браузерного расширения Greenwich, которое заявлено как инструмент для обмена связанными ссылками между пользователями. На практике его техническая реализация вызывает вопросы с точки зрения приватности и безопасности.
В статье мы кратко и по делу рассмотрим, какие разрешения запрашивает расширение, какие данные оно обрабатывает и какие риски это может создавать для обычных пользователей и корпоративной среды.

В ходе анализа стало понятно, что расширение «vksaver - music saver vk», которое заявлено как обычный инструмент для скачивания музыки из ВКонтакте, на деле работает значительно глубже и агрессивнее, чем может показаться сначала. Оно не ограничивается функцией загрузки аудио, а вмешивается во внутренние механизмы VK, включая работу с HLS-потоками и Webpack-модулями, изменяет структуру страницы через манипуляции с DOM, перехватывает контекст, внедряет стороннюю рекламу (в том числе через YaDirect), а также способно автоматически публиковать записи от имени пользователя. Кроме того, расширение предпринимает попытки обхода защиты audio_api_unavailable. Всё это указывает на то, что его поведение выходит далеко за рамки заявленного функционала и может представлять потенциальные риски для безопасности и конфиденциальности пользователя.