C’est une question sur la façon de conserver les cookies d’une page à l’autre de casperjs ..
Donc, fondamentalement, j’ai un fichier nodejs qui génère Casperjs en tant qu’employé pour effectuer certaines tâches. L’une consiste à se connecter, une fois connecté, je stocke le cookie dans un fichier.
quand je déclencherai le prochain ouvrier casper .. je veux qu’il utilise le cookie plutôt que de devoir se connecter à nouveau .. ces deux méthodes ont échoué :
Premièrement: quand je crée le gestionnaire capserjs, j’ajoute le –cookies-file =. / cookiefilename, c’est-à-dire var child = spawn('casperjs',['scrape.js','--cookies-file=./'+cookieFileName]);
deuxième: dans le fichier worker de casperjs .. je le fais lire et définir le cookie à partir d’un fichier
var casper = require('casper').create(); var cookieFileName = 'monsterCookie.txt'; // grab cookies from file var fs = require('fs'); var utils = require('utils'); var cookies = fs.read(cookieFileName); casper.page.setCookies(cookies); casper.start('domain/page.html', function() { //FAIL! cookies aren't used here this.debugHTML(); }); casper.run();
Remarques:
start
supprime les cookies de la page? si oui comment puis-je empêcher cela? [Général] cookies = “@ Variant (\ 0 \ 0 \ 0 \ x7f \ 0 \ 0 \ 0 \ x16QList \ 0 \ 0 \ 0 \ 0 \ 0 \ x1 \ 0 \ 0 \ 0 \ 0 \ 0 \ 0YCNTR = LB; expire = mar, 09-avr-2013 17:12:05 GMT; domaine = .recruiter.domaine.com; chemin = / \ 0 \ 0 \ 0qUID = 13eb22f-2.21.171.120-1365523938; expire = lun, 30 -Mar-2015 16:12:18 GMT; domaine = .domaine.com; chemin = / \ 0 \ 0 \ 0] UIDR = 1365523938; expire = lundi, 30-mars-2015 16:12:18 GMT; domaine = .domain.com; chemin = / \ 0 \ 0 \ 0 [R_LANG = en; expire = jeu, 09-mai-2013 16:16:06 GMT; domaine = .recruiter.domain.com; chemin = / \ 0 \ Vocabule est en train de changer : lv = 1365495369854: ss = 1365495136954; expire = ven, 07-avr.-2023 08:16:09 GMT; domaine = .domainu; = = 0 0 ZFhhPWRRAQAAAAJWAADKPmRR4T1kUQAAAAA-; expires = Thu, 09-Apr-2015 16:16:10 GMT; domain = statse.domain.com; chemin = / \ 0 \ 0 \ 0Yv1st = CE061E87215F2D73; pires = mercredi 19 février 2020 à 14h28:00 GMT; domaine = .domain.com; chemin = / \ 0 \ 0 \ 0 \ x84 \ x43OOKIE_ID = 178.135.147.39-2368749744.30291261; expire = ven, 07-avr-2023 16:16:11 GMT; domain = cookie.domain.com; path = expire = ven, 07-avr-2023 16:16:13 GMT; domain = cookie.domain.com; chemin = /) ”
Enregistrement de cookies:
var fs = require('fs'); var cookies = JSON.ssortingngify(phantom.cookies); fs.write(cookieFilename, cookies, 644);
Restauration des cookies:
var fs = require('fs'); var data = fs.read(cookieFilename); phantom.cookies = JSON.parse(data);
Le phantom
est une variable globale dans PhantomJS. Plus d’informations que vous pouvez obtenir dans le wiki
@imos Excellente réponse! Cela m’a simplement aidé et j’espérais pouvoir en append un peu plus.
Vous pouvez également append des cookies individuels à une page en utilisant:
var fs = require('fs') var data = fs.read(file) var cookies = JSON.parse(data) for(var i = 0; i < cookies.length; i++) { phantom.addCookie(cookies[i]); }
Cela pourrait aider s'il y a plusieurs fichiers de cookies.