gmx captcha auslesen

04/14/2009 16:18 hann85#1
hi leute
ich habe ein problem das captcha von gmx auszulesen, das erscheint, wenn ich versuche eine neue kostenlose mail adresse anzulegen (hier: [Only registered and activated users can see links. Click Here To Register...] dann links auf "freemail" dann "jetzt kostenlos anmelden")

ich versuche also dieses bild runterzuladen um es im fenster des programmes anzuzeigen, dass der user nicht mehr umständlich sich eine email über die gmx seite erstellen muss, sondern einfacher über das programm gehen kann, also umgehe ich ja keinen schutz damit.

jedenfalls das runterladen von dem captcha geht nicht: wenn man die adresse des bildes auf dem server raussucht (in der regel über rechtsklick -> eigenschaften, oder direkt im source code der seite) und diesen einzeln aufruft im browser kommt ein leeres fenster, meine vermutung ist, dass gmx den captcha generiert, unter dem ort auf dem server speichert und den link dazu einmal vergibt und regisrtiert ob es einmal runtergeladen wurde und dann sofort es löscht oder verschiebt von diesem ort.

das seltsame daran ist, dass der browser dieses bild ja einmal laden kann, ich kann es jedoch über mein programm nicht. ich arbeite mit java und dem httpclient von apache imports, mein code in auszügen bisher:

Code:
HttpResponse res;
String response, linkToPic;

lade die seite
parse sie, so dass dann in linkToPic die gewünschte URL zu dem captcha ist

HttpGet httpget3 = new HttpGet(linkToPic);
res = httpclient.execute(httpget3);
response = responseHandler.handleResponse(res);
System.out.println(response);
das problem ist wie gesagt, dass response leer ist und ich komme nicht drauf wieso. vielleicht liegt es auch an dem https dass ich es nicht laden kann, aber das kann ich nicht überprüfen, der httpclient sollte das transparnet handhaben.

vielen dank für eure hilfe
04/14/2009 16:28 ChibiEbil#2
Ich würd die url zum bild ausm quelltext auslesen und es dann downloaden =o

Hideki
04/14/2009 16:50 hann85#3
im prinzip mache ich mit diesem code stück genau das, ich lade das bild, von dem ich die url habe, über einen get-request herunter, und speichere es in einem string, allerdings ist dieser eben leer :-(
04/14/2009 17:59 schlurmann#4
Schicke einfach 'mal nen richtigen Request und lass diese Klassen weg. :rolleyes:
04/14/2009 18:17 hann85#5
in wie fern richtiger request, ich muss einen get-request schicken um an die bilddaten zu kommen, und ohne die klassen müsste ich sehr viel selber implementieren, zum beispiel https
04/14/2009 18:27 schlurmann#6
Ich persönlich benutze solche Klassen nicht gerne. Dir fehlt ganz einfach die Kontrolle. Kontrolliere doch einfach mal mit WPE Pro was wirklich abgeschickt wird und was bei dir ankommt. Vielleicht wird totaler Mist geschickt (würde dir ohne solche Klassen sicher nicht passieren ;)).
04/14/2009 19:56 ChibiEbil#7
Oder nutze Live HTTP header plugin für FF, damit siehst du auch was wirklich alles passiert.
Meine methode hat bei mir immer funktioniert, allerdings arbeite ich mit delphi =o
Und ich war auch grad auf der gmx seite und sehe was du meinst ;P wie gesagt Live HTTP header liefert da einige informationen, ob es dir helfen kann weiss ich nicht.

Hideki
04/14/2009 21:25 hann85#8
ok dieses plug in is scho mal recht nützlich, ich hab für solche sachen früher wireshark genommen, aber das is praktischer ^^

ich kann nicht kontrollieren was die senden da es https ist und somit programme wie wireshark mir nur tcp daten auswerfen, nicht den plaintext .... aber ich denke das die klassen richtig arbeiten, also mit andren projekten hatte ich keine probleme

also ich hab mal die header mitgeschnitten:

das ist die anfrage für das bild wenn mein ff die seite aufbaut:
Code:
GET /de/cgi/g.fcgi/misc/captcha?sid=.................... HTTP/1.1

Host: service.gmx.net

User-Agent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8

Accept: image/png,image/*;q=0.8,*/*;q=0.5

Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Referer: https://service.gmx.net/de/cgi/g.fcgi/tariff/new/freemail/instant/user?sid=.....................
Cookie: GUD=...................; ns_sample=37



HTTP/1.x 200 OK

Date: Tue, 14 Apr 2009 19:10:33 GMT

Server: Apache

Cache-Control: no-cache

Expires: Thu, 01 Dec 1994 16:00:00 GMT

Pragma: no-cache

Keep-Alive: timeout=10, max=199

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: image/jpeg
und das passiert wenn ich per hand das aufrufe:
Code:
GET /de/cgi/g.fcgi/misc/captcha?sid=..................... HTTP/1.1

Host: service.gmx.net

User-Agent: Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9.0.8) Gecko/2009032711 Ubuntu/8.10 (intrepid) Firefox/3.0.8

Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8

Accept-Language: de-de,de;q=0.8,en-us;q=0.5,en;q=0.3

Accept-Encoding: gzip,deflate

Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7

Keep-Alive: 300

Connection: keep-alive

Cookie: GUD=.....................; ns_sample=37



HTTP/1.x 200 OK

Date: Tue, 14 Apr 2009 19:13:32 GMT

Server: Apache

Cache-Control: no-cache

Expires: Thu, 01 Dec 1994 16:00:00 GMT

Pragma: no-cache

Keep-Alive: timeout=10, max=200

Connection: Keep-Alive

Transfer-Encoding: chunked

Content-Type: text/html; charset=utf-8
was mir auffällt ist das beim ersten accept image und beim zweiten accept text gesendet wird und der server es bestätigt, seinem header zufolge ....
04/14/2009 22:03 Adroxxx#9
Wieso benutzt du da Wireshark? Würd eher WPE nehmen. Weil du da direkt den Browser als Target nehmen kannst. Oder Tamper Data Plugin für FF.
04/14/2009 23:09 hann85#10
ich nehm kein wpe, weil es das für linux nicht gibt :-)
aber das ff plug in werd ich gleich mal ausprobieren
danke leute

edit:
ich hab nun tamper data ausprobiert. ich hab den selben get-request, den der browser sendet um das bild zu erhalten, genommen und erneut gesendet. das ergebnis war wie jedesmal zuvor eine leere seite
04/14/2009 23:49 ChibiEbil#11
Tamper und LHTTP headers is eig. das selbe =o
Und ich fand LHTTP headers immer besser, wobei das mit Tamper schon nen weilchen her ist.

Hideki