2016-01-28 5 views
5

Die request Dokumentation spricht über Cookies aus einer Datei mit dem folgende Beispiel importieren:Export Cookie Jar zu JSON mit Knoten anfordern

var FileCookieStore = require('tough-cookie-filestore'); 
// NOTE - currently the 'cookies.json' file must already exist! 
var j = request.jar(new FileCookieStore('cookies.json')); 
request = request.defaults({ jar : j }) 
request('http://www.google.com', function() { 
    request('http://images.google.com') 
}) 

jedoch wie im Kommentar erwähnt, erwartet es cookies.json zu existieren bereits. Die Frage ist, ob ich ein Exsing-Glas mit Cookies darin habe, wie kann ich es in JSON exportieren?

Antwort

7

Ich bin mir nicht sicher zu verstehen, was Sie mit "wenn ich ein Exsting Glas mit Cookies drin habe", aber hier ist, wie ich dauerhafte Cookies mit Nodejs verwalten.

Um Fehler mit FileCookieStore zu vermeiden, füge ich ein Stück Code, um die JSON-Datei zu erstellen, wenn es nicht existiert. Die Datei kann leer sein, solange es existiert:

if(!fs.existsSync(cookiepath)){ 
    fs.closeSync(fs.openSync(cookiepath, 'w')); 
} 

Nun, wenn man genau auf den Code FileCookieStore schauen, sehen Sie, es ruft die saveToFile Methode zu jeder Zeit gibt es eine Änderung in den Cookies. Dies bedeutet, dass die JSON-Datei immer den Status der Cookies widerspiegelt, wenn ein FileCookieStore Objekt an das Modul request übergeben wird (unter Verwendung der jar Option als the request documentation). Hier

ist ein komplettes Beispiel:

var FileCookieStore = require('tough-cookie-filestore'); 
var request = require('request'); 
var fs = require("fs"); 

var cookiepath = "cookies.json"; 

// create the json file if it does not exist 
if(!fs.existsSync(cookiepath)){ 
    fs.closeSync(fs.openSync(cookiepath, 'w')); 
} 

// use the FileCookieStore with the request package 
var jar = request.jar(new FileCookieStore(cookiepath)); 
request = request.defaults({ jar : jar }); 

// do whatever you want 
request('http://www.google.com', function() { 
    request('http://images.google.com') 
}); 

// the cookies in 'jar' corresponds to the cookies in cookies.json 
console.log(jar); 

Um neu zu starten, löschen Sie einfach die Datei cookipath.

Hoffe, das hilft.

+0

Ah, die Information, die mir hier fehlte, war das Anfrage-Modul, das den Dateispeicher aktualisiert, wenn sich Cookies ändern. Ich dachte, ich müsste die Cookies manuell in die Datei exportieren. Danke für die Erklärung und das Beispiel. –

Verwandte Themen