---
url: https://docs.ogmabox.com/pt/app/match-replace.md
description: >-
  Modifique automaticamente tráfego HTTP e WebSocket capturado com as regras de
  Localizar e substituir do Ogma.
---

# Localizar e substituir {#match-replace}

Localizar e substituir modifica automaticamente o tráfego enquanto ele passa pelo proxy, sem pausá-lo nem exigir uma ação manual em cada requisição.

## Como as regras funcionam {#how-rules-work}

Cada regra define o que procurar e o que fazer com o resultado. Quando uma requisição ou resposta corresponde às condições, a regra aplica sua transformação imediatamente.

As regras são aplicadas na ordem em que aparecem na lista. Se duas regras atuarem no mesmo cabeçalho, a primeira regra correspondente será aplicada primeiro, e as regras seguintes verão o resultado dessa alteração.

## Campos de uma regra {#rule-fields}

| Campo | Descrição |
| --- | --- |
| Nome | Rótulo da regra. Use um nome descritivo para identificar sua finalidade. |
| Direção | Se a regra se aplica a requisições, respostas ou ambas |
| Operação | Qual transformação executar (consulte a tabela de operações abaixo) |
| Modo de correspondência | Literal, expressão regular ou conteúdo completo, dependendo da operação |
| Valor de correspondência | A string ou o padrão a localizar |
| Valor de substituição | O valor a inserir como substituição |
| Ativado | Opção para ativar ou desativar a regra sem excluí-la |
| Filtros | Condições opcionais de método, host, caminho e HTTPQL que limitam onde a regra se aplica |

### Operações {#operations}

| Operação | O que faz |
| --- | --- |
| Adicionar cabeçalho | Adiciona um novo cabeçalho com nome e valor fixos |
| Remover cabeçalho | Exclui um cabeçalho pelo nome |
| Substituir cabeçalho | Substitui o valor de um cabeçalho existente |
| Substituir corpo | Substitui uma parte do corpo usando o valor de correspondência |
| Caminho / consulta / parâmetro de consulta | Altera o caminho da requisição ou os valores da consulta |
| Linha de requisição / resposta | Altera o componente selecionado da linha inicial HTTP |
| Código de status | Altera o status de uma resposta |
| Mensagem bruta | Transforma a linha inicial HTTP, os cabeçalhos e o corpo em conjunto |
| Payload WebSocket | Substitui o conteúdo correspondente de mensagens do cliente/servidor |
| Fluxo de trabalho | Executa um fluxo do tipo Converter ativado sobre o conteúdo selecionado |

## Modos de correspondência {#match-modes}

**Literal** corresponde à string exata. Use para tokens fixos, nomes de cabeçalhos ou valores específicos.

**Expressão regular** corresponde usando uma expressão regular. Use quando o alvo variar, por exemplo, para localizar um token que muda em cada sessão ou capturar e reutilizar um grupo na substituição.

Nas substituições com expressões regulares, use grupos de captura com `$1`, `$2` etc. para referenciar os trechos correspondentes no valor de substituição.

**Completo** passa todo o conteúdo selecionado para a transformação, em vez de procurar uma substring. Algumas operações, como adicionar/remover um cabeçalho com nome, usam um nome literal e não oferecem todos os modos.

## Transformar um corpo de resposta completo {#transforming-a-complete-response-body}

1. Crie e ative um fluxo do tipo **Converter** e valide-o com uma entrada de teste.
2. Crie uma regra de Localizar e substituir com direção **Resposta** e operação **Fluxo de trabalho (corpo)**.
3. Escolha o modo de correspondência **Completo** e selecione o fluxo.
4. Restrinja a regra com um filtro HTTPQL, por exemplo:

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

O fluxo recebe o corpo inteiro; sua saída substitui esse corpo. **Fluxo de trabalho (cabeçalho)** transforma um cabeçalho com nome, enquanto **Fluxo de trabalho (cabeçalhos brutos)** transforma o bloco de cabeçalhos. Essas entradas são diferentes do corpo da resposta.

Os filtros HTTPQL são verificados no contexto de requisição/resposta disponível. Uma regra na direção de requisição não pode depender de uma resposta que ainda não chegou. Desative os logs do fluxo quando a regra produzir um alto volume de execuções; ative-os temporariamente para diagnosticar uma transformação.

## Reordenar regras {#reordering-rules}

Arraste uma linha de regra para reposicioná-la na lista. A ordem importa quando regras modificam partes sobrepostas da mesma requisição ou resposta.

## Assistência de IA {#ai-assist}

Clique em **Assistência de IA** no editor de regras e descreva em linguagem natural o que você quer alterar. O Ogma gera os campos da regra com base na descrição. Revise e ajuste os valores gerados antes de ativar a regra.

Exemplos de instruções que funcionam bem:

* "Remova o cabeçalho X-Frame-Options de todas as respostas"
* "Substitua o valor do cabeçalho Authorization pelo meu token de teste"
* "Adicione um cabeçalho chamado X-Debug com valor true a todas as requisições"

## Testar uma regra {#testing-a-rule}

Antes de ativar uma regra para tráfego real, teste-a com uma requisição de exemplo:

1. Abra o editor de regras.
2. Cole uma requisição HTTP bruta no painel **Testar**.
3. Clique em **Aplicar regras**. O painel mostra o resultado e quais regras foram aplicadas.
4. Verifique se a saída corresponde ao esperado.
5. Ative a regra.

O painel Testar também tem um alvo **Resposta** com entradas de status, cabeçalhos e corpo. Confira a lista de regras aplicadas: isso testa as regras aplicáveis, não apenas um campo isolado do editor.

## Localizar e substituir versus Interceptação {#match-replace-vs-intercept}

**Localizar e substituir** é automático. Depois de ativada, uma regra transforma toda requisição ou resposta correspondente sem nenhuma ação sua.

**Interceptação** pausa o tráfego e aguarda uma decisão manual. Use Interceptação quando a alteração correta depender de um contexto que você precisa avaliar em cada requisição. Use Localizar e substituir quando a mesma transformação deve ser aplicada sempre, sem revisão.

## Usos comuns {#common-uses}

* Trocar um cookie de sessão em todas as requisições para testar outra conta.
* Adicionar um cabeçalho que ative um modo de depuração ou administração.
* Remover cabeçalhos de segurança das respostas para avaliar o comportamento do cliente.
* Substituir um host definido de forma fixa em respostas de redirecionamento.
* Reescrever um prefixo de caminho de requisição.

## Páginas relacionadas {#related-pages}

* [Interceptação](./intercept.md)
* [Histórico HTTP](./http-history.md)
* [Fluxos de trabalho](./workflows.md)
