2011-01-31 8 views
6

Ho un po 'di codice java sia nuovo (usando le librerie http di Apache comuni) sia vecchio (usando rigorosamente l'API 1.4 java) e sto provando a riscrivere il vecchio codice usando le nuove librerie di apache comuni. Tuttavia, non sta funzionando e sto lottando per scoprire perché. Le richieste vengono inviate, ma il mio codice più recente scade sul server ricevente a cui non ho accesso. Dato che il vecchio codice funziona, devo aver aggiunto la richiesta http. Sarebbe molto utile usare una sorta di sniffer del traffico HTTP per esaminare esattamente ciò che viene inviato in modo da poter vedere quali differenze ci sono.Il modo migliore per analizzare il traffico http inviato dal mio codice java?

Ho scaricato alcuni sniffer HTTP dal web (this one e that one) ma nessuno dei due ha catturato alcuno dei dati http inviati dal mio codice java (ma funzionano quando invio richieste casuali da un browser). Qualche idea là fuori su come posso mettere le mani su questi dati?

risposta

8

Utilizzare wireshark.

È eccezionale, gratuito, open source, multipiattaforma e può evidenziare diversi livelli di rete e non è in esecuzione da qualche sito Web dubbio che sembra spam SEO.

Snort è un altro buono, ma è più orientato verso il rilevamento delle intrusioni e le risposte automatiche a questo. Tuttavia, ha un grande sniffer.

+2

Perfetto grazie. Sembra un po 'come avere un intero negozio di ferramenta a mio sfogo quando tutto ciò di cui ho bisogno è un cacciavite, ma hey, lavoro fatto! –

+0

Un semplice suggerimento informativo, dovrai fare un po 'di passeggio per ottenere wireshark per catturare il traffico [localhost] (http://wiki.wireshark.org/CaptureSetup/Loopback) ed è abbastanza difficile catturare il traffico di windows localhost. – hooknc

0

Se si tenta di annusare il loopback (127.0.0.1), questo è un po 'complicato e per questo occorre installare un driver speciale.
Ti suggerisco di inviare la richiesta al server "falso" e di annusarlo.
puoi annusare con "WireShark" o "burpSuite" (se puoi configurare il tuo programma che passa attraverso il server proxy).
gl.

3

In genere trovo che lo sniffing dei pacchetti sia troppo basso per la risoluzione dei problemi di HTTP. Prova un proxy inverso; personalmente mi piace Charles come funziona lo stesso in Windows, Mac OS X e Linux; Fiddler è un popolare su Windows.

+0

Grazie per il suggerimento, ma (e potrei essere sul punto di entrare in testa qui) il mio programma java non interagisce con il web, semplicemente comunica con un server locale via http e quindi Fiddler non cattura le mie richieste . –

+0

Charles funziona alla grande per questo tipo di situazioni. Per configurare Commons HttpClient per utilizzare un server proxy locale: 'client.getHostConfiguration(). SetProxy (" localhost ", 8888)'. –

0

è possibile specificare SOCKS Proxy. normalmente Java utilizza SocksSocketImpl - ad esempio supporta automaticamente i proxy SOCKS.

Qualsiasi altro sniffer farà pure

Problemi correlati