PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : problem mit captcha



krusty
20.06.2010, 10:49
hey ho, ich habe ein problem mit dem captcha bei jappy...
das captcha wird über ein php script immer neu erstellt ,ähnlich wie bei icq... sobald man versucht das captcha zu laden, bekommt man ein anderes: http://www.jappy.de/captcha.php?1
http://www.jappy.de/captcha.php?1
(jeder sieht hier ein anderes captcher, ich sehe gerade zB XUG6)
hat jemand einen lösungsansatz... wie man genau das captcha laden könnte, was gerad angezeigt wird ?

würde mich über eine antwort freuen,
mfg Krusty

Southpark
20.06.2010, 10:51
Vielleicht aus den Temporären Dateien auslesen?

DizzY_D
20.06.2010, 11:13
Stichwort: OCR Texterkennung – Wikipedia (http://de.wikipedia.org/wiki/Texterkennung)

Du musst zuerst schauen, wie flexibel das Captcha ist. Das heißt welche Farbe, welche Schriftart, werden die Buchstaben verzerrt, werden sie gedreht, wieviele Buchaben minimal/maximal, werden Störungselemente eingestreut, wie stark variiert der Buchstabenabstand, etc.

Wenn du das alles weißt, kannst du anfangen dein Captcha-reader darauf abzustimmen.
An deiner Stelle würde ich mir erstmal ein Beispielcode in .NET anschauen, damit du schonmal das Grundgerüst verstehst. Die ganzen Abstimmungen musst du dann natürlich selber machen.

MfG DizzY_D

krusty
20.06.2010, 11:30
mein problem, ich kann das aktuelle captcha ja noch nicht mal laden, um es zu analysieren, weil es sich ständig ändert, durch ein php script neu erstellt wird.

blackberry
20.06.2010, 11:36
@krusty
Ich gehe davon aus, dass du diese bescheuerte WebBrowser-Komponente benutzt und dadurch das Bild einmal implizit von der WebBrowser-Komponente und einmal explizit von dir aufgerufen wird, was das Bild ändert, ja?

In dem Fall würe ich wohl zwei Dinge empfehlen:
1. WebBrowser in den Müll schmeißen und mit Sockets oder HTTP-Requests arbeiten
2. (Noob-Variante; Mit dem Kopf durch die Wand) Laden von Bildern in der WebBrowser-Komponente temporär abstellen (--> Google; hab mal geschaut... da muss man scheinbar einen Registry-Eintrag verändern, was Adminrechte benötigt)

krusty
20.06.2010, 12:06
ich arbeite mit der webrequest klasse, eine neue zu schreiben äre überflüssig. ich bekomme einen einfachen img tag, dessen source-attribut mich zum php script führt, welches mir dann irgendwas ausgibt.

inout
20.06.2010, 12:56
ich arbeite mit der webrequest klasse, [...]
Dann sollte es aber doch kein Problem sein?
Du musst dann halt nur nachdem du den Quelltext der Seite empfangen hast, das Captcha genau ein einziges mal empfangen und dabei evtl. Session-Cookies, Referer o.Ä. mit übergeben.
Du kannst den Request ja genau so nachbauen, wie ein Browser dies tut, dann bist du auf der sicheren Seite ;)

krusty
27.06.2010, 20:59
das ist mein momentaniger quellcode
die funktion gibt:
1 wenn alles geklappt hat
0 wenn ein Fehler aufgetreten ist
-1 wenn ein Captcha vorhanden ist

ich kenne mich leider nicht soo gut mit dem Zeug aus. Ich glaube in den Cookies werden bestimmte strings übergeben, die ich beim betrachten des captchas behalten muss, vlt kann ja mal jemand drüber schauen =)



Public Function GBEintrag(ByVal Name As String, ByVal Text As String) As Integer
Try
Dim rq As HttpWebRequest = CType(WebRequest.Create("http://www.jappy.de/user/" & Name & "/gb"), HttpWebRequest)
rq.CookieContainer = Coocki_C
rq.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.2.4) Gecko/20100611 Firefox/3.6.4"
rq.Method = "POST"
Text = Text.Replace(" ", "+")
rq.ContentType = "application/x-www-form-urlencoded"
Dim PostString As String = "gb%5Bts%5D=1277037044&gb%5Bkey%5D=9622effe165f076a1c9ad1b6687ad018&gb%5B9622effe165f076a1c9ad1b6687ad018%5D%5Btext%5D =" & Text & "+%3D%29"
Dim b() As Byte = Encoding.UTF8.GetBytes(PostString)
rq.ContentLength = b.Length
Dim DS As Stream = rq.GetRequestStream()
DS.Write(b, 0, b.Length)
DS.Close()
Dim reader As New StreamReader(rq.GetResponse.GetResponseStream())
Dim Quellcode As String = reader.ReadToEnd()
reader.Close()
DS.Close()
rq.GetResponse.GetResponseStream.Close()
' My.Computer.Clipboard.SetText(ServerResponse)
If InStr(Quellcode, "Captcha") Then
Return -1
Else
Return 1
End If
Catch ex As Exception
Return 0
End Try
End Function

Th3_Cr4xX
27.06.2010, 21:09
Weiß nicht ob man das so einfach bypassen kann, muss zugeben ich hab keine ahnung von httprequest

krusty
27.06.2010, 21:14
habe ich schon versucht mit nem relog, anderem useragent, hat nicht funktioniert...

Koffein
16.07.2010, 10:12
**noob antwort ink** verstehe ich das richtig das du probleme hast an das captcha ranzukommen? also wenn ich das bild speicher hab ich genau das bild was ich vor mir sehe und kann es dann belibig bearbeiten o.O

Adoppelgroberlin
26.08.2010, 16:45
also wenn du noch mal mal nen jappy bot codest, helfe ich dir mit den captcha.....

würde dir ne .ftb machen, dazu braucht man finereader 8 ;)

die .ftb benutzt du dann in deinem bot :P

AgainsT
26.08.2010, 22:41
das kriegst du nie hin... oder du schreibst ne anti-captcha Klasse, denn so weit ich weiß gibt es keine (gute) in .NET. Die kannste aber viel besser legal für vieeel Geld verkaufen.

Bei großen Botnets läuft das soweit ich weiß häufig so, dass die Bots das Bild an so einen extra Server schicken und dieser das dann mit einer öffentlichen anti-captcha Lib (meist in C++) erkennt und antwortet.

Adoppelgroberlin
27.08.2010, 22:08
das kriegst du nie hin... oder du schreibst ne anti-captcha Klasse, denn so weit ich weiß gibt es keine (gute) in .NET. Die kannste aber viel besser legal für vieeel Geld verkaufen.

Bei großen Botnets läuft das soweit ich weiß häufig so, dass die Bots das Bild an so einen extra Server schicken und dieser das dann mit einer öffentlichen anti-captcha Lib (meist in C++) erkennt und antwortet.


was bekomme ich nie hin ?

ne .ftb mit den captcha`s ?