Soluzioni alternative per i siti interrotti senza cookie?

19

Per la privacy contro il monitoraggio, ho il mio browser configurato per rifiutare i cookie per impostazione predefinita. Autorizzo solo i cookie provenienti da domini autorizzati. In generale, questo funziona bene per me. Tuttavia, ora ho almeno un caso in cui è diventato scomodo. Io pago un abbonamento digitale al Washington Post, perché mi piace il loro giornalismo e voglio sostenerlo, ma non voglio che i loro inserzionisti mi seguano, quindi non accedo mai e non accetto i cookie da loro. Questo ha funzionato fino a poco tempo fa. Negli ultimi giorni, hanno fatto qualcosa di nuovo sul loro sito web con il risultato che sebbene io possa visualizzare la loro home page, se faccio clic su una storia, ottengo questo messaggio in firefox:

The page isn’t redirecting properly. Firefox has detected that the server is redirecting the request for this address in a way that will never complete. This problem can sometimes be caused by disabling or refusing to accept cookies.

Questo non è loro paywalling del sito. In un browser configurato per accettare tutti i cookie, posso accedere a tutti i loro contenuti senza effettuare l'accesso, ma ogni clic su una pagina crea circa 20 cookie da washingtonpost.com e circa 20 cookie dai loro inserzionisti. Se vado alla pagina iniziale, cancelli i cookie, e poi clicco su un link a una storia, funziona, ma i cookie vengono ricreati. Quindi sembra che ci sia del codice sulle pagine che sto cercando di vedere che tenta di creare questi cookie e poi genera un errore se la creazione dei cookie fallisce.

C'è qualche buona strategia per questo tipo di situazione che preserva la mia privacy? Ad esempio, ho pensato di scrivere uno script che dovrebbe essere eseguito ogni 10 secondi sulla mia macchina e cancellare tutti i cookie ad eccezione di quelli dei domini autorizzati.

related: link

    
posta Ben Crowell 15.02.2018 - 00:36
fonte

3 risposte

31

Se sei preoccupato per i tracker, probabilmente stai cercando Isolamento della prima parte .

L'isolamento della prima parte è una funzionalità che Firefox ha adottato dalla interconnessione dell'identificatore di origine incrociata concetto. FPI funziona collegando tutti i cookie al dominio proprietario (quello nella barra degli indirizzi), rendendo i cookie di terze parti distinti tra diversi domini. Cioè, se stai visitando a.com e un tracker imposta un cookie, e successivamente visita b.com che utilizza lo stesso tracker, non sarà in grado di vedere i cookie che ha inserito in precedenza, quando la prima parte il dominio era diverso ( a.com ). Un'altra spiegazione:

What is First-Party Isolation

FPI works by separating cookies on a per-domain basis. This is important because most online advertisers drop a cookie on the user's computer for each site the user visits and the advertisers loads an ad.

With FPI enabled, the ad tracker won't be able to see all the cookies it dropped on that user's PC, but only the cookie created for the domain the user is currently viewing.

This will force the ad tracker to create a new user profile for each site the user visits and the advertiser won't be able to aggregate these cookies and the user's browsing history into one big fat profile.

(Source)

Per abilitare l'FPI, puoi andare a about:config e impostare privacy.firstparty.isolate su true , oppure installare il Add-on di isolamento prima parte . Tuttavia, prima di attivarlo, tieni presente che alcune app Web si basano su cookie di terze parti per funzionalità effettive e potrebbero diventare inutilizzabili in seguito (ad esempio potresti non essere in grado di accedere). Se riscontri problemi di questo tipo, prova anche a impostare privacy.firstparty.isolate.restrict_opener_access su false che allenterà le regole di isolamento e hai meno probabilità di riscontrare problemi durante, ad esempio, un flusso di accesso tra domini che ti reindirizza tra domini diversi.

Un altro approccio in Firefox sono contenitori .

Con i contenitori stai essenzialmente isolando diverse sessioni l'una dall'altra senza dover utilizzare più profili del browser. Ad esempio, potresti leggere WaPo in un contenitore distinto e qualsiasi cookie impostato dai tracker in quel contenitore non sarebbe visibile negli altri. I contenitori sono disponibili in Firefox Nightly e come componente aggiuntivo .

(Chrome non ha questa funzione esatta, ma puoi usare più profili per ottenere lo stesso effetto.)

I thought about writing a script that would run every 10 seconds on my machine and delete all cookies except those from whitelisted domains.

Il problema che vedo con questo è che alcuni siti ricreano i cookie immediatamente dopo averli eliminati (purché i loro script siano ancora caricati). E se il tuo tempismo è sbagliato, potresti eventualmente incontrare gli stessi problemi con i cookie disabilitati.

Infine, ci sono anche componenti aggiuntivi degni di nota come Ghostery che rilevano e bloccano i tracker conosciuti. Quindi, hai un sacco di opzioni per mantenere la tua privacy senza disabilitare completamente i cookie - che sfortunatamente non ti portano molto lontano nel moderno web.

    
risposta data 15.02.2018 - 01:43
fonte
6

Avvia una finestra del browser in incognito (o un'istanza VM se sei davvero paranoico) per visualizzare WaPo, quindi usalo solo per quel sito, oppure chiudilo e aprine uno nuovo ogni volta che visiti.

    
risposta data 15.02.2018 - 01:02
fonte
0

Questa è solo una possibile risposta alla mia domanda, e probabilmente non quella ottimale, ma ho pensato che valesse la pena di essere descritta. Ho provato l'idea di una sceneggiatura per cancellare i cookie che non fanno parte di una lista bianca. Di seguito è riportato uno script rubino da utilizzare con Firefox che ho trovato. L'ho provato in Linux, ma probabilmente è utilizzabile in modo multipiattaforma (forse le barre nel percorso del file devono essere modificate per Windows?).

Sembra che sebbene io possa cancellare immediatamente i cookie dal file sqlite in cui sono memorizzati, firefox utilizza la propria copia in-memory dei cookie. Pertanto, la cancellazione dei cookie non ha effetto fino al riavvio di firefox.

Firefox in realtà ha il proprio meccanismo per cancellare tutti i cookie tranne quelli autorizzati alla fine di ogni sessione. Tuttavia, è necessario scegliere se utilizzare tale meccanismo o utilizzare la whitelisting per i cookie all'interno di una sessione. Facendo quest'ultimo e utilizzando anche questo script, ottengo un controllo più granulare: ho siti che non sono autorizzati a impostare i cookie (il valore predefinito), i siti che sono elencati in grigio (cookie cancellati dopo la fine della sessione), e siti che sono autorizzati nella whitelist.

Pro:

  • I cookie sono effettivamente spariti (dopo un riavvio) anziché bloccati come in FPI. Questo rende facile capire cosa sta succedendo.
  • Un sito come washingtonpost.com funziona in modo assolutamente normale, perché la cancellazione dei cookie non avviene mentre sono ancora sul sito.
  • Cross-platform (-ish?).
  • È semplice per me mantenere una lista bianca.

Contro:

  • Questo impedisce solo il monitoraggio che si estende attraverso le sessioni. Non impedirà il monitoraggio a breve termine all'interno di una sessione.
  • Funziona solo per firefox.

Codice:

#!/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()
    
risposta data 16.02.2018 - 00:20
fonte

Leggi altre domande sui tag