Ergebnis 1 bis 6 von 6
  1. #1
    Mitglied
    Registriert seit
    Jul 2009
    Beiträge
    9

    Standard [VB2008/2010] Captcha aus HTML Id auslesen

    heii gullianer
    Ich habe mal 2 Fragen:

    1.

    Ich habe eine ID von einem Capthca

    Hier mal der HTML Code Auszug
    <td style="padding-left: 7px;" valign="top" width="225"><img id="captchaimg" class="bh" src="/Captcha/img.1F56857442D22F5E05DE82E2494E5F89.a01a02d40t12_-757009621.jpg;jsessionid=1F56857442D22F5E05DE82E2494E5F89.a01a02d40t12?id=1 F56857442D22F5E05DE82E2494E5F89.a01a02d40t12_-757009621" alt="" border="0" height="50" width="220"></td>

    Ich will das Captcha nicht irgendwie umgehen, sondern nur in meiner Form anzeigen lassen!


    2.

    Wenn man bei einer Website auf einen Button drückt gibt es 2 Möglichkeiten, entweder es kommt Bild1, oder Bild2.

    Von dem Bild wiederum habe ich keine ID sondern nur den Link von dem Bild. Kann man das irgendwie so machen das der den HTML Code scannt welches Bild angezeigt wird?

    Wäre echt nett wenn mir jemand helfen könnt

    MfG Lukas

  2. #2
    Great Wizzard
    Registriert seit
    Nov 2009
    Ort
    Unseen University
    Beiträge
    253

    Standard Re: [VB2008/2010] Captcha aus HTML Id auslesen

    1. Schon mal mit Wireshark mitgesnifft? Du holst das Bild einfach per Webrequest, den Pfad zum Bild und die jsessionid filterst du per RegEx heraus.

    2. Hä? Ich verstehe nicht so ganz, was du willst.

  3. #3
    Mitglied

    (Threadstarter)


    Registriert seit
    Jul 2009
    Beiträge
    9

    Standard Re: [VB2008/2010] Captcha aus HTML Id auslesen

    1. Ich checke das nicht ganz, RegEx habe ich schon mal gelesen, habe es aber nie kappiert, deswegen habe ihc ja in ein Forum geschrieben,willl das vl jemand erklären oder n codebeispiel geben ? Das gucke ich mir dann immer an, und irwann kann ich dass dann auch

    zu 2.
    Bei web.de kann man ja bei der Regestration überprüfen ober es die Mail scon gibt,
    Wenn es sie schon gibt, erscheint bild1 (auch dann erst im html code!!!) und wenn nicht dann erscheint bild2 (Auch das bild ERST Nachdem man auf den Button zum überprüfem geklickt hat)
    Nun will ich wissen wie man den Code so scannt das man weiss welches bild nun kam

    MfG Lukas

  4. #4
    Mitglied
    Registriert seit
    Feb 2009
    Ort
    Köln
    Beiträge
    125

    Standard Re: [VB2008/2010] Captcha aus HTML Id auslesen

    Bei deiner zweiten Frage wird es sich genauso verhalten wie bei dem Captcha. Das ist es ja eigenlich auch.

    Schau mal im Netz zu RegEx (Suchfunktion). Da gibt es jede menge Tutorials. Ich glaube es gibt sogar extra ein Buch dazu. Bin mir aber jetzt nicht ganz sicher.

  5. #5
    Mitglied

    (Threadstarter)


    Registriert seit
    Jul 2009
    Beiträge
    9

    Standard Re: [VB2008/2010] Captcha aus HTML Id auslesen

    Ich such mal ein bisschen, wenn aber doch noch jemand ein Beispiel direkt hierzu schreiben will, kann er es machen

  6. #6
    Mitglied Avatar von Pandabaehr
    Registriert seit
    Sep 2009
    Beiträge
    430

    Standard Re: [VB2008/2010] Captcha aus HTML Id auslesen

    Ein Beispiel kann jemand ja erst schreiben, wenn er weis um welche Seite es sich handelt "webb,de -> freemail"

    Log mal mit dem Firefox-Addon "Tamper Data", was an Referren und Cookies gesendet wird. Dadurch wirst du auch an das entsprechende Bild kommen, um es in deiner Anwendung einbauen zu können.

    Edit:
    So habe mich mal 30 Minuten hingesetzt.
    Das ist sicher nicht perfekt aber erfüllt ganz den Zweck.
    Das Captcha wird heruntergeladen und dann kannst du es als Bildquelle für eine PictureBox benutzen.

    Code:
        ''' <summary>
        ''' For educational purpose only
        ''' </summary>
        ''' <param name="sender"></param>
        ''' <param name="e"></param>
        ''' <remarks></remarks>
        Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
            Dim jSessionId As String
            jSessionId = GetPHPSessionID("https://...LinkzurAnmeldung...")
    
        End Sub
    
    
        Public Function GetPHPSessionID(ByVal WebsiteUrl As String) As String
            Dim Request As Net.HttpWebRequest
            Dim Response As Net.HttpWebResponse
            Dim str As IO.Stream
    
            Request = Net.WebRequest.Create(WebsiteUrl)
            Request.Method = "GET"
            Request.Accept = "*/*"
    
            Response = Request.GetResponse
            str = Response.GetResponseStream()
    
            'Den Cookie auslesen
            Dim strResponse As String = Response.Headers("set-cookie")
            If strResponse.IndexOf("JSESSIONID=") > -1 Then
                strResponse = strResponse.Substring(strResponse.IndexOf("JSESSIONID=") + 11)
                strResponse = strResponse.Substring(0, strResponse.IndexOf(";"))
            End If
    
            'Den Quelltext der Seite auslesen
            Dim strResponseContent As String = New IO.StreamReader(Response.GetResponseStream()).ReadToEnd()
            AnalyseWebsite(strResponseContent, strResponse)
        End Function
    
        Private Sub AnalyseWebsite(ByVal strWebsite As String, ByVal strSessionid As String)
            Dim intPosition As Integer = strWebsite.IndexOf("<img id=" & Chr(34) & "captchaimg" & Chr(34) & " class=" & Chr(34) & "bh" & Chr(34) & " src=")
            Dim strResponse As String
    
            'Den Bildpfad heraussuchen
            If intPosition > -1 Then
                strResponse = (strWebsite.Substring(intPosition + 37, strWebsite.IndexOf(Chr(34), intPosition + 37) - intPosition - 37))
    
                'Lokal herunterladen
                Dim read As Integer = DownloadFile("https://....Siehe Tamper Data" + strResponse, "C:\test.jpg", strSessionid, "https://...selberausfüllen...")
               
            End If
        End Sub
    
        ' Die Downloadfunktion ist nicht von mir, sondern irgendwo aus dem Internet
        Public Shared Function DownloadFile(ByVal remoteFilename As String, ByVal localFilename As String, ByVal strSessionId As String, ByVal strReferer As String) As Integer
            ' Function will return the number of bytes processed
            ' to the caller. Initialize to 0 here.
            Dim bytesProcessed As Integer = 0
    
            ' Assign values to these objects here so that they can
            ' be referenced in the finally block
            Dim remoteStream As Stream = Nothing
            Dim localStream As Stream = Nothing
            Dim response As WebResponse = Nothing
    
            ' Use a try/catch/finally block as both the WebRequest and Stream
            ' classes throw exceptions upon error
            Try
                ' Create a request for the specified remote file name
                Dim request As HttpWebRequest = WebRequest.Create(remoteFilename)
                request.Referer = strReferer
                Dim def As New CookieContainer
                Dim abc As New Cookie
                abc.Domain = "..."  ' Siehe Tamper-Data
                abc.Name = "JSESSIONID"
                abc.Value = strSessionId
                abc.Path = "/"
                def.Add(abc)
                request.CookieContainer = def
    
                If request IsNot Nothing Then
                    ' Send the request to the server and retrieve the
                    ' WebResponse object
                    'request.Headers.Add(HttpRequestHeader.Referer, strReferer)
                    'request.Headers.Add(HttpRequestHeader.Cookie, "JSESSIONID=" + strSessionId)
                    response = request.GetResponse()
                    If response IsNot Nothing Then
                        ' Once the WebResponse object has been retrieved,
                        ' get the stream object associated with the response's data
                        remoteStream = response.GetResponseStream()
                        'Form1.PictureBox1.Image.FromStream(remoteStream)
                        ' Create the local file
                        localStream = File.Create(localFilename)
    
                        ' Allocate a 1k buffer
                        Dim buffer As Byte() = New Byte(1023) {}
                        Dim bytesRead As Integer
    
                        ' Simple do/while loop to read from stream until
                        ' no bytes are returned
                        Do
                            ' Read data (up to 1k) from the stream
                            bytesRead = remoteStream.Read(buffer, 0, buffer.Length)
    
                            ' Write the data to the local file
                            localStream.Write(buffer, 0, bytesRead)
    
                            ' Increment total bytes processed
                            bytesProcessed += bytesRead
                        Loop While bytesRead > 0
                    End If
                    MsgBox("Finished")
                End If
            Catch e As Exception
                Console.WriteLine(e.Message)
            Finally
                'Close the response and streams objects here
                'to make sure they're closed even if an exception
                'is thrown at some point
                If response IsNot Nothing Then
                    response.Close()
                End If
                If remoteStream IsNot Nothing Then
                    remoteStream.Close()
                End If
                If localStream IsNot Nothing Then
                    localStream.Close()
                End If
            End Try
    
            ' Return total bytes processed to caller.
            Return bytesProcessed
        End Function
    Geändert von Pandabaehr (23. 01. 2010 um 10:47 Uhr) Grund: Code hinzugefügt

  7.  
     
     

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •