|
| Autor |
Nachricht |
bluespoon Newbie

Anmeldedatum: 25.05.2008 Beiträge: 11
|
Grafik-Captcha laden?
Verfasst am: 21.07.2008, 00:09 |
|
|
Hallo,
ich programmiere gerade ein Upload-Tool für ... aehm ... bestimmte Download-Seiten Also ein Programm, welches ein paar Grundeingaben erfordert und dann je nach Benutzerauswahl auf vielen verschiedenen Downloadseiten einträgt. Also die Angaben via HTTP POST übergeben ist kein Thema, das Auswerten und Aufteilen/Zusammenstellen der gemachten Angaben für verschiedene CMS-Systeme auf den Seiten auch net. Funktioniert prima. Zumindest funktioniert mien Tool schonmal bei ein paar Seiten 
Aber: Einige dieser Seiten benutzen ein Grafik-Captcha, welches natürlich korrekt ausgefüllt werden muss, damit das Formular gesendet werden kann. Ich frage mich nun, wie ich das ganze angehe. Meine Überlegung ist, die entsprechende Seite einmal auszulesen und das Captcha-Bild in einer Picturebox darzustellen. Dann könnte man es ja einfach abtippen.
Problem: Wenn ich dann das Formular via HTTP POST ausgefüllt absende stimmt der Captcha Code net mehr. Ich bin momentan ziemlich ratlos ... mir schwirren schon so wirre Dinge durch den Kopf wie, "Anfangen zu senden und stoppen um den Captchacode einzugeben und anschließend weitersenden" 
So, ich hoffe ich hab' mein Problem einigermaßen verständlich geschildert und jemand hier im Forum ist so nett und kann mir weiterhelfen.
Und: Die meisten dieser besagten Seiten benutzen das Underground CMS. Vielleicht ist das ja noch interessant bei der Lösung.
Gruß und vielen Dank schon einmal für den Gedankenschmalz,
Patrick |
|
| |
|
 |
sollniss Überflieger

Anmeldedatum: 01.05.2008 Beiträge: 699
|
Verfasst am: 21.07.2008, 00:18 |
|
|
| Ich glaub, da musst du, wohl oder übel, die Webbrowsercontrol nehmen. :/ |
|
| |
|
 |
bluespoon Newbie

Anmeldedatum: 25.05.2008 Beiträge: 11
|
Verfasst am: 21.07.2008, 00:27 |
|
|
Wie meinst Du das? Die Seite (den Uploadbereich) dort hineinladen und dann? Also es ist ja so ... wenn ich das entsprechende Uplodformular meinetwegen in 2 Tabs lade (im Browser), im ersten mache ich meine Eingaben und nehme das Captcha aus dem zweiten Tab ... dann funktioniert es net, weil der Code ja net zum geladenen Bild im ersten Tab passt.
Und genau das Gleiche ist es doch auch, wenn ich die Seite parallel mit dem WBControl lade, oder!? Also die Daten müssen jedenfalls via POST übergeben werden. Da führt gar kein Weg dran vorbei ... hatte nämlich effektiv 30 Seiten geplant 
Edit: Wie ich den Quellcode einer Seite auslese weiß ich. Aber das hat mich bis jetzt net weitergebracht [img]/sad.gif[/img] Sag mal ... wie geht das  |
|
| |
|
 |
sollniss Überflieger

Anmeldedatum: 01.05.2008 Beiträge: 699
|
Verfasst am: 21.07.2008, 01:20 |
|
|
Das mit den Captchas wird doch über Cookies geregelt oder? Da kannste POST vergessen.  |
|
| |
|
 |
bluespoon Newbie

Anmeldedatum: 25.05.2008 Beiträge: 11
|
Verfasst am: 21.07.2008, 01:29 |
|
|
Oh ... da bin ich mir jetzt gar net sicher. Cookies, Sessions oder über den Dateinamen. Wenn der erzeugt wird, könnte da ja auch der Code drin stecken. Bin zwar kein Analytiker, aber das halte ich jetzt mal für am wahrscheinlichsten.
Hier, die können das auch: Nur eben mit ein paar wenigen Standardfeldern ... sind wohl ein wenig faul :p http://spread.myopen.biz/index.php (Upload Engine). Ich hab's allerdings net geschafft mich dort durch den Code zu kämpfen [img]/sad.gif[/img] Wenn man dort auf das erste Kästchen bei den Seiten (etwas weiter unten, erster Eintrag) klickt, dann erscheint ja das Captcha. Allerdings gibt's da noch viele Fehler. Auch bei den Seiten ohne Captcha :p |
|
| |
|
 |
Marduk Überflieger

Anmeldedatum: 16.04.2008 Beiträge: 374
|
Verfasst am: 21.07.2008, 09:22 |
|
|
Quatsch, Klar kann man Cookies mit POST senden. Und man kann das ganze auch mit den Sockets erledigen, man braucht dazu kein WEbbrowser.
Hast du dir denn schon mal die POST Data beim Senden angeguckt.Da müsstest du beim Senden neben dem Captcha und deinen Daten des Ups auch irgendwo ein Sessionhash o.ä dabei sein. Wenn du das aktuelle Captcha lädst, ist im Quelltext auch eine Sessionid mitangegeben, meistens im gleichen form-Tag. Die Session musst du nur mitschicken und schon sollte es gehen |
|
| |
|
 |
bluespoon Newbie

Anmeldedatum: 25.05.2008 Beiträge: 11
|
Verfasst am: 21.07.2008, 16:32 |
|
|
(Marduk;5805) Quatsch, Klar kann man Cookies mit POST senden. Und man kann das ganze auch mit den Sockets erledigen, man braucht dazu kein WEbbrowser.
Hast du dir denn schon mal die POST Data beim Senden angeguckt.Da müsstest du beim Senden neben dem Captcha und deinen Daten des Ups auch irgendwo ein Sessionhash o.ä dabei sein. Wenn du das aktuelle Captcha lädst, ist im Quelltext auch eine Sessionid mitangegeben, meistens im gleichen form-Tag. Die Session musst du nur mitschicken und schon sollte es gehen |
Aber wie bekomme ich die im Voraus raus? Ich lade die Seite ja net. Also Du hast mich jetzt auf die Idee gebracht, den Quelltext einmal vorher auszulesen, das Captcha in einer Picbox darzustellen, die SessionID dem Imagenamen zu entnehmen und beim Senden der Daten - das Captcha wird kurz vor dem Senden zur aktuell verarbeiteten Seite angezeigt - dann die entsprechende Session mitzuschicken!? Das muss ich nachher gleich mal ausprobieren 
Also bis jetzt hab' ich es noch net hinbekommen. Ich probiere jetzt erst einmal das Underground CMS auf meinem Server zum Laufen zu bringen. Das Captcha will aber net. Wenn sich hier bis dahin nichts tut, werde ich mich auf jeden Fall melden, wenn ich es geschafft habe ... oder eben net geschafft habe [img]/ohmy.gif[/img]
Ich bin mir immer noch net im Klaren, wie ich mit dieser ID umgehen soll. Ich kämpfe mich gerade durch den Quellcode des CMS.
Visual Basic: [code] [/code]
Aber ich versuche es mal weiter ... bis hierhin erst einmal vielen Dank  |
|
| |
|
 |
^^kev#### Überflieger

Anmeldedatum: 01.05.2008 Beiträge: 476 Wohnort: Haan
|
Verfasst am: 22.07.2008, 12:37 |
|
|
Ich hab gestern auch was in VB .NET gemacht, wo ich ein Captcha lade und dann später mitsenden musst. Das Captcha ging per Session ID. Also ich musste die SessionID auslesen, die ich bekommen hatte, wo ich das Captcha geladen hab und dann am Ende, wenn ich den Text zum Captcha mitsende, wieder mitsenden. Ich kann dir den Source gerne mal Posten, ist allerdings .NET xD Aber vllt hilft es ja .NET Leuten die auch mal sowas vorhaben.
Visual Basic: [code] Dim SessionID As String
Private Function GetImage(ByVal sURL As String) As Image
Try
Dim Cookie = New CookieContainer
Dim oRequest As HttpWebRequest = WebRequest.Create(sURL)
oRequest.Method = "GET"
oRequest.CookieContainer = Cookie
Dim oResponse As WebResponse = oRequest.GetResponse()
Application.DoEvents()
Dim oStream As New StreamReader(oResponse.GetResponseStream())
Dim oImg As Image = Image.FromStream(oStream.BaseStream)
SessionID = Split(Cookie.GetCookieHeader(New System.Uri(sURL)), "=")(1)
oStream.Close()
oResponse.Close()
Return oImg
Catch ex As Exception
Return Nothing
End Try
End Function[/code]
Visual Basic: [code] Private Function GetSourceCodePost(ByVal url As String, ByVal postdata As String) As String
Dim data() As Byte = System.Text.Encoding.ASCII.GetBytes(postdata)
Dim req As HttpWebRequest = CType(WebRequest.Create(url), HttpWebRequest)
Dim Cookie = New CookieContainer
Dim CookieSessionID As New Cookie("PHPSESSID", SessionID, "/", "URL") < URL = zB google.de
Cookie.Add(CookieSessionID)
req.Method = "post"
req.ContentType = "application/x-www-form-urlencoded"
req.ContentLength = data.Length
req.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7"
req.CookieContainer = Cookie
Dim dataStream As Stream = req.GetRequestStream()
dataStream.Write(data, 0, data.Length)
Dim res As HttpWebResponse = CType(req.GetResponse, HttpWebResponse)
Dim str As New StreamReader(res.GetResponseStream)
Return str.ReadToEnd()
End Function[/code]
|
|
| |
|
 |
bluespoon Newbie

Anmeldedatum: 25.05.2008 Beiträge: 11
|
Verfasst am: 22.07.2008, 20:05 |
|
|
Na klar, vielen Dank! Damit sollte ich doch etwas anfangen können. Wenn's auch .net ist, kann ich mir ja trotzdem ansehen, wie Du's gemacht hast  |
|
| |
|
 |
|
|