Nie jestem pewien, aby zrozumieć, co masz na myśli przez "jeśli mam słoik z plikami cookie w nim", ale oto w jaki sposób zarządzam trwałymi ciasteczkami z nodejs.
Aby uniknąć błędów z FileCookieStore
, dodajemy fragment kodu, aby utworzyć plik json, jeśli nie istnieje. Plik może być pusty, tak długo jak istnieje:
if(!fs.existsSync(cookiepath)){
fs.closeSync(fs.openSync(cookiepath, 'w'));
}
Teraz, jeśli przyjrzeć się bliżej kodu FileCookieStore
, widać to wywołuje metodę saveToFile
każdej chwili nastąpiła zmiana w cookies. Oznacza to, że przekazując obiekt FileCookieStore
do modułu request
(używając opcji jar
jako the request documentation), plik json będzie zawsze odzwierciedlał stan plików cookie.
Powyżej znajduje się pełna przykład:
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);
Aby zacząć od nowa, po prostu usuń plik cookipath
.
Mam nadzieję, że to pomoże.
Ah, informacja, której mi tu brakowało, to moduł żądania aktualizujący magazyn plików podczas zmiany plików cookie. Myślałem, że muszę ręcznie wyeksportować pliki cookie do pliku. Dzięki za wyjaśnienie i przykład. –