Rechercher et remplacer
Rechercher et remplacer modifie automatiquement le trafic à son passage dans le proxy, sans le mettre en pause ni nécessiter d'intervention manuelle pour chaque requête.
Fonctionnement des règles
Chaque règle définit ce qu'il faut rechercher et l'action à effectuer. Lorsqu'une requête ou une réponse remplit les conditions, la règle applique immédiatement sa transformation.
Les règles s'appliquent dans leur ordre d'apparition dans la liste. Si deux règles ciblent le même en-tête, la première règle correspondante s'applique d'abord, puis les suivantes travaillent sur le résultat de cette modification.
Champs d'une règle
| Champ | Description |
|---|---|
| Nom | Libellé de la règle. Choisissez un nom descriptif qui permet d'en identifier l'objectif. |
| Sens | Indique si la règle s'applique aux requêtes, aux réponses ou aux deux |
| Opération | Transformation à effectuer (voir le tableau des opérations ci-dessous) |
| Mode de correspondance | Correspondance littérale, expression régulière ou contenu complet, selon l'opération |
| Valeur recherchée (Match value) | Chaîne ou motif à rechercher |
| Valeur de remplacement (Replace value) | Valeur de remplacement |
| Activé | Interrupteur permettant d'activer ou de désactiver la règle sans la supprimer |
| Filtres | Conditions facultatives portant sur la méthode, l'hôte, le chemin et HTTPQL, qui limitent l'application de la règle |
Opérations
| Opération | Effet |
|---|---|
| Ajouter un en-tête | Ajoute un en-tête avec un nom et une valeur fixes |
| Supprimer un en-tête | Supprime un en-tête par son nom |
| Remplacer l’en-tête | Remplace la valeur d'un en-tête existant |
| Remplacer le corps | Remplace une partie du corps en utilisant la valeur recherchée |
| Chemin / chaîne de requête / paramètre (Path / query / query parameter) | Modifie le chemin de la requête ou les valeurs de la chaîne de requête |
| Ligne de requête / réponse (Request / response line) | Modifie le composant sélectionné de la ligne de départ HTTP |
| Code HTTP | Modifie le statut d'une réponse |
| Message brut (Raw message) | Transforme ensemble la ligne de départ HTTP, les en-têtes et le corps |
| Charge utile WebSocket (WebSocket payload) | Remplace le contenu correspondant des messages du client ou du serveur |
| Workflow | Exécute un workflow de conversion activé sur le contenu sélectionné |
Modes de correspondance
Texte exact recherche une chaîne exacte. Utilisez ce mode pour des jetons fixes, des noms d'en-têtes ou des valeurs spécifiques.
Expression régulière recherche une correspondance à l'aide d'une expression régulière. Utilisez ce mode lorsque la cible varie, par exemple pour reconnaître un jeton qui change à chaque session ou pour capturer un groupe et le réutiliser dans le remplacement.
Dans les remplacements par expression régulière, utilisez les groupes de capture $1, $2, etc. pour référencer les parties correspondantes dans la valeur de remplacement.
Intégral transmet tout le contenu sélectionné à la transformation au lieu de rechercher une sous-chaîne. Certaines opérations, comme l'ajout ou la suppression d'un en-tête nommé, utilisent plutôt un nom littéral et ne proposent pas tous les modes.
Transformer le corps complet d'une réponse
- Créez et activez un workflow de type Conversion, puis validez-le avec des données de test.
- Créez une règle Rechercher et remplacer avec la direction Réponse et l'opération Workflow (corps).
- Choisissez le mode de correspondance Intégral et sélectionnez le workflow.
- Restreignez la règle avec un filtre HTTPQL, par exemple :
text
req.host.eq:"cdn.example.com" AND (req.path.cont:".js" OR resp.headers["Content-Type"].value.cont:"javascript")Le workflow reçoit le corps entier ; sa sortie remplace ce corps. Workflow (en-tête) transforme un en-tête nommé, tandis que Workflow (en-têtes bruts) transforme le bloc d'en-têtes. Ces entrées sont différentes du corps de la réponse.
Les filtres HTTPQL sont évalués dans le contexte de requête ou de réponse disponible. Une règle appliquée aux requêtes ne peut pas s'appuyer sur une réponse qui n'est pas encore arrivée. Désactivez la journalisation du workflow lorsque la règle produit un volume élevé d'exécutions ; activez-la temporairement pour diagnostiquer une transformation.
Réordonner les règles
Faites glisser la ligne d'une règle pour la déplacer dans la liste. L'ordre importe lorsque les règles modifient des parties qui se recoupent dans une même requête ou réponse.
Assistance par IA
Cliquez sur Remplir avec l’IA dans l'éditeur de règles et décrivez en langage naturel ce que vous souhaitez modifier. Ogma génère les champs de la règle à partir de votre description. Vérifiez et ajustez les valeurs générées avant d'activer la règle.
Exemples de consignes adaptées :
- « Supprime l'en-tête X-Frame-Options de toutes les réponses »
- « Remplace la valeur de l'en-tête Authorization par mon jeton de test »
- « Ajoute à toutes les requêtes un en-tête nommé X-Debug avec la valeur true »
Tester une règle
Avant d'activer une règle sur le trafic réel, testez-la avec un exemple de requête :
- Ouvrez l'éditeur de règles.
- Collez une requête HTTP brute dans le Panneau de test.
- Cliquez sur Appliquer les règles. Le panneau affiche le résultat et les règles appliquées.
- Vérifiez que la sortie correspond au résultat attendu.
- Activez la règle.
Le panneau de test propose aussi une cible Réponse, avec des champs de saisie pour le statut, les en-têtes et le corps. Vérifiez la liste des règles appliquées : ce test porte sur les règles applicables, et non sur un simple champ isolé de l'éditeur.
Rechercher et remplacer et Interception
Rechercher et remplacer est automatique. Une fois activée, une règle transforme chaque requête ou réponse correspondante sans intervention de votre part.
Interception met le trafic en pause et attend une décision manuelle. Utilisez Interception lorsque la modification appropriée dépend d'un contexte à évaluer pour chaque requête. Utilisez Rechercher et remplacer lorsque la même transformation doit s'appliquer systématiquement, sans vérification manuelle.
Usages courants
- Remplacer un cookie de session dans toutes les requêtes pour tester un autre compte.
- Ajouter un en-tête qui active un mode de débogage ou d'administration.
- Supprimer des en-têtes de sécurité des réponses pour évaluer le comportement côté client.
- Remplacer un hôte codé en dur dans les réponses de redirection.
- Réécrire un préfixe de chemin de requête.