Расширенный режим захвата (Advanced mode)
В разделе Options → Network можно выбрать режим захвата сетевого обмена:
| Режим | В интерфейсе | Суть |
|---|---|---|
| Classic mode | «классический» снимок | Те же ограничения, что у перехвата на странице: видны заголовки и тело в объёме, доступном скрипту страницы (в т.ч. правила CORS для чужого origin). Подробнее см. Работа с запросами. |
| Advanced mode | расширенный захват | Расширение запрашивает доступ к webRequest и дополняет карточку запроса полным набором заголовков запроса и ответа так, как их видит браузер на уровне обмена, а не только «разрешённый странице» список. |
Advanced mode (закрепление заголовков, Header links, опции Advanced headers) доступен только в расширении для Chrome / Edge.
В Standalone по-прежнему используется сценарий без расширенного захвата: полный набор заголовков через webRequest, описанный ниже, там недоступен.
Что даёт Advanced mode во вкладке Network
- Заголовки запроса и ответа в детализации запроса отражают расширенные данные (в том числе служебные и не попавшие в
Access-Control-Expose-Headers). - Закрепление строк заголовков (pin) — для имени заголовка можно закрепить строку вверху списка отдельно для блока Request и отдельно для Response. Закрепления выполняются из меню строки заголовка (три точки) при активном Advanced mode.
- Header links — для пары «имя заголовка + Host запроса» задаётся шаблон внешнего URL; плейсхолдер
{value}и при необходимости цепочка преобразований (pipeline) определяют, как текст заголовка попадает в ссылку. Подробнее в разделе Header links.
Список Header links, таблица Pinned headers и блок Advanced headers в Options → Network отображаются только при включённом Advanced mode, чтобы не перегружать Classic mode.
Header links
Правило задаёт:
- Header — имя HTTP-заголовка (сопоставление без учёта регистра);
- Host — хост URL запроса (нормализуется, без схемы и пути, например
api.example.com); - Link — шаблон URL; подстановка описана в разделе плейсхолдер
{value}и pipeline.
Создание и правка правил доступны из меню строки заголовка во вкладке Network (Advanced) и из Options при выбранной группе правил для заголовка.
Плейсхолдер {value} и pipeline
В поле Link можно использовать:
{value}— подставить значение заголовка как на карточке запроса (то же, что pipeline без шагов).{value|…}— цепочка операций: после{valueперечислите шаги через|; они выполняются слева направо, в URL попадает итог. Пример:{value|trim|urlencode}.
Между шагами — символ |. Разбор делит цепочку по | только если следующий фрагмент начинается с известной операции (см. таблицы ниже). Поэтому | внутри регулярного выражения (например, альтернация a|b) обычно допустим, пока после кандидата на разрез не получается «новое имя операции».
Если шаг некорректен (например, ошибка в regex), этот шаг пропускается, значение после него не меняется из-за этого шага.
Операции без аргументов
| Op | Действие |
|---|---|
trim | Убрать пробелы в начале и в конце. |
lower / upper | Нижний / верхний регистр. |
urlencode / urldecode | Кодирование для URL / обратное декодирование (+ как пробел; неверные escape не ломают значение). |
base64encode / base64decode | Base64 для UTF-8. |
hexencode / hexdecode | Шестнадцатеричная строка ↔ UTF-8 (hexdecode игнорирует пробелы). |
md5 | MD5 в hex для UTF-8 (синхронно). |
sha1 / sha256 | SHA-1 / SHA-256 в hex через Web Crypto (crypto.subtle). Нужен контекст с доступным SubtleCrypto (например HTTPS или страницы расширения); иначе на шаге хеша получится пустая строка. |
Регулярные выражения и замена
| Op | Синтаксис | Заметки |
|---|---|---|
regex | regex:<pattern> | new RegExp(<pattern>) (отдельного поля для флагов нет — при необходимости см. возможности движка в самом шаблоне). Запоминает последнее совпадение для следующего replace. Нет совпадения → значение становится пустой строкой. |
replace | replace:<template> | После replace: в шаблоне подставляются $1, $2, … из последнего regex. Без совпадения — пусто. |
replaceRegex | replaceRegex:<pattern>:<template> | Шаблон и паттерн отделяются по последнему : в сегменте; двоеточие внутри паттерна неудобно — лучше связка regex + replace. |
match | match:<pattern> | Если значение подходит под шаблон — оставить; иначе заменить на пустую строку. |
Строки и структура
| Op | Синтаксис | Заметки |
|---|---|---|
replaceText | replaceText:<from>:<to> | По последнему : в аргументах отделяется <to>; слева — <from> (from может содержать :). Замена всех вхождений. Пустой from — шаг пропускается. |
substring | substring:<start> или substring:<start>:<length> | Усечение строки: при двух числах длина — число символов от start. |
split | split:<delimiter>:<index> | Индекс — только цифры после последнего :; разделитель — всё до него (может содержать :). Вне диапазона — пусто. |
Условия и значения по умолчанию
| Op | Синтаксис | Заметки |
|---|---|---|
default | default:<fallback> | Если после предыдущих шагов значение строго пустая строка — подставить <fallback>. Пробелы «как пусто» — сначала trim. |
ifMatch | ifMatch:<pattern>:<ifTrue>:<ifFalse> | Ветка false после последнего :; true — между предпоследним и последним :; pattern — всё до предпоследнего : (двоеточия внутри веток с этим правилом связаны). |
Примеры
https://trace.example.com/?id={value}https://trace.example.com/?id={value|trim|urlencode}https://trace.example.com/?t={value|regex:^Bearer\s+(.+)$|replace:$1|urlencode}https://trace.example.com/?t={value|default:unknown}В одном шаблоне можно несколько блоков {value…}; каждый считается от того же значения заголовка.
Краткая памятка
- Advanced mode расширяет заголовки за счёт
webRequest; Standalone этого режима не предоставляет. - Classic mode — прежняя модель «видимости» заголовков для страницы.
- Pin — отдельно для списков Request / Response.
- Header links: Host + шаблон Link:
{value}или цепочка{value|op|…}для подстановки значения заголовка.