Problem bei wget mit cookies

Hallo,

ich möchte regelmässig mit WGET Seiten von einer http HP runter laden. Diese HP hat ein Login Verfahren und Cookies, so dass ich angemeldet bleiben kann (so wie hier im Forum).
WGET verfügt ja über eine Cookie Verwaltung, aber irgendwie komme ich damit nicht klar, denn wenn ich die Seiten ziehe, ist immer nur die Login Seite geladen, statt die Seiten die ich eigentlich anfordere.

Ich habe schon verschiedene Experimente gemacht mit den WGET Parametern. Z.B.

wget --referer="http://www.ABC.com" --cookies=on --load-cookies="C:\Dokumente und Einstellungen\Admin\Anwendungsdaten\Mozilla\Firefox\Profiles\cmjnokb1.default\cookies.txt" --save-cookies="C:\Dokumente und Einstellungen\Admin\Anwendungsdaten\Mozilla\Firefox\Profiles\cmjnokb1.default\cookies.txt" --keep-session-cookies --post-data="User=MeinUserName&pass=MeinPasswort" --user-agent="Mozilla/5.0" "http://www.ABC.com/index.php?aktion=tracker"

aber es klappt nicht. Kann mir jemand auf die Sprünge helfen?
 
Es sollte reichen, wenn du dich beispielsweise im Firefox auf der Seite einloggst und wget dann mittels --load-cookies die cookies.txt unterjubelst. Mehr sollte da nicht nötig sein, es sei denn, die Seite hat umfangreichere Prüfmechanismen eingebaut.
 
Tja dann wird wohl letzteres der Fall sein. Denn ersteres habe ich schon versucht. Und es klappt nicht. X(
Bin so langsam am verzweifeln wie ich automatisiert auf diese Seite komme.

Am Referer kann es nicht liegen. Denn habe ich in FF mal abgeschaltet und kam trotzdem rein. Es sind bestimmt die Cookies, denn bei abgeschalteten Cookies komme ich auch mit FF nicht in die Seite rein.

Aber hexen können die doch auch nicht. Was mit FF manuell geht muss doch auch automatisierbar sein ?(

Habe gerade versucht die Seite per DL Manager (Free Downloadmanager) bei eingeschalteten Cookies runter zu laden. Und es funzt !!!! Auch wenn ich gerade NICHT im Browser eigeloggt bin. Also geht es im Prinzip - rein über Cookies!
Ich muss es nun nur noch in WGET schaffen, da ich diesen als Interface für mein Programm benutze.
 
hi,

gerade neu hier und schon ein thema was mich auch schon seit längerem beschäftigt.

benutze aber nicht wget als interface sondern die funktionen von libcurl .

wenn ich die zugangsdaten mittels POST an die zielseite sende gibt es 2 möglichkeiten:
zugangsdaten falsch => seite wird richtig gelesen
zugangsdaten richtig => nichts wird gelesen
leider weiss ich nicht wie ich mittels libcurl die seite den cookie schreiben lassen kann :(

vielleicht weiss jemand etwas...

mich würde auch sehr interessieren ob du das problem mittels wget elegant lösen konntest ohne auf die browser cookies zurückgreifen zu müssen...
 
Da mein Projekt eilte musste ich mir eine andere Lösung einfallen lassen - es hatte ja keiner mehr geantwortet. Und letztendlich sogar mit einigen Vorteilen.

Ich benutze jetzt den Free Download Manger als Interface !

Den kann ich auch über die Command aufrufen - einfach URL dranhängen. Mit Schalter -fs popt er nicht einmal auf. Er ist sowie Cookie als auch HTTP, FTP Passwort fähig und kommt somit in die Seiten rein !

Weiter Vorteile gegenüber Wget:
parallel download
automatisches Torrent Handling
Es geht nicht pro DL ein Dos Fenster auf, daher kann man es auch nicht ausversehen schliessen und den DL abbrechen.
übersichtlichere Darstellung der DLs

Nachteile:
Die Organisation über den Speicherort der Files und was mit File passieren soll wenn bereits vorhanden ist (Resume / Overwrite) muss in FDM Manager geregelt werden und kann nicht von der Command aus übergeben werden. Habe dies aber mal als Vorschlag an FDM eingereicht.
 
hi,

habe mitlerweile auch eine lösung gefunden, habe es mal mehr oder weniger sauber programmiert, soll als grundlage für ein programm dienen dass in festgelegten intervallen meine studivz nachrichtenbox auf neue nachrichten überprüft.

der folgende code schnipsel setzt das session cookie und lädt die persönliche startseite erfolgreich, vielleicht interessierts dich ja!?

Ist denke ich auch sehr einfach auf andere fälle zu übertragen...


Code:
#include <stdio.h>
#include <curl/curl.h>

size_t interpret(void *ptr, size_t size, size_t nmemb, void *stream) {
       
    
     //crawler code
     
       
     return size*nmemb;         
}
 
 
int main(void)
  {
              
    char       *data="page=&next=&email=DINEEMAIL&pass=DEINPASSWORT&login=Einloggen",
               *filen="exe.html",
               *cookien="cookie.txt",
                error[CURL_ERROR_SIZE];
    CURL       *curl;
    CURLcode    res;  
      
    curl = curl_easy_init();    
    
    if(curl) {
    
        /**/
        curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, interpret);
        curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
        curl_easy_setopt(curl, CURLOPT_POSTFIELDS, data);
        curl_easy_setopt(curl, CURLOPT_HEADER,1); 
        curl_easy_setopt(curl, CURLOPT_COOKIEJAR, cookien);
        curl_easy_setopt(curl, CURLOPT_URL, "http://www.studivz.net/login.php");
        /**/
        
        res = curl_easy_perform(curl);
        curl_easy_cleanup(curl);     // <= erst jetzt wird cookie geschrieben!!!
       
        if(res == CURLE_OK) {
              printf("1 : curl_easy_perform() erfolgreich ausgefuehrt\n");
              
              curl = curl_easy_init();
              
              /**/
              curl_easy_setopt(curl, CURLOPT_WRITEFUNCTION, interpret);
              curl_easy_setopt(curl, CURLOPT_COOKIEFILE, cookien);
              curl_easy_setopt(curl, CURLOPT_ERRORBUFFER, error);
              curl_easy_setopt(curl, CURLOPT_HEADER,1); 
              curl_easy_setopt(curl, CURLOPT_URL, "http://www.studivz.net/home.php");
              /**/
              
              res = curl_easy_perform(curl);
              
              if(res == CURLE_OK) {
                     printf("2 : curl_easy_perform() erfolgreich ausgefuehrt\n");
              }
              else {
                   printf("2 : error: %s\n", error);
              }
              
        }
        else {
              printf("1 : error: %s\n", error);
       }
       
       remove(cookien);
    }
    
    curl_easy_cleanup(curl);
  
    return 0;    
}
 
Zurück
Oben