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

推荐订阅源

小众软件
小众软件
博客园_首页
M
MIT News - Artificial intelligence
雷峰网
雷峰网
GbyAI
GbyAI
博客园 - 叶小钗
Cyber Security Advisories - MS-ISAC
Cyber Security Advisories - MS-ISAC
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
V
V2EX
S
SegmentFault 最新的问题
H
Help Net Security
Apple Machine Learning Research
Apple Machine Learning Research
H
Hackread – Cybersecurity News, Data Breaches, AI and More
博客园 - 【当耐特】
V
Visual Studio Blog
月光博客
月光博客
G
Google Developers Blog
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
腾讯CDC
云风的 BLOG
云风的 BLOG
美团技术团队
Microsoft Azure Blog
Microsoft Azure Blog
A
About on SuperTechFans
有赞技术团队
有赞技术团队

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

Ловим музу за клавиатуру: как айтишнику стать автором Что умеет 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