VB.NET Captcha auslesen

03/26/2014 07:42 Jutu#1
Guten morgen Community.

Ich habe seit einiger Zeit ein Problem. Ich bräuchte für ein Programm eine funktion die ein nicht statisches Captcha ausliest und in einer PictureBox wiedergibt.

Ich habe schon in vielen Foren gelesen das die mit RegEx funktionieren soll. Leider habe ich mich seit über einem Jahr nicht mit VB.NET beschäftigt und RegEx habe ich davor auch nie gehört. Daher habe ich null Plan von dem Kram.

Vielleicht gibt es ja auch noch eine andere Variante. Außerdem habe ich gelesen das das Programm (aus irgendeinem Grund) die Cookies speichern muss. Leider hab ich davon auch wenig Ahnung bzw. es sagt mir nichts. :P

Ich hoffe das jemand sich bereit erklärt mir zu helfen. Vielleicht gibt es als Dankeschön dann auch eine kleine Belohnung ;)

MfG Jutu

ps.

Captcha aus dem HTML Quellcode

03/26/2014 07:45 Mostey#2
OCR ? Wikipedia

+

[Only registered and activated users can see links. Click Here To Register...]

Gab es auch schon oft genug hier, benutze einfach mal die Suchfunktion.
03/26/2014 10:05 tolio#3
captchas sind immer nicht statisch, das ist der sinn der sache...

so oder so, in der regel macht man das so: die seite mit webrequest aufrufen, den captchalink rauslesen, die captcha mit dem selben cookiecontainer aufrufen und das resultierende byte array als bild speichern und gegebenenfalls anzeigen
03/26/2014 12:36 qkuh#4
Quote:
Originally Posted by Mostey View Post
OCR ? Wikipedia

+

[Only registered and activated users can see links. Click Here To Register...]

Gab es auch schon oft genug hier, benutze einfach mal die Suchfunktion.
Erst lesen dann posten ;)
Mein Vorposter hat schon alles relevante gesagt :)
03/26/2014 13:41 Jutu#5
Quote:
Originally Posted by tolio View Post
captchas sind immer nicht statisch, das ist der sinn der sache...

so oder so, in der regel macht man das so: die seite mit webrequest aufrufen, den captchalink rauslesen, die captcha mit dem selben cookiecontainer aufrufen und das resultierende byte array als bild speichern und gegebenenfalls anzeigen
Das klingt ja schonmal ganz gut. Dennoch habe ich null Plan wie ich das anstellen soll. Klar, ich kann jetzt den ganzen Tag googlen und hab dann vielleicht in ein paar Stunden meine Lösung - oder nicht. Nur wäre es mir ganz lieb wenn mir jemand hier direkt hilft. Das heißt nicht das ich einen C&P Code möchte. Vielleicht kleine Anhaltspunkte mit Beispielen.

MfG
03/26/2014 13:45 YatoDev#6
Quote:
Originally Posted by Jutu View Post
Das heißt nicht das ich einen C&P Code möchte. Vielleicht kleine Anhaltspunkte mit Beispielen.

MfG
Was dann ? Du hast genug anhaltspunkte.....

Das thema wurde auch schon gefühlte 1 mio mal behandelt.
Bei google gibts sogar sofort lösungen ich weis nicht wo dein problem ist.

RegEx sind Reguläre ausdrücke womit man z.b. aus deinem html code den link bekommen kann
03/26/2014 13:50 tolio#7
regex ist nicht ganz einfach, hier aber auch nicht zwingend notwendig.
naja also hier nochmal mein erster post als google anweisungen formuliert.
1. "vb.net webrequest"
2. "vb.net string get between"
3. "vb.net webrequest image"

zusammenwerfen - fertig.
03/26/2014 14:12 Jutu#8
Quote:
Originally Posted by »FlutterShy™ View Post
Was dann ? Du hast genug anhaltspunkte.....

Das thema wurde auch schon gefühlte 1 mio mal behandelt.
Bei google gibts sogar sofort lösungen ich weis nicht wo dein problem ist.

RegEx sind Reguläre ausdrücke womit man z.b. aus deinem html code den link bekommen kann
Ja, das mag ja sein. Ich hab letzte Nacht auch ein paar Stunden gegoogelt. Ich kam aber mit diesem wirren RegEx Code null zurecht. Ist ja nicht so das ich nicht gegoogelt habe..

Quote:
Originally Posted by tolio View Post
regex ist nicht ganz einfach, hier aber auch nicht zwingend notwendig.
naja also hier nochmal mein erster post als google anweisungen formuliert.
1. "vb.net webrequest"
2. "vb.net string get between"
3. "vb.net webrequest image"

zusammenwerfen - fertig.
Ich weiß auch nichtmal wo sich das Captcha in dem Quellcode befindet.
03/26/2014 15:20 Mostey#9
Quote:
Originally Posted by qkuh View Post
Erst lesen dann posten ;)
Mein Vorposter hat schon alles relevante gesagt :)
Ist mir eben erst aufgefallen, ich dachte das es (mal wieder) um Captchaerkennung geht. Sorry.

Quote:
Originally Posted by Jutu View Post
Ja, das mag ja sein. Ich hab letzte Nacht auch ein paar Stunden gegoogelt. Ich kam aber mit diesem wirren RegEx Code null zurecht. Ist ja nicht so das ich nicht gegoogelt habe..



Ich weiß auch nichtmal wo sich das Captcha in dem Quellcode befindet.
Natürlich weißt du wo der Captcha ist, du hast uns doch den HTML Code geposted? Mittels regulären Ausdrücken oder einem XML Parser kannst du den Link zu dem Bild rausholen und herunterladen, anschließend dann anzeigen.

Code:
<img id="recaptcha_challenge_image" width="300" height="57" src="http://www.google.com/recaptcha/api/image?c=03AHJ_VuuQEq6CcSJQOpujkJrQyuEE8L_Vv46HlOk6RPjJhXfoQjZPA4HZxSNXQR5L4UHiIAXY9DVHR6IolVHre5lrCbtGb1gK-N3we8QKSogoUZAv6901lpW5gyffaiHE8MApk8mPID-M_OugnQXW7CUmlgBVljsoO-vEB0-RJWt6FcmAZ-eNykn0qOJuKS8KtFFISc-F1FF6V0KHDJB0u0V3hPyIpK70Wjb2x05T0yGwzdp7-pVjLTbXNd3JmiOiYLe5I8tMCrdV" alt="reCAPTCHA-Bild">
Kopier mal den Link raus und ruf die Seite mal in deinem Browser auf. ;)

[Only registered and activated users can see links. Click Here To Register...] übrigens als erstes Ergebnis. Ich glaube dir nicht, das du mehrere Stunden danach gesucht hast.
03/31/2014 08:51 PC Jones#10
Code:
Dim pageSource As String = "" ' Hier die erste GET-Anfrage auf die Seite mit dem Captcha
Dim r As New Regex("www.google.com/recaptcha/api/challenge\?k=(.*?)""")
Dim m As Match = r.Match(Quellcode)
Dim publicKey As String = m.Groups(1).Value

pageSource = request.WebRequestGet(cookieCon, "https://www.google.com/recaptcha/api/challenge?k=" & publicKey, useragent, "Referer")
r = New Regex("challenge : '(.*?)',")
m = r.Match(srccode)
Dim challengeKey As String = m.Groups(1).Value 'captcha "id"
Dim imgCaptcha As System.Drawing.Image = System.Drawing.Image.FromStream(request.WebRequestResponseStreamGet(cookieContainer, "https://www.google.com/recaptcha/api/image?c=" & challengeKey, useragent, "Referer"))

' imgCaptcha kannst du jetzt z.B. einer Picturebox zuordnen
Lg :)
03/31/2014 23:31 Jutu#11
Hatte sich schon von selbst gelöst, aber trotzdem danke.