Http Firefox Keep-Alive

Hallo zusammen,

ich habe da mal eine Frage zu Http. Und zwar habe ich ein Programm in C++ geschrieben, welches sich auf einer Internetseite einloggt(Kein Bot oder Webspider :]). Nun ist es so, dass es auf dieser Seite einen Botschutz gibt, der aus Zahlen besteht, die in einem Bild angezeigt werden. Nun lade ich dieses Bild herunter und lasse es den Benutzer eingeben.

Nun zu meiner Frage: Wenn ich direkt mit Firefox auf die Seite gehe habe ich ca. 5 Minuten Zeit mich einzuloggen. Wenn ich das mit meinem Programm mache habe ich höchstens 15 Sekunden. Wie schafft Firefox es solange eine Verbindung mit dem Server aufzubauen?? Habe schon verschiedene Sachen probiert: z.B. bei dem HTTP-Header den optionalen Header Keep-Alive mit einzubinden und ihn auf 300 zu setzen. Brachte mir aber nichts.

Danke für eure Hilfen/Tipps!

Gruß cr4ven
 
Ich könnte mir vorstellen, dass der Server irgentwie (und sei es nur über den Header) prüft, ob es ein Browser oder etwas anderes ist, dass mit ihm ne Verbindung aufbauen will.
Dementsprechend kann er dann das Zeitlimit setzen.
Aber ich bin kein Profi auf dem Gebiet. Ist nur so eine Idee.
 
Ja dafür ist meineswissens der Header User-Agent, welchen ich auch schicke und mich als Firefox ausgebe. Ich habe aber eine andere Vermutung : Kann es sein, dass Firefox danch, also 5-10 Sekunden nach dem Verbindungsaufbau, immer wieder nur eine HEAD Anforderung an den Server schickt, was dann die Verbindung aufrecht erhält, aber vielleicht ändert sich aomit dann auch der Zahlencode, weil die Seite ja neu angefordert wird oder stimmt das so nicht?
 
Schau dir doch mal mit Wireshark an wie der Header genau ausschaut und was genau gesendet und empfangen wird. Das sollte dein Problem lösen.

Gruß odigo
 
Hallo,
irgendwo muss ja hinterlegt werden, welche Zahlen in dem Bild angezeigt wurden, um es dann mit der Eingabe abzugleichen.

Dies geschieht i.d.R. in Sessions. Damit der Server weiß, welcher User zu welcher Session gehört, wird dem Besucher eine Session ID (SID) zugeordnet. Diese wird normalerweise in einem Cookie gespeichert (sofern der Client dies erlaubt) oder immer per URL übergeben, oft so: seite.php?PHPSESSID=abc123...

Wenn dein Bot ;) keine SessionID übergibt, wird für ihn eine neue Session generiert, in der natürlich nicht die Zahl des Bildes abgespeichert ist und der Vergleich funktioniert nicht mehr.

Hingegen speichert Firefox diese Session und beim nächsten Aufruf, also beim einloggen, wird der Cookie übertragen und der Server kann auf die alte Session zugreifen.
 
@Elderan:

Das dachte ich zuerst auch, aber dann hab ich einfach bei Firefox alle Cookies gelöscht und eingestellt, dass er fragen soll bevor er welche annimmt. So dann auf die Seite. Keine Cookies erst bei erfolgreichem Login gibt er mir 3 Cookies, wo eines session-id heißt. Ich hab es mehrmals getestet immer das selbe. Entweder mein Browser spinnt oder der Server macht das anders mit der session.

@odigo

Danke das schaue ich mir mal an

EDIT: Also ich habe mir per Wireshark(Cooles Programm dnake nochmal :) ) mal angeschaut was Firefox so alles sendet an die Seite und zwar eigentlich genau das gleiche wie ich. Danach sendet aber Firefox nochetwas über TCP an die Seite, was ich dafür verantwortlich mache, dass man soviel Zeit hat dann später den Zahlencode auszufüllen. Achja und Firefox sendet keine Cookies!

EDIT2: Ich hab gesehen mein Programm macht das eigentlich auch. Ach ichverstehs einfach nicht warum der Server soschnell die Verbindung trennt.
 
Zurück
Oben