[CAPTCHA] Pixel von minimierten Fenster bekommen?

Hallo,
Ich habe vor kurzem einen Bot für eine Internetseite programmiert. Der Bot geht alle 2 Minuten einen "Prozess" durch. Dieser sogenannte "Prozess" beinhaltet Cursorbewegungen, Texteingaben und das Lösen eines Captchas. Aufgrund der Tatsache, dass dieser Prozess in einem relativ kurzen Intervall abläuft hab ich das so geregelt, dass alles minimiert abläuft und ich nebenbei noch surfen kann. Cursorbewegungen und Texteingaben kann ich ja mittels der Funktion SendMessage() erledigen. Das Lösen des Captchas ist an und für sich auch einfach (Die Captchas sind ein Witz :D ). Es macht mir mehr Probleme das Captcha einzulesen, wenn das Zielfenster minimiert ist. Am Anfang hatte ich schon Probleme damit die Pixel des Zielfensters mit der Funktion GetPixel() zu kriegen, wenn das Fenster net im Vordergrund ist. Das konnte ich dann mit der Funktion PrintWindow() hinkriegen. Das nervt jedoch etwas, da dafür das Fenster immer maximiert sein muss. Ich hab jetz noch so nen Check einprogrammiert mit IsIconic() um zu prüfen ob das Zielfenster maximiert ist oder nicht und es dann gegebenen Falls zu maximieren. Aber das ist irgendwie nix halbes und nix ganzes und ich würde gerne wissen ob es einen anderen Weg gibt um an das Captcha zu kommen, wenn das Zielfenster minimiert ist.
 
Ähm wäre es nicht etwas einfacher, wenn du den Browser komplett rausschmeißt und der Bot als Browser fungiert? Dann haste solche Probleme gar nicht erst und kannst das Captcha einfach direkt laden.
 
Hallo xblax,
Danke für deine Antwort. Diese Möglichkeit habe ich auch schon in Betracht gezogen, allerdings hab ich keine Ahnung wie das funktioniert^^. Ich dachte mir am Anfang, dass das sehr aufwendig wäre .. sozusagen mit Kanonen auf Spatzen geschossen :P. Vor allen Dingen, weil die Seite ein Login verlangt und das dann ja noch mit nem Cookie und einer Session-ID ablaufen müsste.
 
Mach es mit C# oder VBasic und benutze das Gui Element webbrowser. Es verwaltet deine Cookies und die Anfragen sollten dann auch kein Problem mehr sein; sobald du den HTML-Code der Seite hast einfach mit ein paar Regexen durchfiltern und fertig.
Hab mal ein paar meiner Progs angehängt(alle C#), die solche Sachen machen.
 
Ich habe in letzter Zeit einiges mit Java gemacht. Dort sollte das ganze recht gut gehen.
Seite laden, per regex den Bildpfad rausholen und das Bild laden.
Diese ganzen Anmelde-Geschichten sind meistens nicht so kompliziert wie man zunächst denkt.
Mit Java laufen solche Bots auch auf Servern, die Java unterstützen.
(Bin noch nicht so lange hier, aber ist es normal dass man die Sprache raten muss?)
 
Was meinst du mit Sprache raten?
Zu Java: Hab vor kurzem was in Java geschrieben(klick), was auch Informationen aus einer Internetseite ausliest. Was auch noch interressant ist, ist der java-downloader(komplett os), welcher auch viel Sachen in diese Richtung macht.
 
[ot]

Original von MrSpider
Was meinst du mit Sprache raten?

Er meinte damit das der Ersteller des Threads keine Programmiersprache genannt hat und von diversen Funktionen spricht.

Und nein Sprachen werden in der Regel nicht geraden (z.m. hoffe ich das!).
 
Hallo,
Vielen Dank für eure Antworten. Ich möchte mich auch dafür entschuldigen, dass ich vergessen habe die Sprache zu erwähnen, diesen Fehler werde ich in Zukunft nicht mehr machen.
@MrSpider: Danke für den Anhang, interessante programme.

Ich hatte das ganze mit einer simplen C++-Konsolenanwendung realisiert. Ich bin blauäugiger Weise davon ausgegangen, dass es einfach wäre eine Website auf diese Art und Weise auszulesen. Hab jetzt mal eben in der Delphi-Komponenten Liste geschmökert und auch ein Webbrowserelement gefunden. Das ganze werde ich mir morgen mal genauer anschauen.

Und Sorry dafür, dass ich solange nicht mehr geantwortet habe, hatte viel zu tun.

[EDIT]
So, nachdem ich mich jetz nach längerer Zeit mal wieder mit dem Problem befassen konnte, hab ich ein wenig recherchiert und konnte letztendlich auch ein Programm fertigstellen. An dieser Stelle möchte ich allen die geantwortet haben noch einmal danken und für alle, die das hier lesen und auch etwas derartiges mit Delphi vorhaben eine kleine Hilfestellung geben, indem ich drei wichtige Punkte erwähne

(1) Vergesst TWebBrowser, kuckt euch mal Indy an
(2) Delphi hat von Haus aus keine regulären Ausdrücke, hierfür wird ebenfalls eine third party library benötigt, siehe RegExpr
(3) In meinem Fall hatte ich das Problem, dass das Captcha ein gif war, um das richtig einlesen zu können hab ich die Library GraphicEx benötigt

Sind nur so grundlegende Infos, wenn man wirklich ein Programm auf die Beine stellen weill muss man etwas mehr recherchieren.
 
Wenn du nicht unbedingt Delphi nutzen willst, kannst du dir auch mal libcurl anschauen. Aufgrund von der Verbreitung dürften auch Bindings für die meisten Sprachen dafür existieren.
 
Zurück
Oben