View Full Version : [JAVA] gestione pacchetti http per navigazione
Phoenix Fire
01-03-2011, 13:03
Salve a tutti, sto cercando di creare un programma che tramite servlet riceve richieste http e le soddisfa; in pratica fa da proxy, permettendomi di fare analisi delle informazioni in chiaro.
Per rendere la navigazione fattibile senza incorrere in problemi di DNS et similia avevo pensato di aggiungere una stringa che si riferisce alla mia servlet a cui faccio passare come parametro tutte le url di richiesta
(esempio per navigare su www.hwupgrade.it scrivo sulla barra localhost:8080/miaservlet?url=www.hwupgrade.it)
tramite i metodi di doGET/POST eccetera volevo ricevere le richieste http e rimandarle ai siti interessati.
Il mio problema è però collegarmi con il determinato sito e girare tutti i pacchetti al richiedente modificando gli url per adattarli al mio indirizzo.
Sto cercando da giorni di usare qualche parser html sparso per la rete per ricevere la pagina html, modificare gli indirizzi e rimandarla al richiedente ma sono ancorato non riuscendo a fare praticamente nulla di ciò
qualcuno sa come aiutarmi?
banryu79
01-03-2011, 15:56
Il mio problema è però collegarmi con il determinato sito e girare tutti i pacchetti al richiedente modificando gli url per adattarli al mio indirizzo.
Non so se sono in grado di aiutarti, vorrei però sapere se ho capito bene quello che vorresti fare: in pratica vorresti modificare al volo tutti i link contenuti nella pagina html che la tua servlet riceve in risposta dal server e che deve a sua volta spedire indietro al client?
In modo che quando il client faccia richiesta di un determinato link nella pagina servita "ripassi" nuovamente per la tua servlet/proxy?
Oppure vuoi impostare qualche campo particolare dell'header della risposta http da spedire indietro al client?
Phoenix Fire
02-03-2011, 09:06
Non so se sono in grado di aiutarti, vorrei però sapere se ho capito bene quello che vorresti fare: in pratica vorresti modificare al volo tutti i link contenuti nella pagina html che la tua servlet riceve in risposta dal server e che deve a sua volta spedire indietro al client?
In modo che quando il client faccia richiesta di un determinato link nella pagina servita "ripassi" nuovamente per la tua servlet/proxy?
questo :D
banryu79
02-03-2011, 12:11
Ok.
Rozzamente e succintamente: avendo un oggetto URL puoi recuperare un oggetto HttpURLConnection con il quale aprire una connessione con quel URL.
Sapendo che quell'URL identifica una pagina html, puoi leggerne il contenuto tramite l'InputStream associato all'oggetto HttpURLConnection connesso all'URL.
Supponiamo di salvare tutto il testo letto dall'InputStream e di memorizzarlo in una String.
A quel punto devi trovare nel testo tutte le occorenze che rispettano un certo pattern per individuare le stringhe dei link (<a href>) e produrre un nuovo testo html il cui contenuto dei link sia modificato come serve a te.
Infine la tua servlet/proxy spedisce indietro al client la pagina html così modificata. Almeno è quello che suppongo si possa fare: sul fronte sviluppo web e tematiche attinenti non so nulla :D
Disclaimer: spero di non aver postato boiate, o aver lasciato fuori dal discorso considerazioni su aspetti importanti e imprescindibili che non ho citato per ignoranza.
Phoenix Fire
02-03-2011, 12:56
Ok.
Rozzamente e succintamente: avendo un oggetto URL puoi recuperare un oggetto HttpURLConnection con il quale aprire una connessione con quel URL.
Sapendo che quell'URL identifica una pagina html, puoi leggerne il contenuto tramite l'InputStream associato all'oggetto HttpURLConnection connesso all'URL.
Supponiamo di salvare tutto il testo letto dall'InputStream e di memorizzarlo in una String.
A quel punto devi trovare nel testo tutte le occorenze che rispettano un certo pattern per individuare le stringhe dei link (<a href>) e produrre un nuovo testo html il cui contenuto dei link sia modificato come serve a te.
Infine la tua servlet/proxy spedisce indietro al client la pagina html così modificata. Almeno è quello che suppongo si possa fare: sul fronte sviluppo web e tematiche attinenti non so nulla :D
Disclaimer: spero di non aver postato boiate, o aver lasciato fuori dal discorso considerazioni su aspetti importanti e imprescindibili che non ho citato per ignoranza.
il metodo potrebbe anche funzionare ma sarebbe una cosa mortale sia prestazionalmente che anche di codice
infatti esistono miliardi di html parser sul web. Peccato che non ne trovi nessuno che permetta una facile e veloce (computazionalmente parlando) modifica degli attributi
banryu79
02-03-2011, 13:28
infatti esistono miliardi di html parser sul web. Peccato che non ne trovi nessuno che permetta una facile e veloce (computazionalmente parlando) modifica degli attributi
Di "facile" c'è jsoup (http://jsoup.org/)... almeno a quello che ho visto in 5 min.
Di veloce non saprei, dovresti fare delle ricerche e/o molti test.
Phoenix Fire
03-03-2011, 06:43
Grazie mille alla fine (sotto consiglio di un professore) sono passato a htmlparser sembra andare
banryu79
03-03-2011, 14:58
htmlparser sembra andare
Visto e segnato, non lo conoscevo, sembra promettente :)
vBulletin® v3.6.4, Copyright ©2000-2025, Jelsoft Enterprises Ltd.