Réécriture d'en-tête

Chute peut réécrire les en-têtes de requête et de réponse avant leur transmission au serveur ou au client.

Plusieurs règles peuvent être appliquées à une même requête.

Remarque : une requête HTTP en clair n'est traitée que lorsqu'elle parvient à Chute par son proxy HTTP ; le HTTP en clair qui arrive par l'interface TUN est transmis tel quel. Chute Android fait passer tout le trafic par TUN, sauf si Proxy HTTP système est activé dans les Réglages, ce qui fournit aux apps le proxy HTTP de Chute (Android 10 et ultérieur ; désactivé par défaut). Une requête HTTPS n'est traitée que lorsque son hôte est déchiffré par MitM.

Exemple :

[Header Rewrite]
^http://example\.com.* header-add DNT 1
^http://example\.com.* header-del Cookie
^http://example\.com.* header-replace User-Agent Unknown
^http://example\.com.* header-response-add X-Server rack3
^http://example\.com.* header-response-del X-Powered-By
^http://example\.com.* header-response-replace Server nginx

La règle de réécriture comporte 4 parties : l'expression régulière d'URL, le type d'action, le champ d'en-tête et la valeur. Ici, seul un // en début de ligne ou après une espace, hors des guillemets doubles, ouvre un commentaire ; # et ; ne le font jamais, si bien que header-add X-Color #ff0000 garde sa valeur. Voir Commentaire.

Remarque : l'expression régulière d'URL est recherchée n'importe où dans l'URL complète de la requête, ainsi que dans son chemin seul, comme pour la réécriture d'URL : ^https://example\.com couvre déjà tous les chemins et chaînes de requête de cet hôte, un .* final est donc inutile, et ^/api correspond à toute requête dont le chemin commence par /api. L'URL complète d'une requête déchiffrée commence par https://, si bien qu'un motif ^http:// ne correspond jamais à une telle requête. Le motif conserve sa casse, si bien que \S, \D, \W et \B gardent leur sens ; la correspondance elle-même ignore la casse.

En-têtes de requête et de réponse

Les actions préfixées par header- s'appliquent aux en-têtes de requête (du client vers le serveur). Celles préfixées par header-response- s'appliquent aux en-têtes de réponse (du serveur vers le client).

Un préfixe de direction facultatif de style Surge, http-request / http-response, placé avant l'expression régulière d'URL est également accepté, par ex. http-request ^http://example\.com.* header-replace Accept-Language en-us.

header-add

Définit un champ d'en-tête de la requête à la valeur indiquée. Si le champ existe déjà, il est écrasé ; un champ sur plusieurs lignes ne garde que la nouvelle ligne.

Exemple :

[Header Rewrite]
^http://example\.com.* header-add DNT 1

Avant :
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate

Après :
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 1

header-del

Supprime un champ d'en-tête de l'en-tête de requête, avec toutes ses lignes s'il en a plusieurs.

Exemple :

[Header Rewrite]
^http://example\.com.* header-del DNT

Avant :
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 1

Après :
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate

header-replace

Remplace la valeur d'un en-tête dans l'en-tête de requête. Si le champ d'en-tête n'existe pas, rien ne se passe. Un champ sur plusieurs lignes ne garde qu'une ligne, avec la nouvelle valeur.

Exemple :

[Header Rewrite]
^http://example\.com.* header-replace DNT 1

Avant :
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 0

Après :
GET /index.html HTTP/1.1
Host: example.com
Connection: keep-alive
User-Agent: Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_4) AppleWebKit/603.1.30 (KHTML, like Gecko) Version/10.1 Safari/603.1.30
Accept-Language: en-us
Accept-Encoding: gzip, deflate
DNT: 1

Remarque : header-replace ne fonctionne que si le champ d'en-tête existe déjà. Pour définir un champ d'en-tête quel que soit son état, utilisez header-add — il écrase tout champ existant portant le même nom, ce qui rend inutile la combinaison de header-del et header-add.


header-replace-regex

Réécrit une partie de la valeur d'un en-tête existant à l'aide d'une expression régulière. La règle prend le champ d'en-tête, une expression régulière appliquée à sa valeur et le remplacement, qui peut désigner les groupes capturés par $1, $2. Rien ne se passe si le champ d'en-tête n'existe pas. Mettez l'expression régulière ou le remplacement entre guillemets doubles s'il contient des espaces ; "" est un remplacement vide.

Exemple :

[Header Rewrite]
^https://example\.com header-replace-regex User-Agent "Chrome/[0-9.]+" Chrome/120.0.0.0
^https://example\.com header-response-replace-regex Set-Cookie "; Secure" ""

L'expression régulière appliquée à la valeur d'en-tête est sensible à la casse. Un champ sur plusieurs lignes, comme les lignes Set-Cookie d'une réponse, voit chaque ligne réécrite séparément, et toutes sont conservées. Comme pour les autres actions, header-response-replace-regex (ou le préfixe http-response) agit sur les en-têtes de réponse.

S. Smart Rabbit LLC © All Rights Reserved            updated 2026-09-24 12:24:39

results matching ""

    No results matching ""