Ajax Fortschrittsanzeige. + curl@ssl+svz

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Ajax Fortschrittsanzeige. + curl@ssl+svz

    Hey ich hätte mal wieder ne Frage. :P

    Und zwar bin ich auf eine Seite gestoßen, die einem eine Statistik seiner Schülervz Pinnwand erstellt. Das ist mir eigentlich egal.
    Was mich allerdings interessiert ist, die Statusanzeige, wenn man sich eine Statistik generieren lässt.

    Hier die Seite: stat0r.s4.frankyonline.de:90/
    Nehmt einfach den Link von dem Entwicker, wenn ihr es testen wollt:
    schuelervz.net/Profile/904bd7273bbcf3eb

    Zuerst kommt Initialisierung.. und dann kommt hole Gästebucheinträge und so weiter.

    Mich würde interessieren wie man sowas macht. Also klar ist, ich hole mir per Ajax Inhalt aus einer externen Datei.

    Macht er ja auch:

    Quellcode

    1. new Ajax.Request('/getstats.php', {
    2. method: 'post',
    3. parameters: $('formwithall').serialize(true),
    4. onLoading: function(){
    5. // $('formwithallin').disable();
    6. $('statusresults').innerHTML = 'Initialisierung..';
    7. },
    8. onFailure: function(){
    9. $('statusresults').innerHTML = 'Etwas ist fehlgeschlagen, bitte versuche es sp&auml;ter erneut und/oder <a href="http://forum.svzcommunity.net/">melde es</a>.';
    10. allesistaus();
    11. }
    12. });
    Alles anzeigen


    So wie das ganze aussieht, wird die Statusmessage im div mit der id statusresults ausgegeben.
    Aber wie funktioniert das ganze, dass die Statusmessage wechselt?

    Jemand eine Idee, oder sogar ein Beispiel? :)

    Danke mal wieder im Vorraus.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von Snowflake ()

  • Ahh ich sollte mir wohl doch mal angewöhnen nicht den normalen Quelltext anzuschauen mit Firefox, sondern mir das ganze mit Firebug anzuschauen. Das gibt jetzt ein roten Notiz-zettel neben meinem PC danke ;)


    Aber irgendwie hat mich das ganze aber jetzt doch gereizt, und ich will mal gucken, ob ich sowas auch drauf habe, und ich wollte mein Wissen erweitern.
    Und da dachte ich wer kann mir was besser erklären als d0nut :)

    Ich denke um sich auf einer Seite einzuloggen, ist curl wohl die beste möglichkeit?
    Mein Problem ist, dass SVZ oder Studivz folgende Parameter für den Login benötigen:
    • Email
    • Passwort
    • jsEnabled
    • formkey
    • iv
    • checkcode


    Die Parameter Email und Passwort bestimme ich selber.
    Die anderen Parameter sind auf der Startseite wenn man nicht eingeloggt ist zu finden als input hidden felder.

    Hier mal ein beispiel wie das ganze aussieht:

    Quellcode

    1. <input type="hidden" name="formkey" value="a59ddf577dd0cf3f72b5ecee26223a785e3753fed1f2ea105ef32dbd675ca0e8b7c8c9f77e5aa4ba618e0a50a12797ebb58db1ee542068f9f49a0323dcfd141c" />
    2. <input type="hidden" name="iv" value="9e5236ec0430d509b557f449ab95d030" />
    3. <input type="hidden" name="checkcode" value="fd68b14ff3e50144ef2ae82bccbd85b4" />
    4. <input type="hidden" name="jsEnabled" id="jsEnabled" value="false" />


    Jetzt wäre meine Frage, wie komme ich an diese Werte dran?
    Mein Script bis jetzt sieht so aus:

    Quellcode

    1. <?
    2. $LOGINURL= "https://secure.studivz.net/Login";
    3. $agent = "Mozilla/5.0 (Windows; U; Windows NT 5.0; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)";
    4. $params ="email=email&password=password&login=Einloggen";
    5. $ch = curl_init();
    6. curl_setopt($ch, CURLOPT_POST,1);
    7. curl_setopt($ch, CURLOPT_POSTFIELDS,$params);
    8. curl_setopt($ch, CURLOPT_URL,$LOGINURL);
    9. curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
    10. curl_setopt($ch, CURLOPT_USERAGENT, $agent);
    11. curl_setopt($ch, CURLOPT_RETURNTRANSFER,1);
    12. curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
    13. curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
    14. curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
    15. $result=curl_exec ($ch);
    16. if ( curl_errno($ch) ) {
    17. echo "ErrorNr: ".curl_errno($ch).' - '.curl_error($ch);
    18. }
    19. curl_close ($ch);
    20. echo("<br>Resultat: <br>".$result);
    21. ?>
    Alles anzeigen


    Theoretisch, muss ich die Seite laden, und mir dann die Fehlende Parameterwerte rausholen? Wenn ja. Nur wie macht man das^^

    Danke im Vorraus. :)
  • hm, ich hab das vor 1,5 Jahren mal mit Snoopy probiert:

    Quellcode

    1. <?php
    2. include "Snoopy.class.php";
    3. $agents = array(
    4. "Mozilla/5.0 (compatible; Konqueror/3.2; Linux 2.6.2) (KHTML, like Gecko)",
    5. "Mozilla/4.0 (compatible; MSIE 6.0; MSIE 5.5; Windows NT 5.1) Opera 7.04 [de]",
    6. "Mozilla/5.0 (Windows; U; Windows NT 5.0; de-DE; rv:1.6) Gecko/20040206 Firefox/1.0.1",
    7. "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.0)"
    8. );
    9. $snoopy = new Snoopy;
    10. $snoopy->referer = 'http://www.studivz.net/';
    11. $snoopy->agent = $agents[3];
    12. $fetch_url = "http://www.studivz.net/";
    13. $submit_url = "http://www.studivz.net/login.php";
    14. $load_url = "http://www.studivz.net/basicinfo.php";
    15. $snoopy->fetchform($fetch_url);
    16. preg_match_all('/name\="checkcode_login\".*value\="(.+)"/i', $snoopy->results, $code);
    17. $submit_vars['checkcode_login'] = $code[1][0];
    18. $submit_vars['noerror'] = 1;
    19. $submit_vars['email'] = 'benutzername@domain.de';
    20. $submit_vars['pass'] = 'passwort';
    21. $submit_vars['doquicklogin'] = "Einloggen";
    22. print_r($submit_vars);
    23. echo '<p />checkcode geholt'; flush();
    24. sleep(2);
    25. if($snoopy->submit($submit_url, $submit_vars)) {
    26. echo '<p />authentifiziert'; flush();
    27. //cookies werden im smarty objekt gespeichert und stehen beim naechsten fetch zur verfuegung
    28. echo '<pre>'.$snoopy->results.'</pre>';
    29. }
    30. die();
    31. $snoopy->fetch($load_url);
    32. print_r($snoopy->cookies);
    33. echo '<pre>'.$snoopy->results.'</pre>';
    34. //echo "error fetching document: ".$snoopy->error."\n";
    35. ?>
    Alles anzeigen


    Kenne mich mit CURL nicht so aus... gibts was was dir die Seite als DOM liefert? Vielleicht sogar nur das Formular?
    Ansonsten kannst du dir den Regex aus der Snoopy Klasse klauen.
  • Hey danke. Hab noch nie was von Snoopy gehört. Aber das ist ja zehn mal besser als curl.

    Der Regex aus der Snoopy Klasse ist geil. Liefert einem direkt das was ich brauche. Formkey, checkcode.

    Aber die Programmierung von Studivz oder Schülervz bleibt mir einfach ein rätesl.
    Trotz richtigem Code und allem, kommt nur das Fenster "Es ist ein fehler aufgetreten"

    Hab mir auch mit Live Http Tracker mal angeschaut, wie das ganze abgeschickt wird. Also ich übergebe aufjedenfall alle Werte richtig.
    Der Cookie mit der PHPSESSID wird auch erstellt. Eingeloggt ist man trotzdem nicht.

    Aber auch auf anderen Seiten, die ihren Login nicht so schützen gehts nicht wirklich. Egal ob mit Snoopy oder Curl.
    Bei wer-kennt-wen zum Beispiel. werde ich eingeloggt, sehe auch die Startseite aber sobald ich auf eine andere Seite gehen will, ist die Sitzung ungültig.

    Ich glaub das ganze wird mir ein rätsel bleiben. :P
    Alleine wenn ich den Login schaffe, die Pinnwandeinträge auszuwerten würde auch nicht so leicht sein denke ich.