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

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

Yo he tratado:

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

Chrome respeta los /etc/hostscambios, pero Safari no. Adjunto 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
Cuando guardé el texto en el bloque de código como /etc/hosts, bloqueó Facebook en Safari. ¿Su /etc/hosts usa terminaciones de línea CR, o ha intentado mover otras entradas por encima de las entradas de IPv6 ?

Respuestas (14)

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 agrego una entrada para "example.com" a mi archivo local /etc/hosts, y eso siempre anula 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 en vivo real, luego cargar los cambios cuando estén completos.

Recientemente, sin embargo, esta técnica dejó de funcionar tanto para Safari como para Firefox, pero no para Chrome, por lo que durante un tiempo me limité a usar Chrome para el desarrollo local. Busqué en Google y probé todas las correcciones 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é esto 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:

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 acceder al servidor (local) correcto.

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

¿Podría comprobar que el último carácter de su /etc/hostses una nueva línea? Por ejemplo, ábrelo con vi.
El último carácter de mi archivo /etc/hosts es "\n", o hexadecimal 0A.
Esta es la respuesta correcta. Para evitar Safari, necesitará entradas IPv4 e IPv6. Probado en MacOS 10.12.
ipaddressguide.com/ipv4-to-ipv6 - Ambos agregan 2 líneas + eliminan líneas muy largas - sepáralas - ¡funciona!

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 mapeando 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 había necesidad de dscacheutil -flushcachehacerlo, pero 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).
    • Intente usar New Private Windowo reiniciar el navegador para probarlo.
  • No agregue http://o https://al principio de la dirección
  • No fueron necesarios otros comandos.
  • No deshabilite (= comente agregando un #al principio) las líneas que ya están en el archivo de hosts.

Cheques útiles

  • Compruebe si el sistema reconoce su redirección 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 haber 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 deba bloquear muchas direcciones .
  • Creo que el hostsarchivo debería terminar con una nueva línea.

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

correcto con anterior!

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

Mi solución fue hacer de /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 borracho.

Mala Safari... mala.

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

Lo único que me funciona (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
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.

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

...
127.0.0.1       facebook.com

^ Carriage Return
desafortunadamente esto no ayudó.
Debe tener una nueva línea ( no un retorno de carro) al final de cada línea, incluida la última.
A menos que esté ejecutando Mac OS 9. :o
Este hace el truco para mí. Gracias.

Trabajó para mí en Yosemite:

  1. Vaya a Preferencias del sistema > Red > Avanzado > Proxies
  2. Marque Descubrimiento automático de proxy, presione Aceptar y Aplicar (no tengo nada más marcado)
  3. Ingrese en la Terminal: dscacheutil -flushcache

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

Quería probar este, pero estoy conectado con mi iPhone y la opción Avanzado > Proxies no está disponible.

En algunos casos, es necesario agregar direcciones de loopback para IPv4 e IPv6 en el /etc/hostsarchivo.

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 del 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

A partir de macOS Monterey 12.0 beta (21A5506j), Safari ignoraba mi /etc/hostsarchivo cuando tenía activado iCloud Private Relay. La solución es deshabilitar Private Relay por completo en Configuración> Red> Usar iCloud Private Relay.

Buena llamada. Tengo Configuración> Red> Limitar seguimiento de dirección IP para (también) deshabilitar iCloud Private Relay
Dios mío, me salvó la vida :) gracias amigo

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

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

Esa entrada en el archivo de 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 eso en Google, debe seleccionar la opción que dice "Ir al sitio localhost2"

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 Safari...

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

Para una dirección https ejemplo.com, tuve que incluir direcciones IPv4 e IPv6 tanto para ejemplo.com como para www.ejemplo.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

Según este blog http://thecoredump.org/2011/09/editing-the-hosts-file-in-mac-os-x-lion/

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

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