Pourquoi Safari ignore-t-il mon fichier / etc / hosts?

25

J'ai ajouté quelques domaines à bloquer ( 127.0.0.1 mydomain.com) à mon /etc/hostsfichier et pour une raison quelconque, Safari semble les ignorer.

J'ai essayé:

  • désactiver les extensions Safari,
  • vider le cache ( sudo dscacheutil -flushcache),
  • redémarrage de Safari et du Mac.

Chrome respecte les /etc/hostsmodifications, mais pas Safari. Ci-joint un échantillon de mon /etc/hostsdossier.

J'utilise Safari 6.0.4 avec Mountain Lion 10.8.3

Des idées?

##
# 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
la source
3
S'il n'y a pas de réponse, Safari essaiera d'ajouter www.au début de l'URL. Facebook peut ensuite rediriger le navigateur vers Facebook.com. Essayez d'ajouter www.facebook.comà votre fichier et voyez si cela fonctionne.
JoshRagem
J'ai pensé que cela pourrait être le cas. J'ai essayé www.facebook.com et * .facebook.com. Aucun n'a fonctionné.
Nicholas Tulach
Lorsque j'ai enregistré le texte dans le bloc de code sous / etc / hosts, il a bloqué Facebook dans Safari. Vos / etc / hosts utilisent-ils des fins de ligne CR, ou avez-vous essayé de déplacer d'autres entrées au-dessus des entrées IPv6 ?
Lri
Ce qui est intéressant, c'est que la ligne que j'utilise pour rediriger search.yahoo.com vers DuckDuckGo fonctionne, même si je la mets après la redirection pour facebook.com, mais la ligne Facebook ne fait rien. Totalement perplexe sur celui-ci.
Nicholas Tulach
avez-vous vidé le cache DNS et effacé l'historique et le cache safary - si vous ne savez pas comment vider le cache DNS, vous pouvez également redémarrer votre Mac.
konqui

Réponses:

13

J'ai eu une version légèrement différente du même problème et j'ai pensé mentionner ce qui a fonctionné pour moi.

Je développe des sites Web. Pour ce faire, j'ai une copie complète de chaque site fonctionnant sur mon réseau local. Lorsque je souhaite travailler localement, je viens toujours d'ajouter une entrée pour "example.com" à mon fichier local / etc / hosts, et qui a toujours remplacé DNS, ce qui me permet d'accéder à la copie locale du site Web dans n'importe quel navigateur, y compris Safari et Firefox. Je peux travailler sans affecter le site en direct réel, puis télécharger les modifications lorsqu'elles sont terminées.

Récemment, cependant, cette technique a cessé de fonctionner à la fois pour Safari et Firefox, mais pas pour Chrome, donc pendant un certain temps, je me suis limité à utiliser Chrome pour le développement local. J'ai recherché google et essayé toutes les corrections suggérées - CR à la fin du fichier hosts, une seule entrée par ligne, divers changements de configuration de Firefox en utilisant "about: config", etc. Rien n'a fonctionné.

Ensuite, j'ai essayé cette chose simple: en plus de mettre la version IPV4 de l'adresse dans le fichier / etc / hosts, j'ai également mis la version IPV6.

Avant:

10.0.1.23       example.com

Après:

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

Dès que j'ai ajouté l'entrée IPV6, Firefox et Safari ont commencé à frapper le bon serveur (local).

Il existe différents sites Web qui traduiront les adresses IPV4 en IPV6; faites juste une recherche google sur "ipv4 to ipv6".

Fred
la source
Pourriez-vous vérifier le dernier caractère de votre /etc/hostsest une nouvelle ligne? Par exemple, ouvrez-le avec vi.
dan
Le dernier caractère de mon fichier / etc / hosts est "\ n", ou hex 0A.
Fred
1
Ceci est la bonne réponse. Pour éviter Safari, vous aurez besoin des deux entrées IPv4 et IPv6. Testé sous MacOS 10.12.
alttag
ipaddressguide.com/ipv4-to-ipv6 - Les deux ajoutent 2 lignes + suppriment les lignes très longues - les séparent - ses travaux!
Artemiy StagnantIce Alexeew
8

J'ai eu ce même problème et il était dû au fait d'avoir de très longues lignes dans mon fichier d'hôtes (plusieurs hôtes mappés à la même adresse IP répertoriée sur la même ligne). Je l'ai corrigé en le divisant en plusieurs lignes.

vincent.io
la source
correct avec le précédent!
Artemiy StagnantIce Alexeew
8

J'ai passé pas mal de temps sur OS X El Captain 10.11.4 pour bloquer les sites utilisant le fichier / etc / hosts au lieu d'utiliser le contrôle parental dans les préférences système. À la fin, cela a simplement fonctionné comme ceci:

127.0.0.1 www.website.com
127.0.0.1 website.com

J'ai essayé beaucoup de variantes, mais je mappais toujours sur 0.0.0.0 ( 0.0.0.0 website.com). Cela n'a jamais fonctionné dans aucune variation.

Contrairement à certaines suggestions sur le Web, celles-ci étaient inutiles:

  • Il n'était pas nécessaire de bloquer IPv6 comme fe80::1%lo0 www.website.comou::1 website.com
  • Ce n'était pas nécessaire dscacheutil -flushcache, mais faites-le au cas où.
  • Peu importe si vous le collez au début ou à la fin du fichier hosts
  • Les navigateurs semblent avoir réagi différemment: Chrome et Safari l'ont bloqué immédiatement une fois le hostsfichier correct enregistré, Firefox a continué de l'ignorer pendant un certain temps (pas clair si le redémarrage était suffisant).
    • Essayez d'utiliser New Private Windowou de redémarrer le navigateur pour le tester.
  • N'ajoutez pas http://ou https://au début de l'adresse
  • Aucune autre commande n'était nécessaire.
  • Ne désactivez pas (= commentez en ajoutant un #au début) les lignes qui se trouvent déjà dans le fichier hosts.

Vérifications utiles

  • Vérifiez si le système reconnaît votre redirection dscacheutil -q host -a name website.com- il devrait afficher:

    name: website.com
    ip_address: 127.0.0.1
    
  • Vérifiez si la syntaxe du hostsfichier est correct par: cat -vet /etc/hosts. Cela montre des caractères invisibles:

    • Les lignes doivent se terminer par $
    • Entre 127.0.0.1et website.comne doit être qu'un espace ou un onglet, qui s'affiche comme ^I.
  • Notez que pour certains sites, comme Facebook par exemple, vous devrez peut-être bloquer un grand nombre d'adresses .
  • Je pense que le hostsfichier devrait se terminer par une nouvelle ligne.
bud.dugong
la source
6

J'ai eu un problème similaire. Chaque logiciel sur mon Mac a honoré mon entrée de fichier / etc / hosts lorsque mon fichier hosts était lié (alias) à un autre fichier, sauf Safari. Lorsque votre fichier d'hôtes est un lien symbolique, Safari l'ignore.

Ma solution a été de faire de / etc / hosts un lien dur. Heureusement, le fichier hosts que je tiens à jour se trouve dans le même système de fichiers. Si ce n'est pas le cas, vous êtes foutu.

Mauvais Safari ... mauvais.

Matthew Du Puy
la source
1
J'envisage un changement de carrière - jusqu'à ce que je trouve cela. Je pensais être vraiment intelligent et stocker tous mes fichiers dot (et autres fichiers de configuration) dans un référentiel git, puis créer des liens symboliques. Je tire ce qui reste de mes cheveux depuis plusieurs heures aujourd'hui.
localheinz
Merci, vous m'avez sauvé des heures de frustration! Incroyable Safari!
DrMeers
4

La seule chose qui fonctionne pour moi (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
la source
2
Ceci est la bonne réponse. Vous devez ajouter domain.comet www.domain.comdans le fichier hôte. Safari peut ajouter www.votre demande et ne correspondra pas à domain.com.
Vagner
3

A travaillé pour moi sur Yosemite:

  1. Accédez à Préférences Système> Réseau> Avancé> Proxys
  2. Cochez Auto Proxy Discovery, appuyez sur OK et appliquez (je n'ai rien d'autre coché)
  3. Entrez dans le terminal: dscacheutil -flushcache

Cela vide le dnscache dans Yosemite. Maintenant, Safari et Chrome doivent respecter votre fichier d'hôtes.

vascorola
la source
Je voulais essayer celui-ci, mais je suis connecté à mon iPhone et l'option Avancé> Proxies n'est pas disponible.
Roger Dueck
2

Essayez de mettre un ou deux retours chariot après la dernière entrée.

...
127.0.0.1       facebook.com

^ Carriage Return
M. Russe
la source
1
malheureusement, cela n'a pas aidé.
Nicholas Tulach
Vous devez avoir une nouvelle ligne ( pas un retour chariot) à la fin de chaque ligne, y compris la dernière.
ganbustein
Sauf s'il exécute Mac OS 9.: o
William T Froggard
1

Dans certains cas, des adresses de bouclage doivent être ajoutées pour IPv4 et IPv6 dans le /etc/hostsfichier.

Supposons que nous ayons déjà ajouté une entrée de blocage pour l'adresse IPv4 de website.com:

127.0.0.1 website.com

Si dscacheutil -q host -a name website.comrenvoie des adresses pour les deux versions de protocole:

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

name: website.com
ip_address: 127.0.0.1

alors nous devons ajouter une autre ligne dans le fichier hosts:

::1 website.com
karniol
la source
0

J'ai eu une mauvaise fin de ligne. Il faut avoir LF, j'avais CR.

user83570
la source
0

J'ai aussi eu ce problème mais la solution est vraiment simple Supposons que vous créez un alias dans le fichier hôte de votre machine avec le nom localhost2

Cette entrée dans le fichier hôte devrait ressembler à ceci: 127.0.0.1 localhost2

Lorsque vous tapez "localhost2" dans la barre d'URL de safari, vous remarquerez dans la liste déroulante que l'option par défaut est de rechercher cela dans google, vous devez sélectionner l'option disant "Aller au site localhost2"

user104308
la source
0

Assurez-vous que votre / etc / hosts possède exactement ces attributs. Je copiais, modifiais et remplaçais le fichier à l'aide de mon propre ID utilisateur, tous les autres programmes fonctionnaient sauf safari ...

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

Pour une adresse https example.com, je devais inclure les adresses IPv4 et IPv6 pour example.com et www.example.com avant que cela fonctionne. Comme ça:

##
# 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
la source
-2

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

Vous devez mettre l'entrée au début du fichier hôte. Très peu orthodoxe. Je n'ai cependant aucune expérience personnelle de cela.

Lynn Fang
la source
Ils ont tort. Seule la syntaxe importe, pas l'emplacement. Et toutes les entrées supplémentaires doivent toujours suivre les valeurs par défaut.
Ils disent probablement de le mettre au début pour éviter un piège commun aux personnes éditant le fichier hosts: ils oublient de mettre une nouvelle ligne à la fin de la dernière ligne. Sans cette nouvelle ligne, la dernière ligne sera ignorée. Si vous ajoutez l'entrée à l'avant, il est difficile d'oublier la nouvelle ligne.
ganbustein
Je ne sais pas pourquoi, mais cela fonctionne pour moi. J'utilise du yosemite.
Vicary