Muszę pobrać wszystkie pliki cookie z przeglądarki


107

Muszę, aby wszystkie pliki cookie były przechowywane w mojej przeglądarce za pomocą JavaScript. Jak można to zrobić?


5
nayagi, niestety, jeśli odpowiemy na twoje pytanie, będziesz mieć oprogramowanie, które jest niczym innym jak ZŁE OPROGRAMOWANIE.
Jon Limjap

19
@Jon Limjap - to nie do końca prawda. Istnieją uzasadnione scenariusze umożliwiające wyliczenie wszystkich plików cookie w przeglądarce internetowej bez złośliwego oprogramowania.
Franci Penov

Zaraz, chwileczkę. Wszystkie ciasteczka? Logowanie z dowolnej strony internetowej? To złośliwe oprogramowanie ...
alexyorke

Mam sytuację (aplikacje internetowe za zaporą sieciową dla firmy), w której byłoby to przydatne i całkiem uzasadnione. Jednak problem istnieje, ponieważ mamy zbyt wiele domen wewnętrznych (głównie za pośrednictwem wirtualnych hostów), więc można by argumentować, że rozwiązaniem jest użycie jednokrotnego logowania.
ClubbedAce

Jeśli naprawdę potrzebujesz wszystkich plików cookie, musisz w tym celu utworzyć i zainstalować rozszerzenie przeglądarki. Pliki cookie używane do logowania są uważane za wrażliwe, a przeglądarki starają się zachować je w tajemnicy.
Mikko Rantalainen

Odpowiedzi:


84

Możesz uzyskać dostęp do plików cookie tylko dla określonej witryny. Użycie polecenia document.cookiespowoduje wyświetlenie listy par klucz = wartość ze zmianą znaczenia oddzielonych średnikiem.

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

Aby uprościć dostęp, musisz przeanalizować ciąg i usunąć wszystkie wpisy:

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;
}

Więc możesz później napisać:

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

5
nie przechwytuje spacji po średniku („;”), więc klawisze mają spację z przodu ... użyj /; ? / podczas rozłupywania, aby je usunąć?
Carter Cole

Sprawdź ten fragment pod kątem analizy document.cookies(z książki O'Reilly).
Bentley4

powinien naprawdę dodać .trim () do pary [0], aby upewnić się, że nie ma spacji wiodących.
Andrew Killen

38
  1. Nie widzisz plików cookie innych witryn.
  2. Nie widzisz HttpOnlyciasteczek.
  3. Wszystkie pliki cookie, które możesz zobaczyć, znajdują się we document.cookiewłaściwości, która zawiera listę par oddzielonych średnikaminame=value .

28

Nie możesz. Z założenia, ze względów bezpieczeństwa, masz dostęp tylko do plików cookie ustawionych przez Twoją witrynę. StackOverflow nie widzi plików cookie ustawionych przez UserVoice ani ustawionych przez Amazon.


5
jak Facebook to zrobił ...? Zawsze widziałem, jak Facebook pokazuje reklamy związane z tym, co przeglądałem w Google!
Ari

17
W rzeczywistości Facebook umieszcza własne pliki cookie w każdej witrynie ... za pomocą przycisku Lubię to. Założę się, że Google robi to samo z przyciskami +1, a nawet ze skryptami statystyk witryny.
PhiLho

1
dziękuję ... to otwiera mi oczy. Myślę, że nada się każda powiązana z nimi aplikacja, w tym logowanie za pomocą aplikacji do kont mediów społecznościowych.
Ari

2
@SoursopTree - czy to nie jest AdChoices? Facebook korzysta z AdChoices, usługi Google, która wyświetla treści na podstawie Twoich wyszukiwań w Google. Stackoverflow również korzysta z AdChoices. Może trochę nie wiem, co do szczegółów - ale myślę, że właśnie o tym myślisz.
Rik

1
@KeepMove nazywamy tę terminologię synchronizacją plików cookie
ericdemo07

12

Aby pobrać wszystkie pliki cookie dla bieżącego dokumentu otwartego w przeglądarce, ponownie użyj document.cookiewłaściwości.


4

Nowoczesne podejście.

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

console.log(c);

;)


2

Ponieważ w tytule nie określono, że ma być programistyczny, zakładam, że był to prawdziwy problem z debugowaniem / zarządzaniem prywatnością, a rozwiązanie jest zależne od przeglądarki i wymaga przeglądarki z wbudowaną szczegółową opłatą za zarządzanie plikami cookie i / lub modułem debugowania lub wtyczka / rozszerzenie. Wymienię jeden i poproszę inne osoby, aby pisały o przeglądarkach, które znają ze szczegółami, i proszę o precyzyjne określenie wersji.

Chrom, Iron build (SRWare Iron 4.0.280)

Menu klucza (narzędzia): Opcje / Dla zaawansowanych / [Pokaż pliki cookie i uprawnienia witryn] W przypadku powiązanych domen / witryn wpisz sufiks w polu wyszukiwania (np. .Foo.tv). Uwaga: jeśli masz podświetlony węzeł (witrynę lub plik cookie), użyj tylko opcji [Usuń], aby zabić określone poddrzewa. Użycie opcji [Usuń wszystko] spowoduje nadal usuwanie plików cookie ze wszystkich witryn wybranych przez wyszukiwanie i marnowanie sesji debugowania.


1

Dodano trim () do klucza w obiekcie i nazwij go str, aby było bardziej jasne, że mamy tutaj do czynienia ze stringiem.

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


Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.