Warum ignoriert Safari meine Datei / etc / hosts?

25

Ich habe 127.0.0.1 mydomain.commeiner /etc/hostsDatei einige Domains hinzugefügt, die block ( ) enthalten soll, und aus irgendeinem Grund scheint Safari diese zu ignorieren.

Ich habe versucht:

  • Safari-Erweiterungen deaktivieren,
  • Cache leeren ( sudo dscacheutil -flushcache),
  • Safari und den Mac neu starten.

Chrome respektiert die /etc/hostsÄnderungen, Safari jedoch nicht. Im Anhang finden Sie ein Beispiel meiner /etc/hostsDatei.

Ich verwende Safari 6.0.4 mit Mountain Lion 10.8.3

Irgendwelche Ideen?

##
# 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
quelle
3
Wenn keine Antwort eingeht, wird Safari versuchen, Am www.Anfang der URL einzufügen. Facebook kann den Browser dann weiterleiten an Facebook.com. Versuchen Sie www.facebook.com, Ihrer Datei etwas hinzuzufügen , und prüfen Sie, ob dies funktioniert.
JoshRagem
Ich dachte, das könnte der Fall sein. Ich habe sowohl www.facebook.com als auch * .facebook.com ausprobiert. Beides hat nicht funktioniert.
Nicholas Tulach
Als ich den Text im Codeblock als / etc / hosts gespeichert habe, hat er Facebook in Safari blockiert. Verwenden Ihre / etc / hosts CR-Zeilenenden oder haben Sie versucht, andere Einträge über die IPv6-Einträge zu verschieben ?
Lri
Interessant ist, dass die Zeile, die ich für die Umleitung von search.yahoo.com zu DuckDuckGo verwende, funktioniert, auch wenn ich sie nach der Umleitung für facebook.com platziere, aber die Facebook-Zeile macht nichts. Total verblüfft.
Nicholas Tulach
Haben Sie den DNS-Cache geleert und den Sicherheitsverlauf und den Cache gelöscht? Wenn Sie nicht wissen, wie der DNS-Cache geleert werden soll, können Sie auch Ihren Mac neu starten.
Konqui

Antworten:

13

Ich hatte eine etwas andere Version des gleichen Problems und dachte, ich würde erwähnen, was für mich gearbeitet hat.

Ich entwickle Websites. Dazu habe ich eine vollständige Kopie jeder Site, die in meinem lokalen Netzwerk ausgeführt wird. Wenn ich lokal arbeiten möchte, habe ich meiner lokalen / etc / hosts-Datei immer einen Eintrag für "example.com" hinzugefügt, der das DNS immer überschreibt, sodass ich auf die lokale Kopie der Website in zugreifen kann Jeder Browser, einschließlich Safari und Firefox. Ich kann arbeiten, ohne die eigentliche Live-Site zu beeinträchtigen, und Änderungen hochladen, wenn sie abgeschlossen sind.

In letzter Zeit funktionierte diese Technik jedoch nicht mehr für Safari und Firefox, nicht jedoch für Chrome. Daher beschränkte ich mich eine Weile darauf, Chrome für die lokale Entwicklung zu verwenden. Ich suchte in Google und probierte alle vorgeschlagenen Korrekturen aus - CR am Ende der Hosts-Datei, nur ein Eintrag pro Zeile, verschiedene Änderungen der Firefox-Konfiguration mit "about: config" usw. Nichts funktionierte.

Dann habe ich Folgendes versucht: Zusätzlich zur IPV4-Version der Adresse in die Datei / etc / hosts habe ich auch die IPV6-Version eingefügt.

Vor:

10.0.1.23       example.com

Nach:

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

Sobald ich den IPV6-Eintrag hinzugefügt hatte, trafen sowohl Firefox als auch Safari auf den richtigen (lokalen) Server.

Es gibt verschiedene Websites, die IPV4-Adressen in IPV6 übersetzen. Führen Sie einfach eine Google-Suche nach "ipv4 to ipv6" durch.

Fred
quelle
Könnten Sie überprüfen, ob das letzte Zeichen Ihrer /etc/hostsZeile ein Zeilenumbruch ist? Öffnen Sie es zum Beispiel mit vi.
Dan
Das letzte Zeichen in meiner Datei / etc / hosts ist "\ n" oder hexadezimal 0A.
Fred
1
Das ist die richtige Antwort. Um Safari zu verhindern, benötigen Sie sowohl IPv4- als auch IPv6-Einträge. Getestet unter MacOS 10.12.
Alttag
ipaddressguide.com/ipv4-to-ipv6 - Beide fügen 2 Zeilen hinzu + entfernen sehr lange Zeilen - trennen Sie sie - es funktioniert!
Artemiy StagnantIce Alexeew
8

Ich hatte das gleiche Problem und es wurde durch sehr lange Zeilen in meiner Hosts-Datei verursacht (mehrere Hosts, die derselben IP-Adresse zugeordnet sind, die in derselben Zeile aufgeführt ist). Ich habe es behoben, indem ich es in mehrere Zeilen aufgeteilt habe.

vincent.io
quelle
richtig mit vorher!
Artemiy StagnantIce Alexeew
7

Ich habe einige Zeit mit OS X El Captain 10.11.4 verbracht, um Websites mithilfe der Datei / etc / hosts zu blockieren, anstatt die Kindersicherung in den Systemeinstellungen zu verwenden. Am Ende hat es einfach so geklappt:

127.0.0.1 www.website.com
127.0.0.1 website.com

Ich habe viele Varianten ausprobiert, aber ich habe immer 0.0.0.0 ( 0.0.0.0 website.com) gemappt . Das hat in keiner Variation geklappt.

Im Gegensatz zu einigen Vorschlägen im Internet waren diese nutzlos:

  • Es war nicht nötig, IPv6 wie fe80::1%lo0 www.website.comoder zu blockieren::1 website.com
  • Es gab keine Notwendigkeit dscacheutil -flushcache, aber tun Sie es einfach für den Fall.
  • Es spielt keine Rolle, ob Sie es am Anfang oder am Ende der Hosts-Datei einfügen
  • Browser scheinen anders reagiert zu haben: Chrome und Safari haben sie sofort blockiert, nachdem die richtige hostsDatei gespeichert wurde. Firefox hat sie eine Weile ignoriert (unklar, ob ein Neustart ausreicht).
    • Versuchen Sie, New Private Windowden Browser zum Testen zu verwenden oder neu zu starten.
  • Fügen Sie nicht http://oder https://am Anfang der Adresse
  • Es waren keine weiteren Befehle erforderlich.
  • Deaktivieren Sie (= auskommentieren, indem Sie #am Anfang einen Punkt einfügen ) nicht die Zeilen, die sich bereits in der hosts-Datei befinden.

Nützliche Schecks

  • Überprüfen Sie, ob das System Ihre Umleitung erkennt dscacheutil -q host -a name website.com- es sollte Folgendes anzeigen:

    name: website.com
    ip_address: 127.0.0.1
    
  • Überprüfen Sie, ob die Syntax der hostsDatei korrekt ist durch: cat -vet /etc/hosts. Dies zeigt unsichtbare Zeichen:

    • Zeilen sollten mit enden $
    • Zwischen 127.0.0.1und website.comsollte nur ein Leerzeichen oder ein Tabulator stehen, der als angezeigt wird ^I.
  • Beachten Sie, dass Sie für einige Websites, wie z. B. Facebook, möglicherweise viele Adressen blockieren müssen .
  • Ich denke, dass die hostsDatei mit einem Zeilenumbruch enden sollte.
bud.dugong
quelle
6

Ich hatte ein ähnliches Problem. Jede Software auf meinem Mac hat meinen / etc / hosts-Dateieintrag gewürdigt, als meine hosts-Datei mit einer anderen Datei außer Safari verknüpft (mit einem Alias ​​versehen) wurde. Wenn es sich bei Ihrer Hosts-Datei um einen Symlink handelt, ignoriert Safari diesen.

Meine Lösung bestand darin, / etc / hosts zu einem festen Link zu machen. Zum Glück befindet sich die von mir aktualisierte hosts-Datei im selben Dateisystem. Wenn nicht, bist du beschissen.

Schlechte Safari ... schlecht.

Matthew Du Puy
quelle
1
Ich habe über eine berufliche Veränderung nachgedacht - bis ich dies fand. Ich dachte, ich wäre wirklich schlau und würde alle meine Punktedateien (und andere Konfigurationsdateien) in einem Git-Repository speichern und dann symbolische Links erstellen. Ich habe heute mehrere Stunden lang an meinen Haaren gezogen.
Localheinz
Danke, du hast mir Stunden der Frustration erspart! Unglaubliche Safari!
DrMeers
4

Das einzige was bei mir funktioniert (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
quelle
2
Das ist die richtige Antwort. Sie müssen domain.comund www.domain.comin der Host-Datei hinzufügen . Safari kann www.Ihre Anfrage ergänzen und stimmt nicht mit überein domain.com.
Vagner
3

Hat für mich bei Yosemite gearbeitet:

  1. Gehen Sie zu Systemeinstellungen> Netzwerk> Erweitert> Proxies
  2. Kreuzen Sie Auto Proxy Discovery an, klicken Sie auf OK und Übernehmen (ich habe nichts anderes angekreuzt)
  3. Geben Sie im Terminal Folgendes ein: dscacheutil -flushcache

Dadurch wird der DNS-Cache in Yosemite geleert. Jetzt sollten Safari und Chrome Ihre Hosts-Datei respektieren.

Vascorola
quelle
Ich wollte es versuchen, aber ich binde mit meinem iPhone fest und die Option Erweitert> Proxies ist nicht verfügbar.
Roger Dueck
2

Versuchen Sie, ein oder zwei Wagenrückläufe nach dem letzten Eintrag zu setzen.

...
127.0.0.1       facebook.com

^ Carriage Return
Mr. Russian
quelle
1
das hat leider nicht geholfen.
Nicholas Tulach
Am Ende jeder Zeile, einschließlich der letzten , muss ein Zeilenumbruch ( kein Zeilenumbruch) stehen.
Ganbustein
Es sei denn, er verwendet Mac OS 9.: o
William T Froggard
1

In einigen Fällen müssen Loopback-Adressen für IPv4 und IPv6 in der /etc/hostsDatei hinzugefügt werden.

Angenommen, wir haben bereits einen blockierenden Eintrag für die IPv4-Adresse von hinzugefügt website.com:

127.0.0.1 website.com

Gibt dscacheutil -q host -a name website.comAdressen für beide Protokollversionen zurück:

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

name: website.com
ip_address: 127.0.0.1

dann müssen wir der hosts-Datei eine weitere Zeile hinzufügen:

::1 website.com
Karniol
quelle
0

Ich hatte ein falsches Zeilenende. Es muss LF haben, ich hatte CR.

user83570
quelle
0

Ich hatte dieses Problem auch, aber die Lösung ist wirklich einfach Nehmen wir an, Sie erstellen in der Hostdatei einen Alias ​​für Ihren Computer mit dem Namen localhost2

Dieser Eintrag in der Hostdatei sollte folgendermaßen aussehen: 127.0.0.1 localhost2

Wenn Sie "localhost2" in die Safari-URL-Leiste eingeben, werden Sie in der Dropdown-Liste feststellen, dass die Standardoption darin besteht, in Google zu suchen. Wählen Sie die Option "Gehe zu Site localhost2" aus.

user104308
quelle
0

Stellen Sie sicher, dass Ihre / etc / hosts genau diese Attribute hat. Ich kopierte, änderte und ersetzte die Datei mit meiner eigenen Benutzer-ID, jedes andere Programm funktionierte außer Safari ...

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

Für eine https-Adresse example.com musste ich sowohl IPv4- als auch IPv6-Adressen für example.com und www.example.com angeben, bevor dies funktioniert hat. So was:

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

Laut diesem Blog http://thecoredump.org/2011/09/editing-the-hosts-file-in-mac-os-x-lion/

Sie müssen den Eintrag an den Anfang der Hostdatei setzen. Sehr unorthodox. Habe allerdings noch keine persönliche Erfahrung damit.

Lynn Fang
quelle
Sie liegen falsch. Es kommt nur auf die Syntax an, nicht auf den Speicherort. Und alle zusätzlichen Einträge sollten immer den Standardwerten folgen.
Sie sagen wahrscheinlich, es am Anfang zu setzen, um eine häufige Gefahr für die Leute zu vermeiden, die die Hosts-Datei bearbeiten: Sie vergessen, eine neue Zeile am Ende der letzten Zeile einzufügen. Ohne diese neue Zeile wird die letzte Zeile ignoriert. Wenn Sie den Eintrag vorne einfügen, können Sie die Zeilenumbrüche nur schwer vergessen.
Ganbustein
Ich weiß nicht warum, aber das funktioniert bei mir. Ich benutze Yosemite.
Vicary