Salta ai contenuti

Regole di riscrittura e breakpoint

La cattura ti permette di “osservare”, le regole e i breakpoint ti permettono di “modificare”. Trace Eagle ti rende il proprietario del tuo traffico: modifica le richieste senza scrivere codice, usando regole point-and-click semplici e dirette per riscrivere automaticamente migliaia di flussi; oppure usa i breakpoint per mettere in pausa e modificare i flussi uno alla volta; solo per la logica complessa che le regole davvero non riescono a esprimere devi ricorrere a script / plugin.


1. Regole di riscrittura (point-and-click semplice, modifiche automatiche)

Sezione intitolata “1. Regole di riscrittura (point-and-click semplice, modifiche automatiche)”

Il modo peggiore per iniziare a modificare le richieste è scrivere uno script. Qui non è necessario: scegli un’azione da un prontuario e inserisci un valore, ed ecco una regola: semplice, intuitiva e applicata nell’istante in cui la crei.

Le regole sono una per riga, nella forma <match> <action>://<value> (ad esempio *.example.com resHeaders://X-Debug: 1). Le righe vuote e i commenti # vengono ignorati, ogni riga viene convalidata singolarmente, e le modifiche vengono applicate a caldo al salvataggio; le regole possono essere organizzate in gruppi con nome e attivate gruppo per gruppo. L’interfaccia include un prontuario cliccabile: fai un clic per inserire l’esempio corrispondente, poi basta modificare il valore, nessuna sintassi da memorizzare.

Regole di riscrittura: una regola per riga a sinistra, con supporto per gruppi e commenti, un prontuario di azioni cliccabile a destra (redirect / mock / modifica header / impronta / breakpoint, ecc.)

  • Dominio esatto: traceeagle.com (può includere un prefisso di percorso traceeagle.com/path)
  • Sottodominio con wildcard: *.traceeagle.com (corrisponde al dominio apex più tutti i sottodomini)
  • Regex sull’intero URL: regex://…
  • URL completo esatto: $https://host/path
  • Porta: :8080
  • Negazione: anteponi ! a qualsiasi corrispondenza

Direzione della richiesta

  • Redirect / inoltro: cambia l’IP di destinazione contattato (host), mappa verso un URL completo diverso (map-remote, può puntare a un server di sviluppo locale), instrada attraverso un proxy http/socks5 a monte, oppure ripristina le caratteristiche di rete della richiesta di un client a quelle di un client standard (riproduzione fedele).
  • Mock di dati fittizi: mock://200 o mock://200|<body>, restituisce una risposta preimpostata senza raggiungere il server, una salvezza quando il frontend è in attesa di un’API del backend.
  • Modifica della riga di richiesta / degli header: metodo, User-Agent, Referer, autenticazione Basic, X-Forwarded-For, Content-Type / charset, Cookie, unione dei parametri di query, ricerca e sostituzione nell’URL.
  • Modifica del body della richiesta: sostituzione completa / ricerca e sostituzione / append / prepend / dump su un file locale.

Direzione della risposta

  • Modifica dello stato / degli header: cambia il codice di stato, aggiungi o rimuovi qualsiasi header di risposta, Set-Cookie, apri il CORS con un clic, forza il download di un allegato, controllo della cache (disabilita la cache o imposta max-age), disabilita Cookie/compressione/keep-alive, ricerca e sostituzione nei valori degli header.
  • Modifica del body della risposta: sostituzione completa / ricerca e sostituzione / append / prepend / merge JSON superficiale.
  • Iniezione per tipo: solo quando il Content-Type corrisponde, inietta o sostituisci script, stili o snippet in HTML / JS / CSS.

Rete e protocollo

  • Dump su file: oltre al body della richiesta / risposta, anche l’intera richiesta / risposta grezza può essere salvata su un file locale con un clic, per l’archiviazione o l’analisi offline.
  • Simulazione di rete scadente: ritardo della richiesta / risposta (millisecondi), limitazione della banda (con preset 2G / 3G / 4G).
  • Riscrittura di frame WebSocket: sostituzione old=>new per direzione (in entrambi i sensi / dal client al server / dal server al client).
  • Riscrittura TCP / UDP grezzo: sostituzione per direzione su flussi di byte non HTTP / datagrammi SOCKS5 UDP.

I valori delle regole possono usare variabili dinamiche come ${url} ${host} ${port} ${method} ${status} ${now} ${random} ${randomUUID} ${req.headers.X} ${res.headers.X}, oltre a valori con nome personalizzati {name} (definisci un valore comune una volta, riferiscilo ovunque). I valori con nome {name} si usano principalmente nelle riscritture di richiesta / risposta; i valori di sostituzione nella riscrittura di frame WebSocket supportano ${...}.


Per i flussi che richiedono un controllo preciso, caso per caso, usa un breakpoint per mettere in pausa e far comparire un editor prima che la richiesta venga inviata o prima che la risposta ritorni.

  • Attivazione tramite regola: usa una regola breakpoint://req|res|both per contrassegnare con precisione quali flussi intercettare.
  • Interruttore globale di intercettazione: attiva l’intercettazione per l’intera sessione, poi restringi facoltativamente l’ambito con regole di filtro dell’intercettazione (filtra per dominio / metodo / fase); senza regole, viene intercettato tutto.
  • Fase della richiesta: metodo, URL (l’host segue l’URL), header, body.
  • Fase della risposta: codice di stato, header di risposta, body della risposta.
  • Scarta direttamente: Abort elimina questa richiesta / risposta (il client riceve un errore di gateway).
  • I flussi che corrispondono a più intercettazioni si mettono in coda perché tu li gestisca: puoi riprendere ciascuno (Resume), scartarlo (Abort), o riprenderli tutti in una volta. I flussi lasciati non gestiti a lungo vengono ripresi automaticamente senza modifiche, così il traffico non resta mai bloccato all’infinito.

Per la logica che le regole non riescono a esprimere, affidala a uno script o a un plugin:

  • Script JavaScript: definisci onRequest(req) / onResponse(resp) e modifica i campi direttamente per applicare le modifiche. Gli helper integrati includono logging, chiamate sincrone in uscita verso altri servizi, conservazione dei dati tra richieste (per contatori / token in cache), codifica/decodifica Base64 e altro.
  • Plugin HTTP in uscita: usa una regola plugin://name per affidare la richiesta / risposta al tuo servizio plugin per l’elaborazione (chiamato tramite HTTP), e il plugin restituisce il contenuto riscritto (o lo simula direttamente). Indipendente dal linguaggio, adatto ai team per implementare elaborazioni personalizzate in qualsiasi linguaggio.

Un flusso attraversa, in ordine: regole di richiesta, script di richiesta, plugin di richiesta, breakpoint di richiesta, inoltro / mock, regole di risposta, script di risposta, plugin di risposta, breakpoint di risposta. Lo schema è semplice: prima le regole automatiche, poi gli script, poi i plugin, e solo per ultimo interviene manualmente un breakpoint, ciascuno svolgendo il proprio compito senza pestarsi i piedi a vicenda.


Torna a Cattura tramite proxy · Correlati: Componi e riproduci