-
20. 01. 2010, 21:57 #1Mitglied
- Registriert seit
- Jul 2009
- Beiträge
- 9
[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
-
20. 01. 2010, 22:21 #2Great Wizzard
- Registriert seit
- Nov 2009
- Ort
- Unseen University
- Beiträge
- 253
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.
-
20. 01. 2010, 22:41 #3Mitglied
(Threadstarter)
- Registriert seit
- Jul 2009
- Beiträge
- 9
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
-
20. 01. 2010, 23:06 #4Mitglied
- Registriert seit
- Feb 2009
- Ort
- Köln
- Beiträge
- 125
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.
-
22. 01. 2010, 21:46 #5Mitglied
(Threadstarter)
- Registriert seit
- Jul 2009
- Beiträge
- 9
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

-
23. 01. 2010, 09:10 #6
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 FunctionGeändert von Pandabaehr (23. 01. 2010 um 10:47 Uhr) Grund: Code hinzugefügt
-


Zitieren
mehr lesen...







FoWL: Unterstützungserklärung für...
Heute, 12:14 in gulli:news