---
url: https://docs.ogmabox.com/ru/app/match-replace.md
description: >-
  Автоматически изменяйте перехваченный HTTP и WebSocket с помощью правил Ogma
  Match & Replace.
---

# Поиск и замена {#match-replace}

Match & Replace автоматически изменяет трафик при прохождении через прокси, без остановки и ручных действий для каждого запроса.

## Как работают правила {#how-rules-work}

Каждое правило определяет, что искать и что с этим делать. Когда запрос или ответ соответствует условиям, преобразование применяется немедленно.

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

## Поля правила {#rule-fields}

| Поле | Описание |
| --- | --- |
| Имя | Метка правила. Выберите содержательное имя, объясняющее назначение. |
| Направление | Применение к запросам, ответам или обоим |
| Операция | Выполняемое преобразование (см. таблицу ниже) |
| Режим совпадения | Буквальный, регулярное выражение или всё содержимое — в зависимости от операции |
| Значение поиска | Искомая строка или шаблон |
| Значение замены | Подставляемое значение |
| Включено | Активация или деактивация без удаления |
| Фильтры | Необязательные условия метода, хоста, пути и HTTPQL, ограничивающие применение |

### Операции {#operations}

| Операция | Действие |
| --- | --- |
| Добавить заголовок | Добавляет заголовок с фиксированными именем и значением |
| Удалить заголовок | Удаляет заголовок по имени |
| Заменить заголовок | Заменяет значение существующего заголовка |
| Заменить тело | Заменяет часть тела по значению поиска |
| Путь / строка запроса / параметр | Меняет путь или значения параметров запроса |
| Строка запроса / ответа | Меняет выбранную часть стартовой строки HTTP |
| Код статуса | Меняет статус ответа |
| Сообщение в полном HTTP-формате | Преобразует стартовую строку, заголовки и тело HTTP вместе |
| Данные WebSocket | Заменяет подходящее содержимое сообщений клиента или сервера |
| Рабочий процесс | Запускает включённый рабочий процесс Convert для выбранного содержимого |

## Режимы совпадения {#match-modes}

**Точный текст** ищет точную строку. Подходит для фиксированных токенов, имён заголовков и конкретных значений.

**Регулярное выражение** ищет совпадение по регулярному выражению. Подходит для меняющейся цели: например, токена каждой новой сессии или захвата группы для повторного использования в замене.

В заменах по регулярному выражению используйте группы захвата `$1`, `$2` и т. д. для ссылки на совпавшие части.

**Целиком** передаёт преобразованию весь выбранный фрагмент вместо поиска подстроки. Некоторые операции, например добавление или удаление именованного заголовка, используют точное имя и не предлагают все режимы.

## Преобразование полного тела ответа {#transforming-a-complete-response-body}

1. Создайте и включите рабочий процесс **Convert**, затем проверьте его на тестовых данных.
2. Создайте правило Match & Replace с направлением **Ответ** и операцией **Сценарий (тело сообщения)**.
3. Выберите режим **Целиком** и рабочий процесс.
4. Ограничьте правило фильтром HTTPQL, например:

```text
req.host.eq:"cdn.example.com" AND (req.path.cont:".js" OR resp.headers["Content-Type"].value.cont:"javascript")
```

Рабочий процесс получает всё тело; его вывод заменяет тело. **Сценарий (заголовок)** преобразует именованный заголовок, а **Сценарий (исходные заголовки)** — блок заголовков. Эти операции получают другие входные данные, а не тело ответа.

Фильтры HTTPQL проверяются в доступном контексте запроса и ответа. Правило направления запроса не может опираться на ещё не полученный ответ. Отключайте журналирование рабочего процесса при большом числе запусков; временно включайте его для диагностики преобразования.

## Изменение порядка правил {#reordering-rules}

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

## Помощь ИИ {#ai-assist}

Нажмите **Помощь ИИ** в редакторе правила и опишите изменение обычным языком. Ogma создаст поля правила по описанию. Проверьте и скорректируйте значения перед включением.

Примеры подходящих запросов:

* «Удалить заголовок X-Frame-Options из всех ответов»
* «Заменить значение заголовка Authorization моим тестовым токеном»
* «Добавить заголовок X-Debug со значением true ко всем запросам»

## Проверка правила {#testing-a-rule}

Перед включением для живого трафика проверьте правило на примере запроса:

1. Откройте редактор правила.
2. Вставьте запрос в полном HTTP-формате в раздел **Панель проверки**.
3. Нажмите **Применить правила**. Панель покажет результат и применённые правила.
4. Убедитесь, что вывод соответствует ожиданиям.
5. Включите правило.

На панели теста также есть цель **Ответ** с полями статуса, заголовков и тела. Проверяйте список применённых правил: тестируются подходящие правила, а не только отдельное поле редактора.

## «Поиск и замена» и «Перехват» {#match-replace-vs-intercept}

**Поиск и замена** работает автоматически. После включения правило преобразует каждый подходящий запрос или ответ без ваших действий.

**Перехват** останавливает трафик и ждёт ручного решения. Используйте перехват, когда изменение зависит от контекста конкретного запроса. Поиск и замена подходит для одного и того же преобразования при каждом совпадении без проверки вручную.

## Типичные применения {#common-uses}

* Подменить cookie сессии во всех запросах для проверки другой учётной записи.
* Добавить заголовок, включающий отладочный или административный режим.
* Удалить защитные заголовки ответов для оценки поведения клиента.
* Заменить жёстко заданный хост в ответах перенаправления.
* Переписать префикс пути запроса.

## Связанные страницы {#related-pages}

* [Перехват](./intercept.md)
* [История HTTP](./http-history.md)
* [Сценарии](./workflows.md)
