Seite 1 von 1

Qt Post

Verfasst: 16. April 2010 22:00
von ali-g
hallo Leute,


und zwar schicke ich jetzt eine Post anfrage so:

Code: Alles auswählen

QNetworkAccessManager *nwam = new QNetworkAccessManager(this);

    QNetworkRequest request(QUrl("http://de1.mechrage.de/game/login_looki.php"));
        request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");

        QByteArray data;
        QUrl params;

        params.addQueryItem("name","test");
        params.addQueryItem("passwort","123456");
        data.append(params.toString());
        data.remove(0,1);

         nwam->post(request,data);

so er logt sich erfolgreich ein ich habs getestet, so nun will ich eine weitere post anfrage stellen und zwar auf der gleichen seite, die Sache ist die, man kann sich nur im angemeldeten zustand auf die seite zugreifen. Ich hab jetzt nach dem einloggen den code eingefügt klappt aber anscheindend nicht:

Code: Alles auswählen

request.setUrl(QUrl("http://de1.mechrage.de/game/index.php?main=base&sub=collect&platz_ID=23"));
        request.setHeader(QNetworkRequest::ContentTypeHeader,"application/x-www-form-urlencoded");

        params.addQueryItem("ausbild_sammler","1");
        data.append(params.toString());
        data.remove(0,1);

        nwam->post(request,data);


meine frage jetzt:

1. wie mach ich das?

2. nach dem der Request oben beim einloggen beendet ist, loggt er sich dann wieder aus bzw löscht er die cache so das wenn ich die nächste request aufrufe dann nicht mehr eingeloggt ist??? vieleicht klappt es deswegen nicht

Verfasst: 17. April 2010 07:20
von franzf
Da musst du eigentlich mit der Doku dieses Protokolls drauf kommen. Ich kenn das nicht...
Arbeitet das mit Cookies? Oder IDs?
Letzteres ist z.B. bei den Google-Services der Fall. Beim Einloggen kommt eine Antwort vom Server zurück, das ist ein XML. Darin befindet sich ein Eintrag mit jener ID. Diese ID schickst du bei deinen nächsten Requests mit.

Verfasst: 17. April 2010 11:26
von ali-g
also mit cookies nicht, meinst du Session ID oder PHPSESSID ?

Verfasst: 17. April 2010 11:47
von franzf
ali-g hat geschrieben:also mit cookies nicht, meinst du Session ID oder PHPSESSID ?
Irgend eine Session ID. PHPSESSID hast du wenig Chancen, die verwaltet der Server selber. Wenn das Protokoll spezifiziert, dass die ID, die du bekommst identisch ist mit der PHPSESSID, dann ist das einfach zufällig so, weil definiert. Les dir doch einfach mal die Spezifikation deines verwendeten Protokolls durch, da sollte alles drinnen stehen, hoffentlich auch mit Codebeispielen.
Du kannst ja einfach mal deine Queries mit curl über eine konsole wegschicken, dass du siehst was zurück kommt.

Verfasst: 17. April 2010 18:39
von ali-g
meinst du sowas ?

verschickt:

Code: Alles auswählen

http://de1.mechrage.de/game/login_looki.php

POST /game/login_looki.php HTTP/1.1
Host: de1.mechrage.de
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.3) Gecko/20100401 Firefox/3.6.3 (.NET CLR 3.5.30729)
Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
Accept-Language: en-US
Accept-Encoding: gzip,deflate
Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive: 115
Connection: keep-alive
Cookie: chat_on_off=1; base_ID=28122; chat_switch=2; bnd_chat_aktiv=585; Chat_Session=be33ae11eb; PHPSESSID=d5cb76b81f44aba966ddc24446823885
Content-Type: application/x-www-form-urlencoded
Content-Length: 41


angekommen:

Code: Alles auswählen


HTTP/1.1 302 Found
Date: Sat, 17 Apr 2010 16:31:44 GMT
Server: Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny3 with Suhosin-Patch
X-Powered-By: PHP/5.2.6-1+lenny3
Expires: Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma: no-cache
Set-Cookie: Key=c1d2519a92d99009228c6a4ba783c; expires=Tue, 12-Apr-2011 16:31:44 GMT
Set-Cookie: chat_on_off=1; expires=Tue, 12-Apr-2011 16:31:44 GMT
Location: http://de1.mechrage.de/game/index.php?main=mess&sub=news
Vary: Accept-Encoding
Content-Encoding: gzip
Content-Length: 20
Connection: close
Content-Type: text/html



oder eine Chat session??


Chat session geht doch nicht weil es sich nach jedem einloggen ändert.

Verfasst: 18. April 2010 10:26
von ali-g
kann mir keiner helfen, ich habs jetzt mit der Chat session versucht und mit
Key. Es funktioniert aber nicht, kann mir dann wenigsten einer sagen wie ich die aktuelle Chat session auslesen kann so dass ich die dann in dem 2 request mitgebe.

Verfasst: 18. April 2010 10:41
von franzf
Was willst du denn bitte eigentlich machen? Willst du selber einen Webseiten-Login simulieren? Oder existiert ein eigenes Protokoll, um sich Daten von der Seite zu holen? Letzteres ist sicher irgendwo dokumentiert.

Wenn du ersteres (simuliertes Login + Bewegen im Userbereich) machen willst: Schmeiß wireshark an und schau, was der Client dem Server schickt und umgekehrt und versuch daraus schlau zu werden. Ich hab selber mal geschaut was da alles raus geht (qtforum.de). U.A. ein Cookie, welches auch eine Session-ID mitgibt.

Eine schnelle Antwort wird es hier nicht geben, da solche Logins nicht mit fertigen Mitteln machbar sind. Da musst du immer selber rumexperimentieren und hoffen dass du die richtigen Daten mitgibst...

Hast du denn schonmal selber eine Seite mit php + Userlogin geschrieben? Lies dich da mal schlau, was es für Optionen gibt, dann wirst du vllt. auch schlauer.

Verfasst: 18. April 2010 10:57
von ali-g
hast du überhaupt oben gelesen was ich geschrieben hab, ich hab doch geschrieben ich hab das Login schon fertig er Loggt sich erfolgreich ein !

nur beim nächsten request hab ich probleme, naja ich schau mir mal den Log von Wireshark

Verfasst: 18. April 2010 11:08
von franzf
ali-g hat geschrieben:hast du überhaupt oben gelesen was ich geschrieben hab, ich hab doch geschrieben ich hab das Login schon fertig er Loggt sich erfolgreich ein!
Ja hab ich gelesen. Aber die Antwort des Servers dass der Login erfolgreich war reicht eben noch nicht aus um einfach weiter zu machen. An was soll den der Server bitte festmachen, dass der Request, der gerade kommt, von einem Client kommt der bereits eingeloggt ist? An der IP? Am User Agent? Schonmal gehört dass es Multi-User-Systeme gibt, an denen mehrere Personen gleichzeitig eingeloggt sein können? Alle verwenden den Firefox und haben die Selbe IP. Und jetzt können auf einmal alle im qtforum posten, nur weil einer davon gerade eingeloggt ist?

Oder wie denkst du wird dem Server signalisiert, dass du bereits einen erfolgreichen Login hinter dir hast? Genau, du musst selber etwas mitschicken!

Außerdem hast du mehrfach die Frage ignoriert, ob du einen Webseitenbesuch über Browser simulieren willst oder dir dieser Anbieter eine eigne API anbietet, um eben solche Userdaten über andere Wege als Browser auszulesen. Ich denke zwar es ist ersteres, aber diese Erkenntnis hab ich nur vom zwischen-den-Zeilen-lesen...

Verfasst: 18. April 2010 19:50
von ali-g
ok ich hab jetzt auch mal mit wireshark die webseite (qtforum) angeschaut da wird dann eine SID mitgegeben, aber die seite was ich jetzt versuche da wird keine SID mit gegeben, ich glaub dann arbeiten die mit Cookies

beim absenden kommt ganz unten das:

Code: Alles auswählen

Cookie: bnd_chat_aktiv=585; chat_on_off=1; base_ID=14008; Chat_Session=b57d9ca8f5; PHPSESSID=474c3c92e92fdcedaab3203f9a86157b
und zurück:

Code: Alles auswählen

Set-Cookie: Key=83a409b4e25f5aebaf1354480f73b; expires=Wed, 13-Apr-2011 17:40:38 GMT

Set-Cookie: chat_on_off=1; expires=Wed, 13-Apr-2011 17:40:38 GMT
da kommt natürlich viel mehr, aber ich hab jetzt nur das geschrieben
da kommt noch(useragent...location..)

und sorry wenn ich deine frage nicht beantworte, ja ich will ein Simuliertes Login machen und mich im User-Bereich bewegen.

ok wenn ich die sachen mitschicken muss, dann hab ich ein Problem, weil sich die Chat-Session und Key immer nach jedem login ändern. die PHPSESSID bleibt gleich.