惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Recent Announcements
Recent Announcements
雷峰网
雷峰网
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Hugging Face - Blog
Hugging Face - Blog
博客园 - 司徒正美
人人都是产品经理
人人都是产品经理
博客园 - 【当耐特】
量子位
有赞技术团队
有赞技术团队
博客园 - 三生石上(FineUI控件)
博客园 - Franky
M
MIT News - Artificial intelligence
U
Unit 42
Last Week in AI
Last Week in AI
酷 壳 – CoolShell
酷 壳 – CoolShell
The Cloudflare Blog
J
Java Code Geeks
V
Visual Studio Blog
Engineering at Meta
Engineering at Meta
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
MyScale Blog
MyScale Blog
T
Tailwind CSS Blog
T
The Blog of Author Tim Ferriss
V
V2EX

Все публикации подряд на Хабре

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет Midjourney в 2026? Мой немного грустный разбор этого шикарного инструмента Никто не любит писать тесты, но ИИ может исправить это IPv8 выглядит как мечта. Поэтому почти наверняка не взлетит Производители вернули в продажу материнки с DDR3. Что происходит? Управление агентом с телефона через Telegram теперь в KodaCode От координации к лидерству: как меняется роль руководителя разработки Я сделала родителям бизнес вместо пенсии: зарабатываем 70 тысяч, мама не даёт продать В три раза быстрее приемка товара и оптимизация трудозатрат на 73%: как «РСТ-Инвент» помог Gulliver Group ИИ-шечный мир победил? О влиянии искусственного интеллекта на игропром Кремль снижает давление на Телеграмм пока Европа строит интернет по паспорту Как CEO, CTO и CIO за 8 часов собрали ИИ-директора, который умеет держать позицию под давлением Как (не) потерять домен за выходные Вместо 8 разных VPS: как я организовал практику студентам на одном сервере Почему твой Open Source проект не замечают? R&D: искусство управления неопределенностью в разработке AI-дефляция: вакансий для разработчиков больше, а рост зарплат — худший за 15 лет Мы отдали управление роботами OpenClaw. Что из этого вышло Галактический ID: система идентификации для всех форм разумной жизни Шесть основ бизнес-анализа: начинаем с вопроса «Кто в игре?» Код-ревью, в котором дело не в коде Данные переехали. Команда — нет Системной подход к сдаче OSWE в 2025 Почему комната управления реактором покрашена в цвет морской пены 4 YAML-файла вместо PySpark: как аналитикам строить пайплайны без разработчиков LLM-агент для поиска свободных доменов: автоматизируем подбор Когда, зачем и как правильно начинать новую сессию в Claude Code? Как я заставил нейросеть писать макросы для FreeCAD Анатомия ИИ‑агента для подбора персонала. От тысячи резюме к топ‑10 за минуты Опыт разработчика как экономика внимания
Ограничения Manifest V3 в расширении EasyProxy для управл...
martini-drinker · 2026-06-23 · via Все публикации подряд на Хабре

Простой

4 мин

192

С выходом Manifest V3 в Google Chrome большинство расширений, позволяющих управлять настройками прокси, перестали полноценно работать, а некоторые и вовсе перестали. Основным функционалом для меня (как думаю и для большинства пользователей) было автоматическое туннелирование запросов для сформированного пользователем списка хостов, а также включение прокси для отдельной вкладки (окна), не затрагивая остальные.

Изучив доступные варианты в магазине расширений Chrome, понял что подходящих вариантов практически нет. Чаще всего расширения предлагают использовать пользовательский PAC скрипт или запустить прокси для всего браузера. В первом случае постоянное редактирование скрипта при попытке добавить очередной хост выглядит малопривлекательным, во втором сильно - урезает гибкость работы в интернете. Поэтому было принято решение написания собственного минималистичного расширения с удобным управлением, без сторонних библиотек. Программирование для меня - хобби, поэтому писал код в свободное от работы время.

В силу того, что Manifest V3 ударил и по блокировщикам рекламы в том числе, решил что настало время перейти на Firefox. Особенно после того, как посмотрел документацию и понял, что Proxy API здесь намного гибче. И, как самый крупный бонус, возможность установки расширения на Android версию браузера.

Сказано - сделано. Firefox позволил реализовать все пожелания по управлению прокси. API дает доступ к сетевым запросам, показывая: запрашиваемый адрес, id вкладки, с которой пришел запрос, режим (regular, incognito) и пр. и позволяет точечно пускать трафик через прокси, в зависимости от условий. Полная панель управления получилась такой.

Controls

Controls

Чтобы хост текущей вкладки было удобно добавлять/удалять из пользовательсного списка Host list, сделал большую кнопку сверху. Простой вариант - брать хост из адресной строки не подошел, так как он становится доступным только после ответа от сервера. Если запрос “зависнет”, то пришлось бы ждать, пока он не “отвалится” по таймауту. Поэтому выручил browser.webRequest.onBeforeRequest.

По настройкам прокси все стандартно. Доступные типы: HTTP, HTTPS, SOCKS4, SOCKS5 + авторизация. Я же использую локальный SOCKS5 без авторизации.

Settings

Settings

Сам Host list реализовал как обычную таблицу с полями, но с возможностью переключения на текстовое поле, чтобы можно было разом загрузить/выгрузить большой список. Также добавил поддержку поддоменов, если основной домен не должен быть туннелирован.

Host list

Host list

В процессе написания понял, что было бы удобно получить полный список запрашиваемых хостов для конкретной вкладки и конкретного ресурса, поэтому добавил Host tracker, позволяющий добавлять/удалять адреса в Host list в своей же вкладке.

Host tracker

Host tracker

Реализация довольно простая - с помощью все того же onBeforeRequest. Но в этот раз нам нужно знать чем закончился запрос (т. е. доступен ли хост). Поэтому реализовал такую логику: если отслеживаемый хост хотя бы на один из запросов ответил кодом 200, красим поле зеленым цветом, если все запросы с ошибкой - красным, в процессе выполнения - синим.

Полный объем расширения со всеми иконками составил чуть меньше 40 кБ. Протестировал и опубликова его в Firefox ADD-ONS. Дополнение на момент написания поста собрало более 500 пользователей. Изначально даже не рассчитывал на аудиторию больше 10-15 человек. Что удивительно - большая часть установок пришлась на Android устройства, видимо там альтернатив значительно меньше. Товарищи же попросили портировать расширение для Google Chrome, потому как оказалось большая часть пользуется хромиум-подобными браузерами и осознанно обходят Firefox стороной.

Просмотрев документацию MV3 Chrome Extensions понял, что можно попрощаться с тумблером “прокси для вкладки” и прямого доступа к туннелированию запроса в зависимости от его параметров я не получу. Здесь прокси работает либо для всего браузера сразу, либо через PAC скрипт. Еще есть вариант с bypassList, который не пускает указанные адреса через прокси, но это совсем не то, что нам нужно. Также из ограничений - отсутствие авторизации для SOCKS5 (для кого-то может быть критично). Из хороших новостей Chrome API позволяет запускать разные прокси для обычного режима и режима инкогнито. Панель управления стала полегче, в отличие от версии для Firefox.

Chrome Controls

Chrome Controls

Проблему с работой Host list решил через генерирование PAC скрипта с обновлением параметров прокси для браузера после каждого добавления/изменения хоста.

Из других проблем MV3, это возможность “засыпания” расширения, которое хранит в оперативной памяти данные по хостам для всех вкладок, а также последние примененные параметры прокси. По наблюдениям приложение засыпает только во время простоя браузера, т. е. при отслеживании хостов для активных вкладок проблем не возникает. При пробуждении Host tracker будет пустым, с этим придется смириться, потому как использовать local storage самого расширения для этих целей - не самое удачное решение. С настройками прокси же проблем не возникает, после пробуждения их легко применить по необходимости.

Закончив работу над портированной версией также загрузил ее в интернет-магазин Chrome. Удивил единоразовый взнос в 5$ за возможность публикации там дополнений. Еще больше удивили сроки рассмотрения публикации. Если в Firefox все происходит в течении 15 минут, то здесь же пришлось ждать 3 дня. Внесение любых правок в уже существующий пакет также занимает не мало времени. Из положительных сторон - это возможность любого хромиум-подобного браузера установить расширение из магазина Chrome. Расширение протестировано на: Chrome, Edge и Яндекс Браузер.

В заключение скажу, что MV3 хоть и имеет заметные ограничения, но все же еще позволяет строить велосипеды, пусть и с некоторым количеством компромисов.

Ссылка на проект: github