2013-01-16 21 views
33

Sto utilizzando Charles Proxy per riscrivere una risposta da un'API a scopo di test.È possibile riscrivere un codice di stato con Charles Proxy?

Se si imposta un punto di interruzione, è possibile riscrivere completamente la risposta non elaborata come desidero.

Tuttavia, se voglio automatizzare tramite lo strumento "Riscriviamo", mi sono bloccato, sembra che non è possibile modificare il codice di stato:

Rewrite Rule panel

Sai se sono manca qualcosa?

+1

Mi chiedevo solo la stessa cosa. Ho bisogno esattamente di questa funzione in questo momento, quindi ho inviato una richiesta di supporto all'autore di Charles Proxy. Riferirò indietro se apprenderò un modo per farlo. –

risposta

65

Aggiornamento: la versione 3.8 di Charles Proxy è stata appena rilasciata, con la possibilità di riscrivere lo stato. Dal release notes: strumento

  • Rewrite: consentire la riscrittura di stato della risposta

riscrittura dell'interfaccia utente di questa versione aggiunge un nuovo "Stato di risposta" Tipo di regola:

enter image description here

+0

Funziona perfettamente. Grazie – Janusz

+23

Nella mia versione di Charles (3.10.1) devo inserire sia un codice di stato che un messaggio per far funzionare la riscrittura. Per l'esempio sopra a lavoro devo sostituire "500" con "500 Errore". – emidander

8

Questa non è una risposta diretta alla tua domanda, ma come notato nel mio commento sopra, ero nella stessa situazione e ho trovato una soluzione utilizzando uno strumento diverso che funziona bene per me.

Invece di Charles, corro mitmproxy, specificamente mitmdump, con questo breve pitone rewriting script:

#!/usr/bin/env python 

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

    flow.response.status_code = 404 

per agganciare in proxy, corro mitmdump simili:

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

e funziona alla grande.

Sono su OS X e ho configurato proxy web della interfaccia di rete a 127.0.0.1 porta 8080.

3

Edit finale: la risposta di Marc Liyanage è la più corretta per questa domanda.

No, non lo sei, non penso sia possibile riscrivere un codice di stato.

Non è possibile aggiungere questo come un commento (nuovo utente), ma una soluzione è:

  1. Creare risorse su un server che restituirà i codici necessari, o trovare quelli che lo fanno.
  2. Utilizzare la funzione Mappa remota, associazione alla risorsa che restituisce il codice.

Ho provato a utilizzare Map Local, che sarebbe perfetto per questo, ma Charles aggiunge il proprio codice di stato 200 OK a tutti i file restituiti.

Modifica: Inoltre è possibile utilizzare i punti di interruzione sulle singole risposte e modificare il codice.

+1

La risposta di Marc Liyanage è la risposta corretta per le nuove versioni di Charles (3.8+). – alejandromp

7

con Charles 3.8 +, puoi riscrivere il codice di stato.

Nello strumento di riscrittura, selezionare "Tipo: stato della risposta". Nei campi di corrispondenza e nei campi di sostituzione, tenere presente che Charles prevede che gli stati in arrivo e riscritti corrispondano al formato "\d{3} .*". Ciò significa che lo stato riscritto deve contenere una parte di messaggio oltre al codice di stato numerico.

Ad esempio:

partita Valore:. 201 *

Sostituire valore: 502 Gateway

Tralasciando il messaggio dal valore di sostituzione comporterà alcuna riscrittura dello stato linea. È possibile visualizzare i messaggi di output dello strumento di riscrittura di Charles nella sezione Note del riepilogo di ogni chiamata.

Problemi correlati