Libcurl eingeloggt bleiben



  • Wie man sich per libcurl(z.B. in ein phpBB Forum) einloggt indem man einen Formpost mit den Login-Daten abschickt ist mir soweit klar, allerdings kriege ich es nicht hin, dann auch eingeloggt zu bleiben, d.h. ich will Seiten aus dem Forum abrufen und dabei eingeloggt bleiben.

    Die verwendete Programmiersprache ist C.



  • cookie auslesen und jedesmal mitsenden wäre ein erster ansatz. vermutlich bist du in einer session, deren nummer entweder im cookie oder über hidden field versendet wird.



  • Angeblich kann man die Cookies automatisch von libcurl mitsenden lassen, wenn man die Zeile

    curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
    

    in seinen Code einbaut, was ich auch getan habe. Allerdings bin ich mir diesbezüglich an mehreren Stellen unsicher:

    Muss ich nach dem Login-Vorgang curl_easy_cleanup(curl) aufrufen oder solle ich das bleiben lassen? Muss ich beim nächsten HTTP-Aufruf wieder die Zeile

    curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
    

    einbauen? Was gibt es evtl. sonst zu beachten?(Ein kleiner Beispielcode mit Login und einem darauffolgenden HTTP-Aufruf bei dem man eingeloggt ist wäre sehr hilfreich.)



  • lehn dich mal daran an
    http://ch2.php.net/manual/de/function.curl-setopt.php#99399
    ob php oder c oder c++, sie nutzen alle curl.

    wo speicherst du die cookies?



  • elise schrieb:

    lehn dich mal daran an
    http://ch2.php.net/manual/de/function.curl-setopt.php#99399
    ob php oder c oder c++, sie nutzen alle curl.

    Folgende Stelle im Code verstehe ich nicht:

    $fp = fopen("cookie.txt", "w");
    fclose($fp);
    

    Warum öffnet man eine Datei nur um sie gleich darauf wieder zu schliessen? 😕

    elise schrieb:

    wo speicherst du die cookies?

    Genau das ist eben der Punkt, ich habe gelesen, dass man wenn man die folgende Zeile einbaut:

    curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
    

    die Cookies nicht speichern muss, da libcurl sie automatisch im RAM behält und bei jeder Anfrage mitsendet(ja, ich weiß, dass das Programm dadurch die Cookies nach dem Beenden oder nach einem Absturz - im Gegensatz zum speichern auf der Festplatte - nicht behält, das ist aber in meinem Anwendungsfall kein Problem). Allerdings funktioniert das bei mir nicht wirklich.



  • libcurl schrieb:

    Folgende Stelle im Code verstehe ich nicht:

    $fp = fopen("cookie.txt", "w");
    fclose($fp);
    

    Warum öffnet man eine Datei nur um sie gleich darauf wieder zu schliessen? 😕

    um die alten gespeicherten cookies zu löschen 😉

    libcurl schrieb:

    Genau das ist eben der Punkt, ich habe gelesen, dass man wenn man die folgende Zeile einbaut:

    curl_easy_setopt(curl, CURLOPT_COOKIEFILE, "");
    

    dann speicher in die datei, wie in der oben geposteten funktion gezeigt wird.

    habe den code eben getestet.
    er läuft einwandfrei. du speicherst u.a. die phpsessid.
    achte darauf, dass du die rechte dazu hast, die entsprechende datei anzulegen (unter win nicht so ein problem 😉 )

    schreib die obige php funktion dann einfach in c++ um.
    im grunde eins zu eins zu übersetzen.
    achte drauf, dass du eventuell auch den button-namen und -value und ggf. vorhandene hidden fields mitsendest als post-daten.

    ich komme in ein forum hinein, und das programm speichert die session in die datei ab.
    von dort kann die phpsessid weiter gelesen und genutzt werden

    cookie.txt sieht so aus:

    # Netscape HTTP Cookie File
    # http://curlm.haxx.se/rfc/cookie_spec.html
    # This file was generated by libcurl! Edit at your own risk.
    
    meinforum.de	FALSE	/	FALSE	0	PHPSESSID   iiiiip4b5j6baqhehljk
    .meinforum.de	TRUE	/	FALSE	1324573821	nickname   japajapaduuu
    .meinforum.de	TRUE	/	FALSE	1324573821	password   12345
    


  • Das mit den Cookies funktioniert jetzt, allerdings bekomme ich es nicht hin, einen Beitrag abzuschicken. Ich schicke alle Daten an die URL

    http://www.phbb-forum.org/posting.php?mode=reply&t=topic-id
    

    wobei phpbb-forum.org die Domain des Forums und topic-id die ID des Topics repräsentiert. Als formpost sende ich folgendes mit:

    curl_formadd(&post_formpost,
                        &post_lastptr,
                        CURLFORM_COPYNAME, "message",
                        CURLFORM_COPYCONTENTS, message,
                        CURLFORM_END);
    
            curl_formadd(&login_formpost,
                        &login_lastptr,
                        CURLFORM_COPYNAME, "post",
                        CURLFORM_COPYCONTENTS, "Submit",
                        CURLFORM_END);
    

    Wobei message der Textnachricht entspricht, die ich abschicken will. Wenn ich allerdings hinterher im Topic nachschaue ist dort kein neuer Beitrag gepostet worden.



  • libcurl schrieb:

    Das mit den Cookies funktioniert jetzt, allerdings bekomme ich es nicht hin, einen Beitrag abzuschicken. Ich schicke alle Daten an die URL

    http://www.phbb-forum.org/posting.php?mode=reply&t=topic-id
    

    statt topic-id steht ja hoffentlich eine echte nummer 😉

    wenns nicht klappt: überprüfe, ob du wirklich alle namen richtig sendest (sid ist glaub ich bei phpbb für sessions), ob du wirklich alle get und post und cookie parameter mitgibst, die er erwartet, einschließlich mal die buttons per namen und value mitschicken etc.

    ist eben fitzelarbeit.



  • libcurl schrieb:

    Das mit den Cookies funktioniert jetzt, allerdings bekomme ich es nicht hin, einen Beitrag abzuschicken.

    Was ist das hier eigentlich für ein Forum? Unterstützung für Boardspammer? Wenn die jetzt schon zu doof sind ihre Nervprogramme selber zu entwickeln - kein Problem, irgend ein Depp findet sich schon, der ihnen hilft, ihren Müll weiter im Netz zu verbreiten!



  • Ich bin mittlerweile fertig mit meinem Projekt, möchte allerdings noch kurz etwas zum Post von "Denker" anmerken:

    Denker schrieb:

    Was ist das hier eigentlich für ein Forum? Unterstützung für Boardspammer?

    Mit libcurl in ein Forum posten == spammen?

    Denker schrieb:

    Wenn die jetzt schon zu doof sind ihre Nervprogramme selber zu entwickeln

    Dass das hier ein Hilfeforum ist, sollte dir bewusst sein. Und ich habe keineswegs einen Eingangspost in der Form "Leute, ich will folgendes Programm, schreibt mir das bitte mal einer" erstellt.

    Zumal ich nicht weiß in welchen Foren du aktiv bist, in denen, in denen ich aktiv bin ist der Spam jedenfalls gleich Null bzw. wird so schnell gelöscht, dass man nichts davon mitbekommt.

    Wodurch wir auch schon beim nächsten Punkt wären: Spamming in Foren ist nicht rentabel, da

    1. Kleinere Zielgruppe als z.B. bei Mails
    2. Es wird alles sehr schnell gelöscht sowie die Accounts gebannt - für die Erstellung neuer Accounts muss ein Captcha "beantwortet" werden.

    ==> Wenn ich ein Spammer wäre, würde ich sicherlich keine Programme für Foren schreiben(und schon garnicht für phpBB, da die meisten großen Foren vBulletin verwenden)

    In Zukunft bitte den Leuten helfen ohne Vorurteile über den Sinn und Zweck der Programme zu haben. Wenn wir nämlich alles, was potentiell gefährlich sein könnte, verbieten würden, dann müssten unter anderem Browser(auch damit kann man z.B. einen DOS-Angriff machen), Küchenmesser, etc. verbieten



  • libcurl schrieb:

    Mit libcurl in ein Forum posten == spammen?

    Äh ja! Was meinst du, warum dieses und andere Foren so einen Aufwand betreiben, um Spampostings abzufangen?

    libcurl schrieb:

    Wodurch wir auch schon beim nächsten Punkt wären: Spamming in Foren ist nicht rentabel, da

    1. Kleinere Zielgruppe als z.B. bei Mails
    2. Es wird alles sehr schnell gelöscht sowie die Accounts gebannt - für die Erstellung neuer Accounts muss ein Captcha "beantwortet" werden.

    Aha. Nur komisch, das Foren, die ungesichert sind, in Null komma nix mit Spam vollgemüllt werden - wo es do soooooo unrentabel ist!

    Interessant übrigens, dass du hier zwar laut rumpolemisierst, es aber nicht schaffst, zu verraten, zu welchem ach so harmlosen Zweck du dein Programm einsetzen möchtest.

    Troll dich!


Anmelden zum Antworten