Perché Safari ignora il mio file / etc / hosts?

20

Ho aggiunto alcuni domini per bloccare ( 127.0.0.1 mydomain.com ) al mio file /etc/hosts e per qualche ragione Safari sembra ignorarli.

Ho provato:

  • disabilitazione delle estensioni di Safari,
  • cancellazione della cache ( sudo dscacheutil -flushcache ),
  • Riavvio completo di Safari e Mac.

Chrome rispetta le modifiche di /etc/hosts , ma Safari no. In allegato c'è un esempio del mio file /etc/hosts .

Sono in esecuzione Safari 6.0.4 con Mountain Lion 10.8.3

Qualche idea?

##
# Host Database
#
# localhost is used to configure the loopback interface
# when the system is booting.  Do not change this entry.
##
127.0.0.1       localhost
255.255.255.255 broadcasthost
::1             localhost
fe80::1%lo0     localhost
127.0.0.1       facebook.com
    
posta Nicholas Tulach 30.05.2013 - 16:25
fonte

12 risposte

7

Ho avuto lo stesso problema ed è stato causato dall'avere delle righe molto lunghe nel mio file hosts (più host mappati allo stesso indirizzo IP elencato sulla stessa riga). L'ho risolto suddividendolo in più righe.

    
risposta data 17.07.2013 - 13:51
fonte
6

Ho avuto un problema simile. Ogni parte del software sul mio Mac onora la mia voce di file / etc / hosts quando il mio file hosts è stato simulato (con alias) su un altro file, eccetto Safari. Quando il tuo file hosts è un link simbolico, Safari lo ignora.

La mia soluzione era di rendere / etc / hosts un hard link. Fortunatamente il file hosts che tengo aggiornato si trova nello stesso file system. Se non lo è, sei borked.

Bad Safari ... cattivo.

    
risposta data 24.09.2015 - 08:43
fonte
6

Ho avuto una versione leggermente diversa dello stesso problema, e ho pensato di menzionare ciò che ha funzionato per me.

Sviluppo siti web. Per fare ciò, ho una copia completa di ciascun sito in esecuzione sulla mia rete locale. Quando desidero lavorare localmente, ho sempre aggiunto una voce per "esempio.com" al mio file locale / etc / hosts, e questo ha sempre sovrascritto il DNS, permettendomi di accedere alla copia locale del sito web in qualsiasi browser, inclusi Safari e Firefox. Posso lavorare senza influire sul sito reale attuale, quindi caricare le modifiche quando sono complete.

Recentemente, tuttavia, questa tecnica ha smesso di funzionare sia per Safari che per Firefox, ma non per Chrome, quindi per un periodo mi sono limitato a utilizzare Chrome per lo sviluppo locale. Ho cercato su google e ho provato tutte le correzioni suggerite - CR alla fine del file hosts, solo una voce per riga, varie modifiche alla configurazione di Firefox usando "about: config", ecc. Non funzionava.

Poi ho provato questa cosa semplice: oltre a mettere la versione IPV4 dell'indirizzo nel file / etc / hosts, ho anche inserito la versione IPV6.

Prima:

10.0.1.23       example.com

Dopo:

10.0.1.23       example.com
0:0:0:0:0:FFFF:0A00:0117        example.com

Non appena ho aggiunto la voce IPV6, sia Firefox che Safari hanno iniziato a colpire il server (locale) corretto.

Esistono vari siti Web che tradurranno gli indirizzi IPV4 in IPV6; fai una ricerca su google su "ipv4 a ipv6".

    
risposta data 02.11.2016 - 19:14
fonte
4

Ho trascorso parecchio tempo su OS X El Captain 10.11.4 per bloccare i siti usando il file / etc / hosts invece di usare Parental Control nelle preferenze di Sistema. Alla fine ha semplicemente funzionato in questo modo:

127.0.0.1 www.website.com
127.0.0.1 website.com

Ho provato molte varianti, ma mappavo sempre a 0.0.0.0 ( 0.0.0.0 website.com ). Non ha mai funzionato in nessuna variante.

A differenza di alcuni suggerimenti sul Web, questi erano inutili:

  • Non c'era bisogno di bloccare IPv6 come fe80::1%lo0 www.website.com o ::1 website.com
  • Non c'era bisogno di dscacheutil -flushcache , ma fallo nel caso.
  • Non importa se lo incolli all'inizio o alla fine del file hosts
  • Sembra che i browser abbiano reagito in modo diverso: Chrome e Safari l'hanno bloccato immediatamente dopo il salvataggio del file hosts corretto, Firefox ha continuato a ignorarlo per un po '(non è chiaro se il riavvio fosse sufficiente).
    • Prova a usare New Private Window o riavvia il browser per testarlo.
  • Non aggiungere http:// o https:// all'inizio dell'indirizzo
  • Non erano necessari altri comandi.
  • Non disabilitare (= commento con l'aggiunta di # all'inizio) linee che sono già nel file hosts.

Controlli utili

  • Controlla se il sistema riconosce il tuo reindirizzamento dscacheutil -q host -a name website.com - dovrebbe visualizzare:

    name: website.com
    ip_address: 127.0.0.1
    
  • Verifica se la sintassi del file hosts è corretta di: cat -vet /etc/hosts . Mostra i personaggi invisibili:

    • Le righe dovrebbero terminare con $
    • Tra 127.0.0.1 e website.com dovrebbe essere solo uno spazio o una scheda, che viene visualizzato come ^I .
  • Si noti che per alcuni siti, come ad esempio Facebook, potrebbe essere necessario blocca molti indirizzi .
  • Penso che il file hosts termini con una nuova riga.
risposta data 16.08.2017 - 12:08
fonte
3

Ho lavorato per me su Yosemite:

  1. Vai a Preferenze di Sistema > Rete > Avanzate > Proxy
  2. Seleziona Rilevazione proxy automatico, fai clic su OK e Applica (non ho spuntato nient'altro)
  3. Inserisci nel terminale: dscacheutil -flushcache

Questo svuota il dnscache in Yosemite. Ora Safari e Chrome dovrebbero rispettare il tuo file hosts.

    
risposta data 23.12.2014 - 04:14
fonte
2

Prova a inserire uno o due ritorni a capo dopo l'ultima voce.

...
127.0.0.1       facebook.com

^ Carriage Return
    
risposta data 31.05.2013 - 07:40
fonte
2

La cosa solo che funziona per me (10.12.1 "Sierra"):

127.0.0.1   example.com
127.0.0.1   www.example.com
fe80::1%lo0 example.com
fe80::1%lo0 www.example.com
    
risposta data 09.11.2016 - 11:42
fonte
1

In alcuni casi, è necessario aggiungere gli indirizzi di loopback per IPv4 e IPv6 nel file /etc/hosts .

Supponiamo di aver già aggiunto una voce di blocco per l'indirizzo IPv4 di website.com :

127.0.0.1 website.com

Se dscacheutil -q host -a name website.com restituisce gli indirizzi per entrambe le versioni del protocollo:

name: website.com
ipv6_address: rand:omin:vali:dipv:6addr:ess5

name: website.com
ip_address: 127.0.0.1

quindi dobbiamo aggiungere un'altra riga nel file hosts:

::1 website.com
    
risposta data 26.03.2018 - 21:07
fonte
0

Ho sbagliato la fine della riga. Deve avere LF, ho avuto CR.

    
risposta data 25.06.2014 - 15:49
fonte
0

Ho avuto anche questo problema ma la soluzione è davvero semplice Supponiamo che tu crei un alias nel file host sulla tua macchina con il nome localhost2

Quella voce nel file host dovrebbe assomigliare a questa: 127.0.0.1 localhost2

Quando digiti "localhost2" nella barra dell'URL di safari noterai nel menu a discesa che l'opzione predefinita è cercare in google, dovresti selezionare l'opzione "Vai a Site localhost2"

    
risposta data 11.12.2014 - 15:58
fonte
0

Assicurati che il tuo / etc / hosts abbia esattamente questi attributi. Stavo copiando, modificando e sostituendo il file usando il mio userid, ogni altro programma continuava a funzionare tranne safari ...

$ ls -l /etc/hosts
-rw-r--r--  1 root  wheel  1004 Sep 24 16:03 /etc/hosts
    
risposta data 25.09.2017 - 01:06
fonte
-2

Secondo questo blog link

Devi inserire la voce all'inizio del file host. Molto non ortodosso. Non ho alcuna esperienza personale di questo però.

    
risposta data 13.06.2013 - 18:14
fonte

Leggi altre domande sui tag