---
url: https://docs.ogmabox.com/uk/app/match-replace.md
description: >-
  Автоматично змінюйте перехоплений трафік HTTP і WebSocket правилами пошуку й
  заміни Ogma.
---

# Пошук і заміна {#match-replace}

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

## Як працюють правила {#how-rules-work}

Кожне правило визначає, що шукати й що з цим робити. Коли запит або відповідь відповідає умовам, правило негайно застосовує перетворення.

Правила застосовуються за порядком у списку. Якщо два правила націлені на той самий заголовок, перше відповідне правило діє першим, а наступні бачать результат його зміни.

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

| Поле | Опис |
| --- | --- |
| Назва | Назва правила. Використовуйте описову назву, щоб позначити призначення. |
| Напрямок | Застосування до запитів, відповідей або обох |
| Операція | Перетворення для виконання (див. таблицю нижче) |
| Режим збігу | Буквальний, регулярний вираз або повний вміст залежно від операції |
| Значення пошуку | Рядок або шаблон, який потрібно знайти |
| Значення заміни | Значення для підстановки |
| Увімкнено | Перемикач активації й деактивації правила без видалення |
| Фільтри | Необов’язкові умови методу, хоста, шляху й HTTPQL, що обмежують застосування |

### Операції {#operations}

| Операція | Що робить |
| --- | --- |
| Додати заголовок | Додає новий заголовок із фіксованими назвою й значенням |
| Видалити заголовок | Видаляє заголовок за назвою |
| Замінити заголовок | Замінює значення наявного заголовка |
| Замінити тіло | Замінює частину тіла за значенням пошуку |
| Шлях / параметри URL / параметр URL | Змінює шлях запиту або значення параметрів |
| Рядок запиту / відповіді | Змінює вибраний компонент початкового рядка HTTP |
| Код статусу | Змінює статус відповіді |
| Необроблене повідомлення | Перетворює початковий рядок HTTP, заголовки й тіло разом |
| Дані WebSocket | Замінює відповідний вміст повідомлень клієнта або сервера |
| Робочий процес | Виконує ввімкнений процес перетворення над вибраним вмістом |

## Режими збігу {#match-modes}

**Буквальний пошук** зіставляє точний рядок. Використовуйте для фіксованих токенів, назв заголовків або певних значень.

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

У замінах за регулярними виразами використовуйте групи `$1`, `$2` тощо для посилання на знайдені частини в значенні заміни.

**Повна заміна** передає весь вибраний вміст до перетворення замість пошуку підрядка. Деякі операції, як-от додавання або видалення іменованого заголовка, натомість використовують буквальну назву й не пропонують усіх режимів.

## Перетворення повного тіла відповіді {#transforming-a-complete-response-body}

1. Створіть і ввімкніть процес типу **Перетворити**, потім перевірте його тестовими вхідними даними.
2. Створіть правило пошуку й заміни з напрямком **Відповідь** та операцією **Робочий процес (тіло)**.
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)
