Por que o Safari está ignorando meu arquivo / etc / hosts?

25

Adicionei alguns domínios para bloquear ( 127.0.0.1 mydomain.com) ao meu /etc/hostsarquivo e, por algum motivo, o Safari parece estar ignorando-os.

Eu tentei:

  • desativando extensões do Safari,
  • limpando o cache ( sudo dscacheutil -flushcache),
  • reiniciando o Safari e o Mac completamente.

O Chrome respeita as /etc/hostsalterações, mas o Safari não. Em anexo está uma amostra do meu /etc/hostsarquivo.

Estou executando o Safari 6.0.4 com Mountain Lion 10.8.3

Alguma ideia?

##
# 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
fonte
3
Se não houver resposta, o Safari tentará adicionar www.ao início do URL. O Facebook pode redirecionar o navegador para Facebook.com. Tente adicionar www.facebook.comao seu arquivo e veja se isso funciona.
JoshRagem
Eu pensei que este poderia ser o caso. Tentei tanto www.facebook.com como * .facebook.com. Nem funcionou.
Nicholas Tulach
Quando salvei o texto no bloco de código como / etc / hosts, ele bloqueou o Facebook no Safari. Seus / etc / hosts usam terminações de linha CR ou você tentou mover outras entradas acima das entradas IPv6 ?
Lri 30/05
O interessante é que a linha que eu uso para redirecionar search.yahoo.com para o DuckDuckGo funciona, mesmo que eu a coloque após o redirecionamento do facebook.com, mas a linha do Facebook não faz nada. Totalmente perplexo com este.
Nicholas Tulach
você liberou o cache do DNS e limpou o histórico e o cache de segurança - se você não sabe como liberar o cache do DNS, também pode reiniciar o seu Mac.
Konqui

Respostas:

13

Eu tinha uma versão ligeiramente diferente do mesmo problema e pensei em mencionar o que funcionou para mim.

Eu desenvolvo sites. Para fazer isso, tenho uma cópia completa de cada site em execução na minha rede local. Quando desejo trabalhar localmente, sempre adicionei uma entrada para "example.com" ao meu arquivo local / etc / hosts, que sempre substituiu o DNS, possibilitando o acesso à cópia local do site em qualquer navegador, incluindo Safari e Firefox. Posso trabalhar sem afetar o site ativo real e fazer o upload das alterações quando concluídas.

Recentemente, no entanto, essa técnica parou de funcionar tanto para o Safari quanto para o Firefox, mas não para o Chrome. Por um tempo, fiquei limitado a usar o Chrome para desenvolvimento local. Pesquisei no google e tentei todas as correções sugeridas - CR no final do arquivo hosts, apenas uma entrada por linha, várias alterações na configuração do Firefox usando "about: config", etc. Nada funcionou.

Depois, tentei o seguinte: além de colocar a versão IPV4 do endereço no arquivo / etc / hosts, também coloquei a versão IPV6.

Antes:

10.0.1.23       example.com

Depois de:

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

Assim que adicionei a entrada IPV6, o Firefox e o Safari começaram a atingir o servidor (local) correto.

Existem vários sites que traduzirão endereços IPV4 para IPV6; basta fazer uma pesquisa no google em "ipv4 to ipv6".

Fred
fonte
Você pode verificar se o último caractere /etc/hostsé uma nova linha? Por exemplo, abra-o com vi.
dan
O último caractere do meu arquivo / etc / hosts é "\ n" ou hexa 0A.
Fred
1
Essa é a resposta correta. Para evitar Safari, você precisará de ambas as entradas IPv4 e IPv6. Testado no MacOS 10.12.
alttag
ipaddressguide.com/ipv4-to-ipv6 - Ambos adicionam 2 linhas + removem linhas muito longas - separam-nas - funciona!
Artemiy StagnantIce Alexeew
8

Eu tive esse mesmo problema e foi causado por ter realmente longas filas no arquivo hosts (vários hosts mapeados para o mesmo endereço IP listado na mesma linha). Corrigi-o dividindo isso em várias linhas.

vincent.io
fonte
corrija com o anterior!
Artemiy StagnantIce Alexeew
7

Passei bastante tempo no OS X El Captain 10.11.4 para bloquear sites usando o arquivo / etc / hosts em vez de usar o Controle dos Pais nas preferências do sistema. No final, simplesmente funcionou assim:

127.0.0.1 www.website.com
127.0.0.1 website.com

Eu tentei muitas variantes, mas estava sempre mapeando para 0.0.0.0 ( 0.0.0.0 website.com). Isso nunca funcionou em nenhuma variação.

Ao contrário de algumas sugestões na web, elas eram inúteis:

  • Não havia necessidade de bloqueio de IPv6 como fe80::1%lo0 www.website.comou::1 website.com
  • Não havia necessidade dscacheutil -flushcache, mas apenas faça-o no caso.
  • Não importa se você colar no início ou no final do arquivo hosts
  • Os navegadores parecem ter respondido de maneira diferente: o Chrome e o Safari o bloquearam imediatamente depois que o hostsarquivo correto foi salvo, o Firefox continuou ignorando-o por um tempo (não está claro se a reinicialização era suficiente).
    • Tente usar New Private Windowou reiniciar o navegador para testá-lo.
  • Não adicione http://ou https://no início do endereço
  • Nenhum outro comando foi necessário.
  • Não desative (= comente adicionando um #no início) as linhas que já estão no arquivo hosts.

Verificações úteis

  • Verifique se o sistema reconhece seu redirecionamento dscacheutil -q host -a name website.com- ele deve exibir:

    name: website.com
    ip_address: 127.0.0.1
    
  • Verifique se a sintaxe do hostsarquivo está correto por: cat -vet /etc/hosts. Isso mostra caracteres invisíveis:

    • As linhas devem terminar com $
    • Entre 127.0.0.1e website.comdeve haver apenas um espaço ou uma guia, que é exibida como ^I.
  • Observe que, em alguns sites, como o Facebook, por exemplo, pode ser necessário bloquear muitos endereços .
  • Eu acho que o hostsarquivo deve terminar com uma nova linha.
bud.dugong
fonte
6

Eu tive uma questão semelhante. Todos os softwares do meu Mac respeitavam a entrada do arquivo / etc / hosts quando o arquivo do host era vinculado (alias) a outro arquivo, exceto o Safari. Quando o arquivo hosts é um link simbólico, o Safari o ignora.

Minha solução foi tornar o / etc / hosts um link físico. Felizmente, o arquivo de hosts que eu mantenho atualizado está no mesmo sistema de arquivos. Se não for, você está borked.

Safari ruim ... ruim.

Matthew Du Puy
fonte
1
Eu estive considerando uma mudança de carreira - até encontrar isso. Pensei que seria realmente inteligente e armazenaria todos os meus arquivos de ponto (e outros arquivos de configuração) em um repositório git e, em seguida, criaria links simbólicos. Estou puxando o que sobrou do meu cabelo há várias horas hoje.
localheinz
Obrigado, você me salvou horas de frustração! Safari inacreditável!
DrMeers
4

A única coisa que funciona para mim (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
nev
fonte
2
Essa é a resposta correta. Você deve adicionar domain.come www.domain.comno arquivo host. O Safari pode adicionar www.sua solicitação e não coincide com domain.com.
Vagner
3

Trabalhou para mim em Yosemite:

  1. Vá para Preferências do sistema> Rede> Avançado> Proxies
  2. Marque Detecção automática de proxy, pressione OK e Aplicar (não tenho mais nada marcado)
  3. Entre no Terminal: dscacheutil -flushcache

Isso libera o dnscache em Yosemite. Agora, o Safari e o Chrome devem respeitar o arquivo de hosts.

vascorola
fonte
Eu queria experimentar este, mas estou vinculando ao meu iPhone e a opção Avançado> Proxies não está disponível.
Roger Dueck 22/02
2

Tente colocar um ou dois retornos de carro após a última entrada.

...
127.0.0.1       facebook.com

^ Carriage Return
Sr. russo
fonte
1
infelizmente isso não ajudou.
Nicholas Tulach
Você precisa ter uma nova linha ( não um retorno de carro) no final de cada linha, incluindo a última.
ganbustein
A menos que ele esteja executando o Mac OS 9.: o
William T Froggard 14/15
1

Em alguns casos, os endereços de loopback precisam ser adicionados para o IPv4 e o IPv6 no /etc/hostsarquivo.

Digamos que já adicionamos uma entrada de bloqueio para o endereço IPv4 de website.com:

127.0.0.1 website.com

Se dscacheutil -q host -a name website.comretornar endereços para ambas as versões de protocolo:

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

name: website.com
ip_address: 127.0.0.1

precisamos adicionar outra linha no arquivo hosts:

::1 website.com
karniol
fonte
0

Eu tinha final de linha errado. Tem que ter LF, eu tive CR.

user83570
fonte
0

Eu também tive esse problema, mas a solução é realmente fácil Vamos supor que você crie um Alias ​​no arquivo host da sua máquina com o nome localhost2

Essa entrada no arquivo host deve ficar assim: 127.0.0.1 localhost2

Ao digitar "localhost2" na barra de URL do safari, você notará no menu suspenso que a opção padrão é pesquisar no google, você deve selecionar a opção "Ir para o site localhost2"

user104308
fonte
0

Verifique se o seu / etc / hosts possui exatamente esses atributos. Eu estava copiando, modificando e substituindo o arquivo usando meu próprio ID de usuário, todos os outros programas continuavam funcionando, exceto o safari ...

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

Para um endereço https exemplo.com, eu tinha que incluir os endereços IPv4 e IPv6 para exemplo.com e www.exemplo.com antes de funcionar. Como isso:

##
# 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
fonte
-2

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

Você deve colocar a entrada no início do arquivo host. Muito pouco ortodoxo. Não tenho nenhuma experiência pessoal disso.

Lynn Fang
fonte
Eles estão errados. Somente a sintaxe importa, não a localização. E todas as entradas adicionais devem sempre seguir os padrões.
Eles provavelmente dizem para colocá-lo no início para evitar uma armadilha comum de pessoas editando o arquivo hosts: eles esquecem de colocar uma nova linha no final da última linha. Sem essa nova linha, a última linha será ignorada. Se você adicionar a entrada à frente, é difícil esquecer a nova linha.
ganbustein
Não sei por que, mas isso funciona para mim. Estou usando yosemite.
Vicary