web-dev-qa-db-fra.com

Solutions de contournement pour les sites qui sont cassés sans cookies?

Pour la confidentialité contre le suivi, mon navigateur est configuré pour refuser les cookies par défaut. J'autorise uniquement les cookies des domaines en liste blanche. En général, cela fonctionne bien pour moi. Cependant, j'ai maintenant au moins un cas où cela est devenu gênant. Je paie pour un abonnement numérique au Washington Post, car j'aime leur journalisme et je veux le soutenir, mais je ne veux pas qu'ils ou leurs annonceurs me suivent, donc je ne me connecte jamais et n'accepte pas les cookies de leur part. Cela a bien fonctionné jusqu'à récemment. Au cours des derniers jours, ils ont fait quelque chose de nouveau sur leur site Web, si bien que je peux afficher leur page d'accueil, si je clique sur une histoire, je reçois ce message dans Firefox:

La page ne redirige pas correctement. Firefox a détecté que le serveur redirige la demande pour cette adresse d'une manière qui ne se terminera jamais. Ce problème peut parfois être causé par la désactivation ou le refus d'accepter les cookies.

Ce n'est pas eux qui payent le site. Dans un navigateur configuré pour accepter tous les cookies, je peux accéder à tout leur contenu sans vous connecter, mais chaque clic sur une page crée environ 20 cookies de washingtonpost.com et environ 20 cookies de leurs annonceurs. Si je vais sur la page d'accueil, effacez les cookies, puis cliquez sur un lien vers une histoire, cela fonctionne, mais les cookies sont recréés. Il semble donc qu'il y ait du code sur les pages que j'essaie d'afficher qui tente de créer ces cookies, puis génère une erreur si la création des cookies échoue.

Existe-t-il une bonne stratégie pour ce type de situation qui préserve ma vie privée? Par exemple, j'ai pensé à écrire un script qui s'exécuterait toutes les 10 secondes sur ma machine et supprimer tous les cookies sauf ceux des domaines en liste blanche.

liés: https://askubuntu.com/questions/368325/how-to-clear-browsers-cache-and-cookies-from-terminal

19
Ben Crowell

Si vous êtes préoccupé par les trackers, vous recherchez probablement Isolement de première partie .

L'isolement interne est une fonctionnalité que Firefox a adoptée à partir du concept Crosslink Origin Identifier Unlinkability du navigateur Tor. FPI fonctionne en liant tous les cookies au domaine propriétaire (celui de la barre d'URL), ce qui rend les cookies tiers distincts entre les différents domaines. Autrement dit, si vous visitez a.com et un outil de suivi définit un cookie, puis visitez b.com qui utilise le même tracker, il ne pourra pas voir les cookies qu'il a placés plus tôt, lorsque le domaine propriétaire était différent (a.com). Une autre explication:

Qu'est-ce que l'isolement de première partie

FPI fonctionne en séparant les cookies sur une base par domaine. Ceci est important car la plupart des annonceurs en ligne déposent un cookie sur l'ordinateur de l'utilisateur pour chaque site visité par l'utilisateur et les annonceurs chargent une annonce.

Avec FPI activé, le suivi des publicités ne pourra pas voir tous les cookies qu'il a déposés sur le PC de cet utilisateur, mais uniquement le cookie créé pour le domaine que l'utilisateur consulte actuellement.

Cela obligera le tracker publicitaire à créer un nouveau profil utilisateur pour chaque site visité par l'utilisateur et l'annonceur ne pourra pas agréger ces cookies et l'historique de navigation de l'utilisateur en un seul gros profil.

(Source)

Pour activer FPI, vous pouvez soit accéder à about:config Et mettre privacy.firstparty.isolate à true, ou installez l'officiel Module complémentaire d'isolation de première partie . Mais avant de l'activer, sachez que certaines applications Web s'appuient sur des cookies tiers pour les fonctionnalités réelles et peuvent devenir inutilisables par la suite (par exemple, vous pourriez ne pas pouvoir vous connecter). Si vous rencontrez de tels problèmes, essayez également de définir privacy.firstparty.isolate.restrict_opener_access à false, ce qui assouplira les règles d'isolement et vous êtes moins susceptible de rencontrer des problèmes lors, par exemple, d'un flux de connexion interdomaine qui vous redirige entre différents domaines.


Une autre approche dans Firefox est conteneurs .

Avec les conteneurs, vous isolez essentiellement différentes sessions les unes des autres sans avoir à utiliser plusieurs profils de navigateur. Par exemple, vous pouvez lire WaPo dans un conteneur distinct, et tous les cookies définis par les trackers dans ce conteneur ne seraient pas visibles dans les autres. Les conteneurs sont disponibles dans Firefox Nightly et en tant qu'add-on .

(Chrome n'a pas cette fonctionnalité exacte, mais vous pouvez utiliser plusieurs profils pour obtenir le même effet.)


J'ai pensé à écrire un script qui s'exécuterait toutes les 10 secondes sur ma machine et supprimer tous les cookies sauf ceux des domaines en liste blanche.

Le problème que je vois avec cela est que certains sites recréent des cookies immédiatement après les avoir supprimés (tant que leurs scripts sont toujours chargés). Et si votre timing est mauvais, vous pourriez éventuellement rencontrer les mêmes problèmes que ceux rencontrés avec les cookies désactivés.

Enfin, il existe également des compléments réputés tels que Ghostery qui détectent et bloquent les trackers connus. Ainsi, vous disposez de nombreuses options pour maintenir votre confidentialité sans désactiver complètement les cookies - ce qui, malheureusement, ne vous mène pas très loin sur le Web moderne.

31
Arminius

Lancez une fenêtre de navigateur incognito (ou VM si vous êtes vraiment paranoïaque) pour afficher WaPo, puis utilisez-la uniquement pour ce site, ou fermez-la et ouvrez-en une nouvelle chaque fois que vous visitez.

6
JesseM

Ce n'est qu'une réponse possible à ma propre question, et probablement pas la meilleure, mais j'ai pensé que cela valait la peine d'être décrit. J'ai essayé l'idée d'un script pour supprimer les cookies qui ne figurent pas sur une liste blanche. Vous trouverez ci-dessous un script Ruby à utiliser avec Firefox que j'ai trouvé. Je l'ai testé sous Linux, mais il est probablement utilisable de manière multiplateforme (peut-être que les barres obliques dans le chemin du fichier doivent être changé pour Windows?).

Il semble que même si je peux immédiatement supprimer les cookies du fichier sqlite dans lequel ils sont stockés, firefox utilise sa propre copie en mémoire des cookies. Par conséquent, la suppression des cookies ne prend effet que lorsque je redémarre Firefox.

Firefox a en fait son propre mécanisme pour supprimer tous les cookies sauf les listes blanches à la fin de chaque session. Cependant, vous devez choisir d'utiliser ce mécanisme ou d'utiliser la liste blanche pour les cookies dans une session. En faisant ce dernier et en utilisant également ce script, j'obtiens un contrôle plus granulaire: j'ai des sites qui ne sont pas autorisés à définir des cookies (par défaut), des sites qui sont en liste grise (cookies effacés après la fin de la session), et les sites qui sont sur liste blanche.

Avantages:

  • Les cookies sont réellement partis (après un redémarrage) plutôt que murés comme dans FPI. Cela permet de savoir facilement ce qui se passe.
  • Un site comme washingtonpost.com fonctionne de manière absolument normale, car la suppression des cookies n'a pas lieu tant que je suis encore sur le site.
  • Multiplateforme (-ish?).
  • Il est simple pour moi de maintenir une liste blanche.

Les inconvénients:

  • Cela empêche uniquement le suivi qui s'étend sur plusieurs sessions. Cela n'empêchera pas le suivi de courte durée dans une session.
  • Fonctionne uniquement pour Firefox.

Code:

#!/usr/bin/Ruby

require 'sqlite3'

# Delete all cookies except those from hosts on the following list.
# Note that firefox keeps its cookies cached in memory, so this cleaning will not
# take effect inside firefox until you restart firefox.

# Putting foo.com on this list automatically includes www.foo and .foo.
$allowed_hosts = [
  "Amazon.com",
  "bit.ly",
  "github.com",
  "gmx.com",
  "rockclimbing.com",
  "stackexchange.com"
]

$allowed_hosts_all_forms = []
$allowed_hosts.each { |Host|
  $allowed_hosts_all_forms.Push(Host)
  $allowed_hosts_all_forms.Push("www."+Host)
  $allowed_hosts_all_forms.Push("."+Host)
}

def main
  # https://unix.stackexchange.com/questions/82597/where-does-firefox-store-its-cookies-on-linux
  # loop over profiles
  Dir.glob( "#{Dir.home}/.mozilla/firefox/*.default/cookies.sqlite").each { |cookie_file_name|
    print "cookie file #{cookie_file_name}\n"
    begin
      db = SQLite3::Database.open(cookie_file_name)
      print "before deletion:#{list_all_hosts(db).sort.join(' ')}\n"
      allowed = []
      $allowed_hosts_all_forms.each {|Host| allowed.Push("'#{Host}'") } # surround with single quotes
      #print "delete from moz_cookies where Host not in (#{allowed.join(',')});"
      db.execute("delete from moz_cookies where Host not in (#{allowed.join(',')});")
      print "after deletion:#{list_all_hosts(db).sort.join(' ')}\n"
    rescue SQLite3::Exception => e 
      puts "Exception occurred"
      puts e
    ensure
      db.close if db
    end
  }
end

def list_all_hosts(db)
  hosts = []
  db.execute("SELECT Host,name FROM moz_cookies").each { |row|
    hosts.Push(row[0])
  }
  return hosts
end

main()
0
Ben Crowell