¿Por qué Safari ignora mi archivo / etc / hosts?

25

Agregué algunos dominios para bloquear ( 127.0.0.1 mydomain.com) a mi /etc/hostsarchivo y, por alguna razón, Safari parece ignorarlos.

Yo he tratado:

  • deshabilitar las extensiones de Safari,
  • limpiando el caché ( sudo dscacheutil -flushcache),
  • reiniciando Safari y la Mac por completo.

Chrome respeta los /etc/hostscambios, pero Safari no. Adjunto hay una muestra de mi /etc/hostsarchivo.

Estoy ejecutando Safari 6.0.4 con Mountain Lion 10.8.3

¿Algunas ideas?

##
# 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
Nicholas Tulach
fuente
3
Si no hay respuesta, Safari intentará agregar www.Al principio de la URL. Facebook puede redirigir el navegador a Facebook.com. Intente agregar www.facebook.coma su archivo y vea si eso funciona.
JoshRagem
Pensé que este podría ser el caso. Intenté tanto www.facebook.com como * .facebook.com. Ninguno funcionó.
Nicholas Tulach
Cuando guardé el texto en el bloque de código como / etc / hosts, bloqueó Facebook en Safari. ¿Sus / etc / hosts usan terminaciones de línea CR o ha intentado mover otras entradas por encima de las entradas IPv6 ?
Lri
Lo interesante es que la línea que uso para redirigir search.yahoo.com a DuckDuckGo funciona, incluso si la pongo después de la redirección para facebook.com, pero la línea de Facebook no hace nada. Totalmente perplejo en este caso.
Nicholas Tulach
¿Vació el caché de DNS y borró el historial de seguridad y el caché? Si no sabe cómo vaciar el caché de DNS, también puede reiniciar su Mac.
konqui

Respuestas:

13

Tenía una versión ligeramente diferente del mismo problema, y ​​pensé en mencionar lo que funcionó para mí.

Desarrollo sitios web. Para hacer eso, tengo una copia completa de cada sitio que se ejecuta en mi red local. Cuando deseo trabajar localmente, siempre he agregado una entrada para "example.com" a mi archivo local / etc / hosts, y eso siempre ha anulado el DNS, lo que me permite acceder a la copia local del sitio web en cualquier navegador, incluidos Safari y Firefox. Puedo trabajar sin afectar el sitio real en vivo, luego subir los cambios cuando estén completos.

Recientemente, sin embargo, esta técnica dejó de funcionar para Safari y Firefox, pero no para Chrome, por lo que durante un tiempo estuve limitado a usar Chrome para el desarrollo local. Busqué en Google y probé todas las soluciones sugeridas: CR al final del archivo de hosts, solo una entrada por línea, varios cambios de configuración de Firefox usando "about: config", etc. Nada funcionó.

Luego probé esta cosa simple: además de poner la versión IPV4 de la dirección en el archivo / etc / hosts, también puse la versión IPV6.

Antes de:

10.0.1.23       example.com

Después:

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

Tan pronto como agregué la entrada IPV6, tanto Firefox como Safari comenzaron a golpear el servidor (local) correcto.

Hay varios sitios web que traducirán las direcciones IPV4 a IPV6; simplemente haga una búsqueda en google en "ipv4 a ipv6".

Fred
fuente
¿Podrías comprobar que el último personaje de tu /etc/hostses una nueva línea? Por ejemplo, ábralo con vi.
dan
El último carácter de mi archivo / etc / hosts es "\ n" o hexadecimal 0A.
Fred
1
Esta es la respuesta correcta. Para evitar Safari, tendrá dos entradas IPv4 e IPv6. Probado en MacOS 10.12.
alttag
ipaddressguide.com/ipv4-to-ipv6 - Ambos agregan 2 líneas + eliminan líneas muy largas - sepárelas - ¡funciona!
Artemiy StagnantIce Alexeew
8

Tuve este mismo problema y fue causado por tener líneas realmente largas en mi archivo de hosts (varios hosts asignados a la misma dirección IP que aparece en la misma línea). Lo arreglé dividiendo esto en varias líneas.

vincent.io
fuente
correcto con anterior!
Artemiy StagnantIce Alexeew
8

Pasé bastante tiempo en OS X El Captain 10.11.4 para bloquear sitios usando el archivo / etc / hosts en lugar de usar el Control parental en las preferencias del sistema. Al final simplemente funcionó así:

127.0.0.1 www.website.com
127.0.0.1 website.com

Probé muchas variantes, pero siempre estaba asignando a 0.0.0.0 ( 0.0.0.0 website.com). Eso nunca funcionó en ninguna variación.

A diferencia de algunas sugerencias en la web, estas fueron inútiles:

  • No había necesidad de bloquear IPv6 como fe80::1%lo0 www.website.como::1 website.com
  • No era necesario dscacheutil -flushcache, pero solo hazlo por si acaso.
  • No importa si lo pega al principio o al final del archivo de hosts
  • Los navegadores parecen haber respondido de manera diferente: Chrome y Safari lo bloquearon inmediatamente una vez hostsque se guardó el archivo correcto , Firefox siguió ignorándolo por un tiempo (no está claro si reiniciarlo fue suficiente).
    • Tratar de usar New Private Window o reiniciar el navegador para probarlo.
  • No añada http:// o https://al comienzo de la dirección
  • No fueron necesarios otros comandos.
  • No deshabilite (= comente agregando un # al principio) líneas que ya están en el archivo de hosts.

Controles útiles

  • Compruebe si el sistema reconoce su redireccionamiento dscacheutil -q host -a name website.com; debería mostrar:

    name: website.com
    ip_address: 127.0.0.1
    
  • Compruebe si la sintaxis del hostsarchivo es correcta:cat -vet /etc/hosts . Esto muestra caracteres invisibles:

    • Las líneas deben terminar con $
    • Entre 127.0.0.1y website.comdebe ser solo un espacio o una pestaña, que se muestra como ^I.
  • Tenga en cuenta que para algunos sitios, como Facebook, por ejemplo, es posible que necesite bloquear muchas direcciones .
  • Creo que el hostsarchivo debería terminar con una nueva línea.
bud.dugong
fuente
6

Tuve un problema similar. Cada pieza de software en mi Mac respetaba mi entrada de archivo / etc / hosts cuando mi archivo de hosts se vinculaba (alias) a otro archivo, excepto Safari. Cuando su archivo de hosts es un enlace simbólico, Safari lo ignora.

Mi solución fue hacer / etc / hosts un enlace duro. Afortunadamente, el archivo de hosts que mantengo actualizado está en el mismo sistema de archivos. Si no es así, estás enfadado.

Mal Safari ... mal.

Matthew Du Puy
fuente
1
He estado considerando un cambio de carrera, hasta que encontré esto. Pensé que sería realmente inteligente y almacenaría todos mis archivos de puntos (y otros archivos de configuración) en un repositorio git, y luego crearía enlaces simbólicos. He estado tirando lo que queda de mi cabello durante varias horas hoy.
localheinz
¡Gracias, me has ahorrado horas de frustración! Increíble Safari!
DrMeers
4

Lo único que funciona para mí (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
Nevada
fuente
2
Esta es la respuesta correcta. Debe agregar domain.comy www.domain.comen el archivo host. Safari puede agregar www.su solicitud y no coincidirá con domain.com.
Vagner el
3

Trabajó para mí en Yosemite:

  1. Vaya a Preferencias del sistema> Red> Avanzado> Proxies
  2. Marque Auto Proxy Discovery, presione OK y Apply (no tengo nada más marcado)
  3. Ingrese en la Terminal: dscacheutil -flushcache

Esto limpia el dnscache en Yosemite. Ahora Safari y Chrome deberían respetar su archivo de hosts.

vascorola
fuente
Quería probar este, pero estoy conectando mi iPhone y la opción Avanzado> Proxies no está disponible.
Roger Dueck
2

Intente colocar uno o dos retornos de carro después de la última entrada.

...
127.0.0.1       facebook.com

^ Carriage Return
Señor ruso
fuente
1
desafortunadamente esto no ayudó.
Nicholas Tulach
Debe tener una nueva línea ( no un retorno de carro) al final de cada línea, incluida la última.
ganbustein
A menos que esté ejecutando Mac OS 9.: o
William T Froggard
1

En algunos casos, las direcciones de bucle de retorno deben agregarse tanto para IPv4 como para IPv6 en /etc/hosts archivo.

Digamos que ya agregamos una entrada de bloqueo para la dirección IPv4 de website.com:

127.0.0.1 website.com

Si dscacheutil -q host -a name website.comdevuelve direcciones para ambas versiones de protocolo:

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

name: website.com
ip_address: 127.0.0.1

entonces necesitamos agregar otra línea en el archivo de hosts:

::1 website.com
karniol
fuente
0

Tenía un final de línea incorrecto. Tiene que tener LF, tuve CR.

user83570
fuente
0

También tuve este problema, pero la solución es realmente fácil. Supongamos que crea un Alias ​​en el archivo host en su máquina con el nombre localhost2

Esa entrada en el archivo host debería verse así: 127.0.0.1 localhost2

Cuando escriba "localhost2" en la barra de URL de safari, notará en el menú desplegable que la opción predeterminada es buscar en google, debe seleccionar la opción que dice "Ir al sitio localhost2"

usuario104308
fuente
0

Asegúrese de que su / etc / hosts tenga exactamente estos atributos. Estaba copiando, modificando y reemplazando el archivo usando mi propio ID de usuario, todos los demás programas seguían funcionando excepto el safari ...

$ ls -l /etc/hosts
-rw-r--r--  1 root  wheel  1004 Sep 24 16:03 /etc/hosts
gae123
fuente
0

Para una dirección https example.com, tuve que incluir las direcciones IPv4 e IPv6 para example.com y www.example.com antes de que funcionara. Me gusta esto:

##
# 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
Jameson Quinn
fuente
-2

De acuerdo con este blog http://thecoredump.org/2011/09/editing-the-hosts-file-in-mac-os-x-lion/

Tiene que poner la entrada al inicio del archivo host. Muy poco ortodoxo. Sin embargo, no tengo ninguna experiencia personal de esto.

Lynn Fang
fuente
Están equivocados. Solo importa la sintaxis, no la ubicación. Y todas las entradas adicionales siempre deben seguir los valores predeterminados.
Probablemente digan ponerlo al principio para evitar una trampa común de personas que editan el archivo hosts: se olvidan de poner una nueva línea al final de la última línea. Sin esa nueva línea, se ignorará la última línea. Si agrega la entrada al frente, es difícil olvidar la nueva línea.
ganbustein
No estoy seguro de por qué, pero esto funciona para mí. Estoy usando yosemite.
Vicary