Devo scaricare tutti i cookie dal browser


106

Devo salvare tutti i cookie nel mio browser utilizzando JavaScript. Come si può fare?


5
nayagi, sfortunatamente se rispondessimo alla tua domanda avresti un software che non è altro che MALWARE.
Jon Limjap

19
@ Jon Limjap - non è del tutto vero. Esistono scenari legittimi per poter enumerare tutti i cookie in un browser Web senza essere malware.
Franci Penov

Whoa aspetta un secondo. Tutti i biscotti? Accesso da qualsiasi sito web? Questo è un malware ...
alexyorke

Ho una situazione (app Web dietro il firewall per un'azienda) in cui farlo sarebbe utile e abbastanza legittimo. Tuttavia, il problema esiste perché abbiamo troppi domini interni (principalmente tramite host virtuali), quindi si potrebbe sostenere che la soluzione è utilizzare Single Sign On.
ClubbedAce

Risposte:


84

Puoi accedere ai cookie solo per un sito specifico. Usando document.cookieotterrai un elenco di coppie chiave = valore con escape separate da un punto e virgola.

secret=do%20not%20tell%you;last_visit=1225445171794

Per semplificare l'accesso, devi analizzare la stringa e annullare l'escape di tutte le voci:

var getCookies = function(){
  var pairs = document.cookie.split(";");
  var cookies = {};
  for (var i=0; i<pairs.length; i++){
    var pair = pairs[i].split("=");
    cookies[(pair[0]+'').trim()] = unescape(pair.slice(1).join('='));
  }
  return cookies;
}

Quindi potresti scrivere in seguito:

var myCookies = getCookies();
alert(myCookies.secret); // "do not tell you"

5
questo non cattura lo spazio dopo il punto e virgola (";") quindi i tasti hanno uno spazio davanti ... usa /; ? / quando si divide per rimuoverli?
Carter Cole

Controlla questo snippet per l'analisi document.cookies(dal libro O'Reilly).
Bentley4

dovrebbe davvero aggiungere .trim () alla coppia [0] per assicurarsi che non ci siano spazi iniziali.
Andrew Killen

37
  1. Non puoi vedere i cookie per altri siti.
  2. Non puoi vedere i HttpOnlycookie.
  3. Tutti i cookie che puoi vedere sono nella document.cookieproprietà, che contiene un elenco di coppie separate da punto e virgolaname=value .

27

Non puoi. In base alla progettazione, per motivi di sicurezza, puoi accedere solo ai cookie impostati dal tuo sito. StackOverflow non può vedere i cookie impostati da UserVoice né quelli impostati da Amazon.


5
come ha fatto Facebook a farlo ...? Ho sempre visto Facebook mostra annunci relativi a ciò che ho sfogliato da Google!
Ari

16
In realtà, Facebook pianta i propri cookie su ogni sito ... utilizzando il pulsante Mi piace. Scommetto che Google fa lo stesso sui pulsanti +1 o anche sugli script delle statistiche del sito.
PhiLho

1
grazie ..., mi sta aprendo gli occhi. Penso che qualsiasi tipo di app ad essi correlata andrà bene, incluso l'accesso tramite l'app dell'account dei social media.
Ari

2
@SoursopTree - Non è AdChoices? Facebook utilizza AdChoices, che è un servizio di Google che mostra i contenuti in base alle tue ricerche tramite Google. Stackoverflow utilizza anche AdChoices. Potrei essere un po 'fuori dai dettagli esatti, ma immagino che sia quello a cui stai pensando.
Rik

1
@KeepMove chiamiamo questa terminologia come sincronizzazione dei cookie
ericdemo07

12

Per recuperare tutti i cookie per il documento corrente aperti nel browser, utilizzi nuovamente la document.cookieproprietà.


4

Approccio moderno.

let c = document.cookie.split(";").reduce( (ac, cv, i) => Object.assign(ac, {[cv.split('=')[0]]: cv.split('=')[1]}), {});

console.log(c);

;)


2

Poiché il titolo non specificava che doveva essere programmatico, presumo che si trattasse di un vero problema di debug / gestione della privacy e la soluzione dipende dal browser e richiede un browser con pedaggio di gestione dei cookie dettagliato e / o un modulo di debug o un plug-in / estensione. Ne elencherò uno e chiederò ad altre persone di scrivere su browser che conoscono in dettaglio e per favore sii preciso con le versioni.

Cromo, costruzione in ferro (SRWare Iron 4.0.280)

Il menu Strumenti (strumenti): Opzioni / Roba da smanettoni / [Mostra cookie e permessi dei siti web] Per i domini / siti correlati, digita il suffisso nella casella di ricerca (come .foo.tv). Avvertenza: quando si dispone di un nodo (sito o cookie) evidenziato tramite clic, utilizzare solo [Rimuovi] per eliminare sottostrutture specifiche. L'uso di [Rimuovi tutto] eliminerà comunque i cookie per tutti i siti selezionati dalla ricerca e sprecherà la sessione di debug.


1

Aggiunto trim () alla chiave in object e denominarlo str, quindi sarebbe più chiaro che qui abbiamo a che fare con string.

export const getAllCookies = () => document.cookie.split(';').reduce((ac, str) => Object.assign(ac, {[str.split('=')[0].trim()]: str.split('=')[1]}), {});


Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.