[C#] Mit einer Website interagieren

01/14/2014 14:06 Corthez#1
Hallo,
folgender Fall ist gegeben:
Ich habe eine Website mit einem Registrierungsformular.
Unter anderem muss eine ...
  • Eine Checkbox angehakt werden
  • Ein Captcha ausgefüllt werden
  • Ein Username, Passwort sowie eine e-mail angegeben werden

Das ganze habe ich bis dato echt billig gelöst:
Ein unsichtbares Browsercontrol, über dass ich mir den Quelltext der Seite in einen String lade und dann per DOM-Parser, die verschiedenen für mich wichtigen Elemente finde und schlussendlich über das Webcontrol die Klicks und Tastendrücke simuliere.

Für das Captcha habe ich das Browsercontrol auf visible gesetzt, die Position auf die des Captcha gesetzt und das Control auf dessen Größe minimiert, sodass man nur das Bild gesehen hat und der User dieses selber eintippen musste.
Hier fiel mir kein anderer Weg ein, weil man unter anderem nicht direkt an das Captcha als Bild kommt.
Rechtsklick -> Element untersuchen, zeigt mir leider nur den Pfad zu einer php Datei.

Was würdet ihr mir hier empfelen? Man hört überall nur, dass Browsercontrols langsam und generell eher keine gute Praktik sind.

Ich danke schonmal für alle Antworten :)
01/14/2014 14:13 tolio#2
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
[Only registered and activated users can see links. Click Here To Register...]
01/14/2014 14:24 beefm4ker#3
Mit HttpWebrequests,

Ich hab hier mal ein Beispiel gefunden wie du das Captcha gucken kannst:

im Hauptprogramm dann erst den get request auf die Seite, dann per Regex den Returnwert nach der CaptchaURL parsen und dann die CaptchaUrl in getImage() schicken.

Das Bild kannst du dir dann in einer Picturebox oder so anzeigen lassen.

Ich hoffe ich konnte dir einen Hinweis geben.
01/16/2014 08:41 Corthez#4
Aaaalso,
Registrierungspage per GET aufrufen
Cookies speichern
Captcha URL mit GET und den vorherig gespeicherten Cookies aufrufen
Registrierungspage per POST aufrufen (noch immer der selbe cookiecontainer) und alle Parameter übergeben

Klappt alles super :)
Vielen dank an die beiden Antworten!