Tarayıcıdan tüm çerezleri almam gerekiyor


107

Tarayıcımda depolanan tüm çerezleri JavaScript kullanarak almam gerekiyor . Nasıl yapılabilir?


5
nayagi, maalesef sorunuzu yanıtlarsak KÖTÜ YAZILIM'dan daha azı olmayan bir yazılıma sahip olursunuz.
Jon Limjap

19
@Jon Limjap - bu tam olarak doğru değil. Kötü amaçlı yazılım olmadan bir web tarayıcısındaki tüm tanımlama bilgilerini sıralayabilmek için geçerli senaryolar vardır.
Franci Penov

Bekle bir saniye. Tüm kurabiyeler? Giriş herhangi bir web sitesinden mi? Bu kötü amaçlı yazılım ...
alexyorke

Bunu yapmanın kullanışlı ve oldukça meşru olacağı bir durumum var (bir işletme için güvenlik duvarının arkasındaki web uygulamaları). Bununla birlikte, sorun, çok fazla dahili etki alanımız olduğu için (çoğunlukla sanal ana bilgisayarlar aracılığıyla) var, bu nedenle çözümün Tek Oturum Açma kullanmak olduğu iddia edilebilir.
ClubbedAce

Tüm tanımlama bilgilerine gerçekten ihtiyacınız varsa, bunu yapmak için bir tarayıcı uzantısı oluşturmanız ve yüklemeniz gerekir. Girişler için kullanılan çerezler hassas kabul edilir ve tarayıcılar bunları gizli tutmak için ellerinden geleni yapar.
Mikko Rantalainen

Yanıtlar:


84

Yalnızca belirli bir site için tanımlama bilgilerine erişebilirsiniz. Kullanılması document.cookieseni noktalı virgül ayrılmış kaçan anahtar = değer çiftleri listesini alacak.

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

Erişimi basitleştirmek için dizeyi ayrıştırmanız ve tüm girişleri kaldırmanız gerekir:

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

Böylece daha sonra yazabilirsiniz:

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

5
bu noktalı virgülden (";") sonraki boşluğu yakalamaz, bu nedenle tuşların önünde boşluk vardır ... / kullanın; ? / onları kaldırmak için ayırırken?
Carter Cole

Ayrıştırma için bu pasajı kontrol edin document.cookies(O'Reilly kitabından).
Bentley4

Başta boşluk olmadığından emin olmak için [0] çiftine gerçekten .trim () eklemelisiniz.
Andrew Killen

38
  1. Diğer siteler için çerezleri göremezsiniz.
  2. HttpOnlyTanımlama bilgilerini göremezsiniz .
  3. Görebildiğiniz tüm çerezler document.cookie, noktalı virgülle ayrılmış name=valueçiftler listesi içeren özelliktedir .

28

Yapamazsın. Tasarım gereği, güvenlik amacıyla, yalnızca siteniz tarafından ayarlanan çerezlere erişebilirsiniz. StackOverflow, UserVoice tarafından ayarlanan çerezleri veya Amazon tarafından ayarlananları göremez.


5
facebook bunu nasıl yaptı ...? Her zaman facebook'un google'dan gezdiklerimle ilgili reklamlar gösterdiğini gördüm!
Ari

17
Aslında Facebook, Beğen düğmesini kullanarak ... her siteye kendi çerezlerini yerleştirir. Bahse girerim Google, +1 düğmelerinde ve hatta site istatistikleri komut dosyalarında da aynısını yapıyor.
PhiLho

1
teşekkür ederim ..., gözlerimi açıyor. Sosyal medya hesabı uygulamasını kullanarak giriş yapmak da dahil olmak üzere bunlarla ilgili her türlü uygulamanın işe yarayacağını düşünüyorum.
Ari

2
@SoursopTree - AdChoices değil mi? Facebook, Google üzerinden yaptığınız aramalara göre içerik görüntüleyen bir Google hizmeti olan AdChoices'i kullanır. Stackoverflow da AdChoices kullanır. Ayrıntılardan biraz uzak olabilirim - ama sanırım düşündüğün şey bu.
Rik

1
@KeepMove biz bu terminolojiye çerez senkronizasyonu
diyoruz

12

Tarayıcıda açık olan geçerli belge için tüm çerezleri almak için, document.cookieözelliği tekrar kullanırsınız .


4

Modern yaklaşım.

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

console.log(c);

;)


2

Başlık programatik olması gerektiğini belirtmediğinden, bunun gerçek bir hata ayıklama / gizlilik yönetimi sorunu olduğunu ve çözümün tarayıcıya bağlı olduğunu ve yerleşik ayrıntılı çerez yönetimi geçiş ücreti ve / veya hata ayıklama modülüne sahip bir tarayıcı gerektirdiğini varsayacağım. bir eklenti / uzantı. Birini listeleyeceğim ve diğer insanlardan ayrıntılı olarak bildikleri tarayıcılar hakkında yazmalarını isteyeceğim ve lütfen sürümler konusunda kesin olun.

Krom, Demir yapı (SRWare Iron 4.0.280)

İngiliz anahtarı (araç) menüsü: Seçenekler / Gelişmiş Seçenekler / [Çerezleri ve web sitesi izinlerini göster] İlgili alanlar / siteler için soneki arama kutusuna yazın (.foo.tv gibi). Uyarı: Tıklama ile vurgulanmış bir düğümünüz (site veya çerez) olduğunda, yalnızca belirli alt ağaçları öldürmek için [Kaldır] seçeneğini kullanın. [Tümünü Kaldır] 'ı kullanmak, aramayla seçilen tüm siteler için çerezleri yine de siler ve hata ayıklama oturumunuzu boşa harcar.


1

Nesnedeki anahtara trim () eklendi ve onu str olarak adlandırın, böylece burada string ile uğraştığımız daha açık olacaktır.

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


Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.