Newsgroup: it.comp.lang.visual-basic
Titolo: [ot]Intercettare stringa inviata al server

Confido nella solita tolleranza dei navigatori di questo ng per i post OT.
;-)
Avrei questo problema o curiosità che dir si voglia: vorrei trovare il modo
di conoscere la stringa che viene inviata in rete dal "navigatore internet"
quando agisco su un determinato "oggetto" di una pagina html/asp/php e chi
più ne ha più ne metta.
Cerco di spiegarmi meglio (ma so già che non ci riuscirò...): quando faccio
click su un elemento "attivo" di una pagina internet, di solito viene
inviata in rete una stringa del tipo
http://indirizzopagina.asp?parametro1=valore&parametro2=valore
 eccetera
eccetera. Nella maggior parte dei casi leggendo il codice html della pagina
di invio si riesce a capire qual è l'elenco dei parametri da inviare e
l'indirizzo al quale inviarli, ma ultimamente mi è capitata una pagina
infarcita di menù costruiti al run time con applet java, con livelli di
complicazione e di nidificazione tali da rendermi "impossibile" il reverse
engineering manuale.....
Se ci fosse il modo di sapere la stringa "finale" che viene inviata al
server avrei risolto il problema...
Salutoni e ringraziamenti anticipati.
Sergio
P.S. Se qualcuno avesse dubbi sulla liceità delle operazioni da me messe in
campo sono assolutamente disposto a discutere nel dettaglio l'argomento.

 più ne ha più ne metta.
Se hai 2 PC in rete, potresti su uno montare WInProxy e impostare l'altro in
modo che utilizzi il primo come Proxy.
Poi, dopo una bella navigata, vai a vedere nei log creati dal WinProxy.
Io di solito faccio così e funziona.
PS: il winproxy lo puoi scaricare in versione trial (mi sembra che ci sia la
possibilità) dal sito della Ositis Software.
Buon lavoro, Giorgio.

 più ne ha più ne metta.
Oltre i log di un proxy segnalati da Gio, potresti usare uno sniffer
o anche un personal firewall, molti loggano gli accessi in uscita.
Bye, G.

[CSSoft] ha chiesto:
Avrei questo problema o curiosità che dir si voglia: vorrei trovare il modo
di conoscere la stringa che viene inviata in rete dal "navigatore internet"
quando agisco su un determinato "oggetto" di una pagina html/asp/php e chi
più ne ha più ne metta.
[Gio] ha segnalato questa possibile soluzione:
Se hai 2 PC in rete, potresti su uno montare WInProxy e impostare l'altro in
modo che utilizzi il primo come Proxy.
Poi, dopo una bella navigata, vai a vedere nei log creati dal WinProxy.
Io di solito faccio così e funziona.
[Paperino] ha aggiunto
Oltre i log di un proxy segnalati da Gio, potresti usare uno sniffer
o anche un personal firewall, molti loggano gli accessi in uscita.
ora, [CSSoft] rileva:
Oltre ai sentiti ringraziamenti, vorrei utilizzare qualcosa di diverso da
quanto da voi suggerito: il lavoro che devo/dovrei/vorrei fare deve lavorare
sui pc della nostra rete aziendale, e preferirei evitare di installare
programmi di tal fatta perchè gli amministratori di sistema potrebbero
arrabbiarsi.
Rilancio/modifico il quesito: se faccio una applicazione in VB contenente un
controllo WebBrowser, è possibile intercettare, dall'interno di questa
applicazione, la stringa che viene inviata al server? Se sì, come?
Ulteriori ringraziamenti anticipati a chi vorrà rispondere.
Salutoni
Sergio

 applicazione, la stringa che viene inviata al server? Se sì, come?
Non lo so, non l'ho mai fatto :-), in effetti immagino di sì.
Forse nell'evento BeforeNavigate2 dovresti poter rilevare quello che ti serve:
*********
Event BeforeNavigate2(pDisp As Object, URL, Flags, TargetFrameName,
PostData, Headers, Cancel As Boolean)
*********
[1] Sto semplificando per evitare il discorso sulle reti switchate,
ettercap, ARP poisoning eccetera, non mi pare il caso... ;-)
Bye, G.

[CSSoft] ha scritto:
(snip)
Rilancio/modifico il quesito: se faccio una applicazione in VB contenente un
controllo WebBrowser, č possibile intercettare, dall'interno di questa
applicazione, la stringa che viene inviata al server? Se sě, come?
[Paperino] ha risposto
 Non lo so, non l'ho mai fatto :-), in effetti immagino di sě.
 Forse nell'evento BeforeNavigate2 dovresti poter rilevare quello che ti
serve:
 *********
 Event BeforeNavigate2(pDisp As Object, URL, Flags, TargetFrameName,
 PostData, Headers, Cancel As Boolean)
 *********
Non ho risposto subito al messaggio, perchč non č stato facile raggiungere
un risultato concreto: in effetti nell'evento navigate 2 il parametro
postdata contiene la parte dei parametri inviata al server, ma la sua
lettura non č propriamente immediata (se fai msgbox postdata vengono
visualizzati una serie di simpatici punti di domanda.....)
solo adesso ho trovato il tempo di analizzare la questione come meritava, e
sul sito di mamma microsoft (mamma del controllo, non mia ;-) )
ho trovato l'articolo 256195
http://support.microsoft.com/default.aspx?scid=kb;en-us;256195
che riporta il seguente pezzettino di codice
<codice>
Private Sub ctrlWB_BeforeNavigate2(ByVal pDisp As Object, URL As Variant,
Flags As Variant, TargetFrameName As Variant, PostData As Variant, Headers
As Variant, Cancel As Boolean)
    If pDisp Is ctrlWB.object Then
        Dim lCount As Long
        Dim lLen As Long
        Dim strPostData As String
        lLen = LenB(PostData) ' Use LenB to get the byte count
        If lLen > 0 Then    ' If it's a post form, lLen will be > 0
            For lCount = 1 To lLen
                strPostData = strPostData & Chr(AscB(MidB(PostData, lCount,
1))) ' Use MidB to get 1 byte at a time
            Next
        MsgBox strPostData
        End If
    End If
End Sub
</codice>
L'ho provato su alcune semplici pagine e sembra andare (almeno su alcune
pagine molto semplici), devo guardare cosa fanno le funzioni *B per capire
esattamente come funziona
Salutoni e grazie per la dritta
Sergio