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


25

Ho aggiunto alcuni domini per bloccare ( 127.0.0.1 mydomain.com) al mio /etc/hostsfile e per qualche motivo, Safari sembra ignorarli.

Ho provato:

  • disabilitando le estensioni di Safari,
  • svuotare la cache ( sudo dscacheutil -flushcache),
  • riavviare Safari e Mac del tutto.

Chrome rispetta le /etc/hostsmodifiche, ma Safari no. In allegato è un esempio del mio /etc/hostsfile.

Sto eseguendo 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

3
Se non c'è risposta, Safari proverà ad aggiungere www.all'inizio dell'URL. Facebook può quindi reindirizzare il browser a Facebook.com. Prova ad aggiungere www.facebook.comal tuo file e vedi se funziona.
JoshRagem,

Ho pensato che potesse essere così. Ho provato sia www.facebook.com che * .facebook.com. Né ha funzionato.
Nicholas Tulach,

Quando ho salvato il testo nel blocco di codice come / etc / hosts, ha bloccato Facebook in Safari. I tuoi / etc / hosts usano i finali di riga CR o hai provato a spostare altre voci sopra le voci IPv6 ?
Lri,

La cosa interessante è che la linea che uso per reindirizzare search.yahoo.com su DuckDuckGo funziona, anche se l'ho messa dopo il reindirizzamento per facebook.com, ma la linea Facebook non fa nulla. Totalmente perplesso su questo.
Nicholas Tulach,

hai svuotato la cache DNS e cancellato la cronologia e la cache di sicurezza - se non sai come svuotare la cache DNS puoi anche riavviare il Mac.
konqui,

Risposte:


13

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 che ha sempre ignorato il DNS, permettendomi di accedere alla copia locale del sito web in qualsiasi browser, inclusi Safari e Firefox. Posso lavorare senza influire sul sito live effettivo, quindi caricare le modifiche al termine.

Recentemente, tuttavia, questa tecnica ha smesso di funzionare sia per Safari che per Firefox, ma non per Chrome, quindi per un po 'mi sono limitato ad usare Chrome per lo sviluppo locale. Ho cercato su Google e 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. Niente ha funzionato.

Poi ho provato questa semplice cosa: oltre a mettere la versione IPV4 dell'indirizzo nel file / etc / hosts, ho anche messo 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 traducono gli indirizzi IPV4 in IPV6; basta fare una ricerca su google su "ipv4 to ipv6".


Potresti controllare l'ultimo personaggio della tua /etc/hostsè una nuova riga? Ad esempio aprilo con vi.
dan

L'ultimo carattere del mio file / etc / hosts è "\ n", o esadecimale 0A.
Fred,

1
Questa è la risposta corretta Per prevenire Safari, avrai bisogno di entrambe le voci IPv4 e IPv6. Testato su MacOS 10.12.
alttag

ipaddressguide.com/ipv4-to-ipv6 - Entrambi aggiungono 2 righe + rimuovono righe molto lunghe - separali - funziona!
Artemiy StagnantIce Alexeew,

8

Ho avuto lo stesso problema ed è stato causato dalla presenza di 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.


corretto con il precedente!
Artemiy StagnantIce Alexeew,

8

Ho trascorso un bel po 'di tempo su OS X El Captain 10.11.4 per bloccare i siti usando il file / etc / hosts invece di usare il Parental Control nelle preferenze di Sistema. Alla fine ha semplicemente funzionato così:

127.0.0.1 www.website.com
127.0.0.1 website.com

Ho provato molte varianti, ma ho sempre mappato su 0.0.0.0 ( 0.0.0.0 website.com). Non ha mai funzionato in nessuna variazione.

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

  • Non è stato necessario bloccare IPv6 come fe80::1%lo0 www.website.como::1 website.com
  • Non ce n'era bisogno dscacheutil -flushcache, ma fallo nel caso.
  • Non importa se lo si incolla all'inizio o alla fine del file hosts
  • Sembra che i browser abbiano ricevuto una risposta diversa: Chrome e Safari lo hanno bloccato immediatamente dopo aver hostssalvato il file corretto , Firefox ha continuato a ignorarlo per un po '(non è chiaro se il riavvio fosse sufficiente).
    • Prova a utilizzare New Private Windowo riavviare il browser per testarlo.
  • Non aggiungere http://o https://all'inizio dell'indirizzo
  • Non erano necessari altri comandi.
  • Non disabilitare (= commentare aggiungendo #a all'inizio) le righe che sono già nel file hosts.

Controlli utili

  • Verifica se il sistema riconosce il reindirizzamento dscacheutil -q host -a name website.com: dovrebbe essere visualizzato:

    name: website.com
    ip_address: 127.0.0.1
    
  • Controllare se la sintassi del hostsfile è corretto: cat -vet /etc/hosts. Questo mostra personaggi invisibili:

    • Le linee dovrebbero finire con $
    • Tra 127.0.0.1e website.comdovrebbe essere solo uno spazio o una scheda, che viene visualizzato come ^I.
  • Tieni presente che per alcuni siti, ad esempio Facebook, potresti dover bloccare molti indirizzi .
  • Penso che il hostsfile dovrebbe terminare con una nuova riga.

6

Ho avuto un problema simile. Ogni pezzo di software sul mio Mac rispettava la voce del mio file / etc / hosts quando il mio file hosts veniva collegato (alias) ad un altro file, tranne Safari. Quando il file hosts è un collegamento simbolico, Safari lo ignora.

La mia soluzione era quella di rendere / etc / hosts un collegamento reale. Fortunatamente il file hosts che tengo aggiornato è nello stesso file system. Se non lo è, sei impazzito.

Safari cattivo ... cattivo.


1
Ho preso in considerazione un cambio di carriera - fino a quando non l'ho trovato. Ho pensato di essere davvero intelligente e di archiviare tutti i miei dotfile (e altri file di configurazione) in un repository git, e quindi creare collegamenti simbolici. Mi sono strappato quello che mi resta dei capelli da diverse ore oggi.
localheinz

Grazie, mi hai risparmiato ore di frustrazione! Safari incredibile!
DrMeers,

4

L' unica cosa 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

2
Questa è la risposta corretta È necessario aggiungere domain.come www.domain.comnel file host. Safari può aggiungere la www.tua richiesta e non corrisponderà a domain.com.
Vagner,

3

Ha lavorato per me su Yosemite:

  1. Vai a Preferenze di Sistema> Rete> Avanzate> Proxy
  2. Spuntare Auto Proxy Discovery, premere OK e Applica (non ho altro spuntato)
  3. Entra nel Terminale: dscacheutil -flushcache

Questo elimina il dnscache in Yosemite. Ora Safari e Chrome dovrebbero rispettare il file degli host.


Volevo provare questo, ma sto collegando il mio iPhone e l'opzione Avanzate> Proxy non è disponibile.
Roger Dueck,

2

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

...
127.0.0.1       facebook.com

^ Carriage Return

1
purtroppo questo non ha aiutato.
Nicholas Tulach,

Devi avere una nuova riga ( non un ritorno a capo) alla fine di ogni riga, inclusa l'ultima.
Ganbustein,

A meno che non
stia

1

In alcuni casi, è necessario aggiungere indirizzi di loopback sia per IPv4 che per IPv6 nel /etc/hostsfile.

Supponiamo che abbiamo 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.comrestituisce 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

allora dobbiamo aggiungere un'altra riga nel file hosts:

::1 website.com

0

Ho avuto un finale di linea sbagliato. Deve avere LF, avevo CR.


0

Ho avuto anche questo problema, ma la soluzione è davvero semplice Supponiamo che crei un alias nel file host sul tuo computer con il nome localhost2

La voce nel file host dovrebbe apparire così: 127.0.0.1 localhost2

Quando digiti "localhost2" nella barra dell'URL di Safari noterai nel menu a discesa che l'opzione predefinita è cercare quella su google, dovresti selezionare l'opzione dicendo "Vai al sito localhost2"


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

0

Per un indirizzo https example.com, ho dovuto includere entrambi gli indirizzi IPv4 e IPv6 sia per example.com che per www.example.com prima che funzionasse. Come questo:

##
# 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
127.0.0.1       example.com
::1     example.com
127.0.0.1       www.example.com
::1     www.example.com
255.255.255.255 broadcasthost
::1             localhost

-2

Secondo questo blog http://thecoredump.org/2011/09/editing-the-hosts-file-in-mac-os-x-lion/

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


Si sbagliano. Solo la sintassi conta, non la posizione. E tutte le voci aggiuntive devono sempre seguire le impostazioni predefinite.

Probabilmente dicono di metterlo all'inizio per evitare una trappola comune per le persone che modificano il file hosts: dimenticano di mettere una nuova riga alla fine dell'ultima riga. Senza quella nuova riga, l'ultima riga verrà ignorata. Se aggiungi la voce in primo piano, è difficile dimenticare la nuova riga.
Ganbustein,

Non so perché, ma questo funziona per me. Sto usando yosemite.
Vicario,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.