85 votes

Est-il possible de réécrire un code de statut avec Charles Proxy ?

J'utilise Charles Proxy pour réécrire une réponse d'une API à des fins de test.

Si je place un point d'arrêt, je suis autorisé à réécrire complètement la réponse brute comme je le souhaite.

Par contre, si je veux l'automatiser via l'outil "Rewrite", je suis bloqué, il semble que l'on ne puisse pas modifier le code de statut :

Rewrite Rule panel

Savez-vous si j'ai oublié quelque chose ?

138voto

Marc Liyanage Points 1279

Mise à jour : la version 3.8 de Charles Proxy vient d'être publiée, avec la possibilité de réécrire le statut. Depuis le site notes de mise à jour :

  • Outil de réécriture : permet de réécrire l'état de la réponse

La réécriture de l'interface utilisateur de cette version ajoute un nouveau type de règle "État de la réponse" :

enter image description here

29voto

emrcftci Points 2507

1- Sélectionner Tools > Rewrite ou OPTION + CMD + R

Rewrite selection


2- Sélectionner Enable Rewrite puis sélectionnez Add

Enable Rewrite selection


3- Remplissez les champs avec vos coordonnées

Details


4- Ajouter le type et l'action

Type and Action


5- Sélectionner le type d'action - Response Status dans notre cas -, valeur d'écriture à modifier -500-, valeur d'écriture à remplacer -200-

Configure Type and Action


Dernière étape :

6- Vous êtes prêt à manipuler le code de statut de votre réponse avec Charles

Finally

Site officiel de Charles Web Debugging Proxy

17voto

Marc Kubischta Points 173

Avec Charles 3.8+, vous pouvez réécrire le code d'état.

Dans l'outil de réécriture, sélectionnez "Type : response status". Dans les champs de correspondance et de remplacement, sachez que Charles s'attend à ce que les statuts entrants et réécrits correspondent au format "\d{3} .*" . Cela signifie que votre statut réécrit doit comporter une partie message en plus du code de statut numérique.

Par exemple :

Valeur de correspondance : 201 .*

Valeur de remplacement : 502 Bad Gateway

L'omission du message dans la valeur de remplacement n'entraîne pas la réécriture de la ligne d'état. Vous pouvez consulter les messages de sortie de l'outil de réécriture de Charles dans la section Notes du résumé de chaque appel.

11voto

Marc Liyanage Points 1279

Ce n'est pas une réponse directe à votre question, mais comme indiqué dans mon commentaire ci-dessus, j'étais dans la même situation et j'ai trouvé une solution en utilisant un outil différent qui fonctionne bien pour moi.

Au lieu de Charles, je dirige mitmproxy En particulier, il s'agit de mitmdump avec ce court Python réécriture de script :

#!/usr/bin/env python

def response(context, flow):
    if '/somePath' not in flow.request.path:
        return

    flow.response.status_code = 404

Pour le connecter au proxy, je lance mitmdump comme ceci :

mitmdump -s /path/to/rewriting-script.py

et cela fonctionne très bien.

Je suis sous OS X et j'ai configuré le proxy web de l'interface réseau sur 127.0.0.1 port 8080.

4voto

David Boydell Points 519

Final Edit : La réponse de Marc Liyanage est maintenant la plus correcte pour cette question.

Non, je ne pense pas qu'il soit possible de réécrire un code d'état.

Je ne peux pas ajouter ce commentaire (nouvel utilisateur), mais il existe une solution de contournement :

  1. Créez des ressources sur un serveur qui renverront les codes dont vous avez besoin, ou trouvez-en d'autres qui les renvoient.
  2. Utilisez la fonction de mappage à distance, en établissant une correspondance avec la ressource qui renvoie le code.

J'ai essayé d'utiliser Map Local, qui serait parfait pour cela, mais Charles ajoute son propre code de statut 200 OK à tous les fichiers renvoyés.

Edit : Vous pouvez également utiliser des points d'arrêt sur des réponses individuelles et modifier le code.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X