+ Rispondi al messaggio
Pagina 1 di 4 123 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 37

Automatizzare accesso a sito internet

  1. #1
    Sn0rky non  in linea Scolaretto
    Post
    343
    Like Inviati  
    1
    Like Ricevuti  
    0
    salve a tutti!
    la mia applicazione al momento accede ad un sito internet e "dialoga" con esso in modo "quasi perfetto"... ma vorrei migliorare il codice ed usare meglio gli strumenti che ho a disposizione.
    Ora uso un webbrowser con il quale visualizzo un captcha che riportato a mano in una textbox (non cerco anti captcha!)
    e mi permette di compilare il seguente url
    https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=check&captcha={0}
    
    per avere come risposta questa stringa
    {"result":true,"token":"aI5JmpFC0Ao3x2PCl%2Fs1myvBXfAuWIxWnuNeoNrz8UgCXzJhAnNWaHpvJZO4evqz41InmB8Buanv4hCufH1nL03IivwjhJkne%2BC2w3M9l7DZFxdiLqwoQ6a8LbTRKPX9SYcFuaicSwT%2FmY3O%2FxDJ0UCJJgCtFSSvjh%2FoDr9dV14WibQzni3AjQG06Q0LhjnVN97%2B5oxH%2FYb%2FQMcTC4rBTDE1Er4xXUcYDY6xKkMY4xIAftEku%2Fg3pqyerYyeTLpceAxu%2BHkujRBdrzyzVayNoVcVXANHjU6VyOuWn%2FnV6Lr7rF0Lvfd3eFqMJ0xWS%2FZrbsiQM%2F%2B66I4cNuCgpsaRGQ%3D%3D","message":""}
    
    ossia il token di sessione che mi permette di accedere a tutte le funzionalit del sito senza usare fisicamente l'interfaccia del sito stesso e automatizzandolo attaverso altro codice vbNET...

    in definitiva vi chiedo quale pu essere la strada migliore da percorrere

    io vorrei provare in questo modo:
    scaricare lo stream dell'immagine con webclient.downloaddata o httpclient.GetstreamAsync (quale meglio????) poi creare l'immagine dallo stream con CreateImageFromBytes, visualizzarla in una picturebox, far scrivere il captcha all'utente, inviarlo e recuperare la risposta... il tutto senza che il captcha venga "annullato"

    ora traduco quel che ho scritto in codice.... intanto c' qualcuno che mi pu dare qualche dritta?
    Grazie!!!

    per ora sono arrivato qui, spero non sia un vicolo cieco!
        Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
            Dim link As String = "https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=image&lang=it"
            Dim GEOPORTALE As New System.Net.WebClient
            GEOPORTALE.DownloadData(link)
            PictureBox1.Image = CreateImageFromBytes(GEOPORTALE.DownloadData(link))
            Dim captcha As String
            captcha = InputBox("Inserisci il CAPTCHA", "Inserisci il CAPTCHA")
    
        End Sub
    
    
        Public Function CreateImageFromBytes(ByVal bytes As Byte()) As System.Drawing.Image
            If bytes Is Nothing Then Return Nothing
            Using stream As New System.IO.MemoryStream(bytes)
                Using tmpImage = System.Drawing.Image.FromStream(stream)
                    CreateImageFromBytes = New System.Drawing.Bitmap(tmpImage)
                End Using
            End Using
        End Function
    
    Ultima modifica di Sn0rky; 24-11-2020 18:29 

  2. #2
    Sn0rky non  in linea Scolaretto
    Post
    343
    Like Inviati  
    1
    Like Ricevuti  
    0
    ovviamente proseguendo con:
     Dim TOKEN As New System.Net.WebClient
            Dim link2 As String = String.Format("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=check&captcha={0}", InputBox("Inserisci il CAPTCHA", "Inserisci il CAPTCHA"))
            Dim Ttoken As String = TOKEN.DownloadString(link2)
            MessageBox.Show(Ttoken)
    
    Ttoken non contiene il token perch il captcha scaduto....

    HELP

  3. #3
    Sn0rky non  in linea Scolaretto
    Post
    343
    Like Inviati  
    1
    Like Ricevuti  
    0
    mi rispondo da solo :P
    metti che serva a qualcuno....
    tutta una questione di cookie!
    quindi ho scritto questo:
            System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
            Dim GEOPORTALE As New System.Net.WebClient
            PictureBox1.Image = CreateImageFromBytes(GEOPORTALE.DownloadData("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=image&lang=it"))
            Dim Request As Net.HttpWebRequest = Net.HttpWebRequest.Create(String.Format("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=check&captcha={0}", InputBox("Inserisci il CAPTCHA", "Inserisci il CAPTCHA")))
            Dim tempCookies As New System.Net.CookieContainer
            Dim ACookie As New Net.Cookie
            ACookie.Name = "JSESSIONID"
            ACookie.Value = "43AF4AB8BC1472BD1632A805BEAC7D69.node2"
            ACookie.Domain = "geoportale.cartografia.agenziaentrate.gov.it"
            tempCookies.Add(ACookie)
            Request.CookieContainer = tempCookies
            Dim Response As Net.HttpWebResponse = Request.GetResponse()
            Dim Reader As IO.Stream = Response.GetResponseStream()
            Dim Buffer(8127) As Byte
            Dim BytesRead As Int32
            Dim stringa As String
            stringa = System.Text.Encoding.Default.GetString(Buffer)
            BytesRead = Reader.Read(Buffer, 0, Buffer.Length)
            Do While BytesRead > 0
                BytesRead = Reader.Read(Buffer, 0, Buffer.Length)
                stringa = System.Text.Encoding.Default.GetString(Buffer)
            Loop
            Reader.Close()
    
    cos la stringa in uscita proprio quel di cui ho bisogno!

  4. #4
    Sn0rky non  in linea Scolaretto
    Post
    343
    Like Inviati  
    1
    Like Ricevuti  
    0
    Perfetto... o quasi!
    avendo recuperato a mano il contenuto del cookie dovrei fare la stessa cosa via codice... ma non trovo la classe corretta per leggere i cookie da una chiamata http!
    mi basta recuperare un singolo valore, quello che nel codice scritto prima si chiama JSESSIONID
    trovo esempi in asp ma non riesco a tradurli in vbnet
    chi mi auta?

  5. #5
    L'avatar di SirJo
    SirJo non  in linea Scolaretto
    Post
    50
    Like Inviati  
    5
    Like Ricevuti  
    2
    La gestione dei cookie un bel problema, io ci ho sbattuto il naso pi di una volta, comunque per leggerli devi usare le API di windows.

    Ho provato comunque a navigare con il browser su https://geoportale.cartografia.agenziaentrate.gov.it e, dopo aver caricato la pagina, mi sono trovato sulla barra degli indirizzi questa cosa:
    https://geoportale.cartografia.agenz...AF.node2#/home

    La cosa mi sembrata molto strana, cio il JSESSIONID presente

  6. #6
    Sn0rky non  in linea Scolaretto
    Post
    343
    Like Inviati  
    1
    Like Ricevuti  
    0
    Quote Originariamente inviato da SirJo Visualizza il messaggio
    La gestione dei cookie un bel problema, io ci ho sbattuto il naso pi di una volta, comunque per leggerli devi usare le API di windows.

    Ho provato comunque a navigare con il browser su https://geoportale.cartografia.agenziaentrate.gov.it e, dopo aver caricato la pagina, mi sono trovato sulla barra degli indirizzi questa cosa:
    https://geoportale.cartografia.agenz...AF.node2#/home

    La cosa mi sembrata molto strana, cio il JSESSIONID presente
    ESATTO!!!!
    infatti sto cercando di "farglielo capire" da ieri... ti scrivo l'intero codice:
    System.Net.ServicePointManager.SecurityProtocol = System.Net.SecurityProtocolType.Tls12
            Dim GEOPORTALE As New System.Net.WebClient
            PictureBox1.Image = CreateImageFromBytes(GEOPORTALE.DownloadData("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=image&lang=it"))
            Dim Request As Net.HttpWebRequest
            Dim tempCookies As New System.Net.CookieContainer
            Dim cooooooookie As String
            Dim Request1 As Net.HttpWebRequest
            Request1 = Net.HttpWebRequest.Create("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/")
            Dim Response1 As Net.HttpWebResponse = Request1.GetResponse()
            cooooooookie = Split(Split(Response1.ResponseUri.ToString(), ";")(1).ToString, "=")(1).ToString
            Try
                Dim ACookie As New Net.Cookie With {
                    .Name = "JSESSIONID",
                    .Value = cooooooookie,
                    .Domain = "geoportale.cartografia.agenziaentrate.gov.it"
                }
                tempCookies.Add(ACookie)
                Request = Net.HttpWebRequest.Create(String.Format("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=check&captcha={0}", InputBox("Inserisci il CAPTCHA", "Inserisci il CAPTCHA")))
                Request.CookieContainer = tempCookies
                Dim Response As Net.HttpWebResponse = Request.GetResponse()
                Dim Reader As IO.Stream = Response.GetResponseStream()
                Dim Buffer(8127) As Byte
                Dim BytesRead As Int32
                Dim stringa As String
                stringa = System.Text.Encoding.Default.GetString(Buffer)
                BytesRead = Reader.Read(Buffer, 0, Buffer.Length)
                Do While BytesRead > 0
                    BytesRead = Reader.Read(Buffer, 0, Buffer.Length)
                    stringa = System.Text.Encoding.Default.GetString(Buffer)
                Loop
                Reader.Close()
                If Not stringa.Contains("{""result"":true,""token"":""") Then
                    MessageBox.Show("CAPTCHA errato o sessione non valida, riprovare ad inserire il captcha o richiederne uno nuovo", "ATTENZIONE")
                    Return
                Else
                    stringa = stringa.Replace("{""result"":true,""token"":""", String.Empty)
                    stringa = stringa.Replace(""",""message"":""""}", String.Empty)
                    MessageBox.Show(stringa)
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
    
    ma non funziona! o sono io che non capisco come dargli in paso i dati o non so... riesci ad aiutarmi? GRAZIE

  7. #7
    Sn0rky non  in linea Scolaretto
    Post
    343
    Like Inviati  
    1
    Like Ricevuti  
    0
    ho notato questo comportamento.... recuperando a mano il captcha e inserendolo brutalmente nel codice... NON FUNZINA
    con la stessa sessione dalla quale ho preso il cookie (che poi quello scritto nel primo url...) uso il sito facendo una ricerca poi torno sul programma e
    A QUESTO PUNTO il cookie inizia a "funzionare" son il sito che risponde "true" e quindi mi rilascia un token
    il problema che se devo avere un browser aperto tanto vale che tengo il codice cos com' da un anno (la versione attuale del programma usa un webbrowser)

  8. #8
    Sn0rky non  in linea Scolaretto
    Post
    343
    Like Inviati  
    1
    Like Ricevuti  
    0
    tra l'altro oggi JSESSIONID non compare pi nell'url... quindi il metodo di recuperarlo da l da escludere...
    io ho questo codice:
        Function GetPageWithCookie(ByVal PageUrl As String) As String
            Dim sb As New System.Text.StringBuilder
            Try
                Dim request As HttpWebRequest = WebRequest.Create(PageUrl)
                Dim newContainer As New Net.CookieContainer
                newContainer.Add(CookieList)
                request.CookieContainer = newContainer
                Dim response As HttpWebResponse = request.GetResponse()
                For Each rCookie As Cookie In CType(response, Net.HttpWebResponse).Cookies
                    Dim Found As Boolean = False
                    For Each pCookie As Cookie In CookieList
                        If pCookie.Name = rCookie.Name Then
                            pCookie.Value = rCookie.Value
                            Found = True
                            Exit For
                        End If
                    Next
                    If Not Found Then
                        CookieList.Add(rCookie)
                    End If
                Next
                Using reader As System.IO.StreamReader = New System.IO.StreamReader(response.GetResponseStream())
                    sb.Append(reader.ReadToEnd)
                End Using
                Return sb.ToString
            Catch ex As Exception
                Return ""
            Finally
                sb = Nothing
            End Try
        End Function
    
    che per funzionare... funziona!
    ma rimane impossibile (per me) far capire al sito che ho il cookie adatto e farmi accettare il captcha che invio con:
        Private Sub Button8_Click(sender As Object, e As EventArgs) Handles Button8.Click
            GetPageWithCookie("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=image&lang=it")
            ServicePointManager.SecurityProtocol = SecurityProtocolType.Tls12
            Dim GEOPORTALE As New WebClient
            PictureBox1.Image = CreateImageFromBytes(GEOPORTALE.DownloadData("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=image&lang=it"))
            Dim Request As HttpWebRequest
            Try
                Request = HttpWebRequest.Create(String.Format("https://geoportale.cartografia.agenziaentrate.gov.it/age-inspire/srv/ita/Captcha?type=check&captcha={0}", InputBox("Inserisci il CAPTCHA", "Inserisci il CAPTCHA")))
                Request.CookieContainer.Add(CookieList)
                Dim Response As HttpWebResponse = Request.GetResponse() 'alla seconda chiamata si blocca qui
                Dim Reader As IO.Stream = Response.GetResponseStream()
                Dim Buffer(8127) As Byte
                Dim BytesRead As Int32
                Dim stringa As String
                stringa = System.Text.Encoding.Default.GetString(Buffer)
                BytesRead = Reader.Read(Buffer, 0, Buffer.Length)
                Do While BytesRead > 0
                    BytesRead = Reader.Read(Buffer, 0, Buffer.Length)
                    stringa = System.Text.Encoding.Default.GetString(Buffer)
                Loop
                Response.Close()
                Response.Dispose()
                Reader.Close()
                If Not stringa.Contains("{""result"":true,""token"":""") Then
                    MessageBox.Show("CAPTCHA e rrato o sessione non valida, riprovare ad inserire il captcha o richiederne uno nuovo", "ATTENZIONE")
                    Return
                Else
                    stringa = stringa.Replace("{""result"":true,""token"":""", String.Empty)
                    stringa = stringa.Replace(""",""message"":""""}", String.Empty)
                    MessageBox.Show(stringa)
                End If
            Catch ex As Exception
                MessageBox.Show(ex.Message)
            End Try
        End Sub
    

    tra l'altro con le innumerevoli correzioni/riscritture mi sa che ho fatto casino... mi da nullreference su
    Request.CookieContainer.Add(CookieList)
    
    Ultima modifica di Sn0rky; 27-11-2020 11:12 

  9. #9
    L'avatar di SirJo
    SirJo non  in linea Scolaretto
    Post
    50
    Like Inviati  
    5
    Like Ricevuti  
    2
    ma hai provato il loro sistema di consultazione ??
    qui il PDF:
    https://www.agenziaentrate.gov.it/po...7-8f7567531660

  10. #10
    Sn0rky non  in linea Scolaretto
    Post
    343
    Like Inviati  
    1
    Like Ricevuti  
    0
    😁 ovvio che s! Il problema riuscire ad implementarlo e al momento volevo recuperare il vecchio codice che avevo gi scritto... Con il servizio wms vorrei utilizzare mapwingis ma anche scrivendo sul loro forum non ho trovato risposta ai miei dubbi... (Ho scritto anche qui una discussione, ma ovviamente molto di nicchia...)

+ Rispondi al messaggio
Pagina 1 di 4 123 ... ultimoultimo

Potrebbero interessarti anche ...

  1. Impedire accesso ad internet
    Da sistemista nel forum Microsoft Windows
    Risposte: 14
    Ultimo Post: 10-05-2018, 12:20
  2. [Freenas] accesso da internet
    Da dragone bianco nel forum Networking e sicurezza
    Risposte: 10
    Ultimo Post: 02-12-2011, 22:08
  3. Accesso tramite ssh ad un sito web
    Da artemis79 nel forum Networking e sicurezza
    Risposte: 3
    Ultimo Post: 19-01-2011, 10:20
  4. Accesso internet
    Da richmond89 nel forum Networking e sicurezza
    Risposte: 27
    Ultimo Post: 17-12-2009, 13:03
  5. Accesso ad Internet
    Da The Revolution nel forum Microsoft Windows
    Risposte: 5
    Ultimo Post: 17-09-2006, 21:26