2012-03-30 16 views
9

Sto scrivendo un client che comunica con un server remoto su HTTP. Vorrei inserire un proxy malvagio tra il client e il server che influenzerebbe (casualmente?) Il traffico sul cavo.Evil proxy per testare l'interazione client/server

Alcune cose che vorrei accadere:

  • ritardi arbitrari per la risposta
  • errori HTTP arbitrarie
  • questo scenario è difficile immaginare con TCP ma che cavolo: risposte troncati (vale a dire dati non corretti)
  • indisponibilità temporanea (sebbene ciò sembri difficile dato che ciò dovrebbe essere fatto a livello di rete inferiore).
  • errori personalizzati predefiniti (es: ogni richiesta ritorna con un errore di servizio)

Fondamentalmente Voglio simulare una serie di condizioni che gli utenti di questo software si sta per sperimentare fuori nel mondo reale messa in rete e assicurati che il client li gestisca con garbo.

Sospetto (spero) che qualcosa del genere esista già. Per favore indicami la giusta direzione!

Grazie

+0

IIRC alcune società hanno costruito moduli simili per i test interni ... Non conosco alcun proxy libero o commerciale che consenta un tale controllo ... in pratica si dovrebbe iniziare con un proxy opensource esistente e modificarlo/estenderlo per le proprie esigenze ... – Yahia

+0

Sì, ho trovato [Mallory] (http://intrepidusgroup.com/insight/mallory/). Supporta i plugin ma voglio vedere se c'è già qualcosa là fuori, prima di investire tempo nell'apprendimento di Python. – EightyEight

+1

Penso che la scelta migliore sia prendere in giro le classi di interazione di rete, in modo da poter facilmente descrivere tali scenari nel codice del caso di test, altrimenti sarebbe piuttosto difficile gestire tale sistema. – kan

risposta

5

HTTP Test Tool (htt) sembra che cosa avete bisogno qui. Dispone di the ability to operate as a proxy and a reverse-proxy per testare questi casi in modo specifico, quando una struttura fittizia non è sufficiente per l'attività.

Per un veramente il male del proxy, è possibile utilizzare Squid in collaborazione con il Metasploit Framework e alcuni degli strumenti in BackTrack Linux. Questo sembra essere un po 'oltre lo scopo del tuo progetto, però!

(Additional tools to consider, più one more)

3

Fiddler 1 è un visualizzatore di script di traffico/proxy.

3

Si potrebbe provare fiddler - tutto ciò che hai scritto può essere simulato utilizzando quello strumento. È anche ottimo per il debug di problemi di comunicazione tra l'applicazione e il server. Mi è stato risparmiato un sacco di lavoro quando stavo implementando XML-RPC.

Ci sono alcune ottime estensioni che possono aiutarti e puoi anche write your own se hai bisogno di qualcosa di veramente speciale.

[EDIT] Poiché questa è una domanda mac, è possibile provare webscarab o charles (il secondo è pagato). Ma è ancora possibile eseguire il proxy su qualsiasi computer, anche virtuale. Quindi se hai una licenza di riserva di riserva ...

+0

Purtroppo sono su un mac. – EightyEight

+0

@EightyEight poichè dubito che il violinista funzioni su mono, ho modificato la mia risposta e aggiunto i link agli strumenti che verranno eseguiti su mac. – SiliconMind

2

Dato che sei su un Mac, hai ipfw integrato nel tuo sistema. Da un terminale, man ipfw per informazioni.

ipfw gestisce le regole del firewall, incluso un set di regole denominato "Dummynet" che può essere utilizzato per introdurre perdita di pacchetti e latenza. Questo non affronta TUTTE le tue preoccupazioni, ma ti consente di influenzare il tuo traffico a livello di rete senza coinvolgere un software aggiuntivo.

Ho trovato an article on WaterRoof che sembra essere un editor di regole GUI ipfw che supporta Dummynet. Ci sono probabilmente altri.

Anche dare un'occhiata a this AFP548 article sul traffic shaping con Dummynet. Se sei abbastanza comodo a una linea di comando, dovresti essere pronto.

Si noti che Dummynet NON fornisce strumenti per tutte le cose elencate nella domanda; consente solo di simulare un numero di problemi di rete come la latenza e la perdita di pacchetti. Per tutto ciò che riguarda l'alterazione dei dati a livello HTTP, sono d'accordo con gli altri sul fatto che lo strumento fiddler sia probabilmente lo strumento da utilizzare.

Ulteriori informazioni sullo strumento "Ispeziona elemento" di Chrome/Chromium. (Fare clic con il tasto destro del mouse, quindi selezionarlo dalla parte inferiore della maggior parte dei menu contestuali.) Fornisce un'analisi dettagliata delle intestazioni client e server HTTP, oltre alla possibilità di modificare le variabili nascoste del modulo, registrare intere sessioni per la visualizzazione successiva, ecc. Molto utile cose.

+0

Questo è fantastico, grazie! – EightyEight

Problemi correlati