Dlaczego Safari ignoruje mój plik / etc / hosts?

25

Dodałem kilka domen do block ( 127.0.0.1 mydomain.com) do mojego /etc/hostspliku iz jakiegoś powodu Safari wydaje się je ignorować.

Próbowałem:

  • wyłączanie rozszerzeń Safari,
  • czyszczenie pamięci podręcznej ( sudo dscacheutil -flushcache),
  • ponowne uruchomienie Safari i Maca całkowicie.

Chrome uwzględnia /etc/hostszmiany, ale Safari nie. W załączeniu znajduje się próbka mojego /etc/hostspliku.

Używam Safari 6.0.4 z Mountain Lion 10.8.3

Jakieś pomysły?

##
# 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
źródło
3
Jeśli nie ma odpowiedzi, Safari spróbuje dodać www.na początku adresu URL. Facebook może następnie przekierować przeglądarkę do Facebook.com. Spróbuj dodać www.facebook.comdo pliku i sprawdź, czy to działa.
JoshRagem
Myślałem, że może tak być. Próbowałem zarówno www.facebook.com, jak i * .facebook.com. Żaden nie działał.
Nicholas Tulach
Kiedy zapisałem tekst w bloku kodu jako / etc / hosts, zablokował Facebooka w Safari. Czy twój / etc / hosts używa zakończeń linii CR, czy próbowałeś przenieść inne wpisy powyżej pozycji IPv6 ?
Lri
Co ciekawe, linia, której używam do przekierowania search.yahoo.com do DuckDuckGo, działa, nawet jeśli wstawię ją po przekierowaniu na facebook.com, ale linia Facebook nic nie robi. Zupełnie zaskoczył mnie ten.
Nicholas Tulach
czy opróżniłeś pamięć podręczną dns ​​i wyczyściłeś bezpieczną historię i pamięć podręczną - jeśli nie wiesz, jak opróżnić pamięć podręczną dns, możesz również ponownie uruchomić komputer Mac.
konqui

Odpowiedzi:

13

Miałem nieco inną wersję tego samego problemu i pomyślałem, że wspomnę o tym, co dla mnie zadziałało.

Tworzę strony internetowe. Aby to zrobić, mam pełną kopię każdej witryny działającej w mojej sieci lokalnej. Kiedy chcę pracować lokalnie, zawsze dodawałem wpis „example.com” do mojego lokalnego pliku / etc / hosts, co zawsze zastępowało DNS, umożliwiając mi dostęp do lokalnej kopii witryny w dowolna przeglądarka, w tym Safari i Firefox. Mogę pracować bez wpływu na rzeczywistą witrynę, a następnie przesyłać zmiany po ich zakończeniu.

Ostatnio jednak ta technika przestała działać zarówno w przeglądarce Safari, jak i Firefox, ale nie w przypadku Chrome, więc przez pewien czas byłem ograniczony do używania Chrome do programowania lokalnego. Przeszukałem google i wypróbowałem wszystkie sugerowane poprawki - CR na końcu pliku hosts, tylko jeden wpis w linii, różne zmiany konfiguracji Firefoksa za pomocą „about: config” itp. Nic nie działało.

Potem wypróbowałem tę prostą rzecz: oprócz umieszczenia wersji adresu IPV4 w pliku / etc / hosts, umieściłem również wersję IPV6.

Przed:

10.0.1.23       example.com

Po:

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

Jak tylko dodałem wpis IPV6, zarówno Firefox, jak i Safari zaczęły uderzać we właściwy (lokalny) serwer.

Istnieją różne strony internetowe, które tłumaczą adresy IPV4 na IPV6; po prostu wyszukaj w Google „ipv4 do ipv6”.

Fred
źródło
Czy możesz sprawdzić, czy twój ostatni znak /etc/hoststo nowa linia? Na przykład otwórz go za pomocą vi.
dan
Ostatnim znakiem mojego pliku / etc / hosts jest „\ n” lub hex 0A.
Fred
1
To jest poprawna odpowiedź. Aby zapobiec Safari, potrzebujesz zarówno wpisów IPv4, jak i IPv6. Testowane w MacOS 10.12.
alt
ipaddressguide.com/ipv4-to-ipv6 - Oba dodają 2 linie + usuwają bardzo długie linie - rozdziel je - działa!
Artemiy Stagnant Ice Alexeew
8

Miałem ten sam problem i był spowodowany bardzo długimi liniami w moim pliku hosts (wiele hostów mapowanych na ten sam adres IP wymienionych w tym samym wierszu). Naprawiłem to, dzieląc to na kilka linii.

vincent.io
źródło
popraw z poprzednim!
Artemiy Stagnant Ice Alexeew
8

Spędziłem sporo czasu na OS X El Captain 10.11.4, aby zablokować witryny przy użyciu pliku / etc / hosts zamiast używania Kontroli rodzicielskiej w preferencjach systemu. Na koniec po prostu działało tak:

127.0.0.1 www.website.com
127.0.0.1 website.com

Próbowałem wielu wariantów, ale zawsze mapowałem na 0.0.0.0 ( 0.0.0.0 website.com). To nigdy nie działało w żadnej odmianie.

W przeciwieństwie do niektórych sugestii w Internecie, były one bezużyteczne:

  • Nie było potrzeby blokowania IPv6 jak fe80::1%lo0 www.website.comlub::1 website.com
  • Nie było takiej potrzeby dscacheutil -flushcache, ale zrób to na wszelki wypadek.
  • Nie ma znaczenia, czy wkleisz go na początku lub na końcu pliku hosts
  • Wygląda na to, że przeglądarki zareagowały inaczej: Chrome i Safari zablokowały go natychmiast po hostszapisaniu poprawnego pliku, Firefox ignorował go przez chwilę (nie jest jasne, czy ponowne uruchomienie było wystarczające).
    • Spróbuj użyć New Private Windowlub uruchom ponownie przeglądarkę do przetestowania.
  • Nie dodawaj http://ani https://na początku adresu
  • Żadne inne polecenia nie były konieczne.
  • Nie wyłączaj (= komentuj, dodając #na początku) wierszy, które są już w pliku hosts.

Przydatne kontrole

  • Sprawdź, czy system rozpoznaje twoje przekierowanie dscacheutil -q host -a name website.com- powinien wyświetlić:

    name: website.com
    ip_address: 127.0.0.1
    
  • Sprawdź, czy składnia hostspliku jest poprawna: cat -vet /etc/hosts. Pokazuje niewidoczne znaki:

    • Linie powinny się kończyć $
    • Pomiędzy 127.0.0.1i website.compowinna być tylko spacja lub tabulator, który jest wyświetlany jako ^I.
  • Pamiętaj, że w niektórych witrynach, na przykład na Facebooku, może być konieczne zablokowanie wielu adresów .
  • Myślę, że hostsplik powinien kończyć się nową linią.
bud.dugong
źródło
6

Miałem podobny problem. Każde oprogramowanie na moim Macu honorowało wpis w moim pliku / etc / hosts, kiedy mój plik hosts był dowiązany (alias) do innego pliku, z wyjątkiem Safari. Gdy plik hosts jest dowiązaniem symbolicznym, Safari go ignoruje.

Moim rozwiązaniem było uczynienie / etc / hosts twardym linkiem. Na szczęście aktualizowany przeze mnie plik hosts znajduje się w tym samym systemie plików. Jeśli tak nie jest, jesteś zaskoczony.

Złe Safari ... złe.

Matthew Du Puy
źródło
1
Zastanawiałem się nad zmianą kariery - dopóki jej nie znalazłem. Pomyślałem, że jestem naprawdę inteligentny i przechowuję wszystkie moje pliki kropkowe (i inne pliki konfiguracyjne) w repozytorium git, a następnie tworzę dowiązania symboliczne. Od kilku godzin ciągnę dziś za włosy.
localheinz
Dziękuję, zaoszczędziłeś mi godzin frustracji! Niewiarygodne safari!
DrMeers
4

Tylko rzeczą, która pracuje dla mnie (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
źródło
2
To jest poprawna odpowiedź. Musisz dodać domain.comiw www.domain.compliku hosta. Safari może dodać www.prośbę i nie będzie pasować do domain.com.
Vagner,
3

Pracowałem dla mnie w Yosemite:

  1. Wybierz Preferencje systemowe> Sieć> Zaawansowane> Proxy
  2. Zaznacz Automatyczne wykrywanie proxy, naciśnij OK i Zastosuj (nie zaznaczyłem nic innego)
  3. Wprowadź w terminalu: dscacheutil -flushcache

Spowoduje to opróżnienie pamięci podręcznej dnscache w Yosemite. Teraz Safari i Chrome powinny szanować plik hosts.

vascorola
źródło
Chciałem wypróbować ten, ale tethering z moim iPhonem i opcja Zaawansowane> Serwery proxy nie jest dostępna.
Roger Dueck
2

Spróbuj umieścić jeden lub dwa znaki powrotu karetki po ostatnim wpisie.

...
127.0.0.1       facebook.com

^ Carriage Return
Mr. Russian
źródło
1
niestety to nie pomogło.
Nicholas Tulach
Musisz mieć nową linię ( nie powrót karetki) na końcu każdej linii, w tym ostatniej.
ganbustein
Chyba że
używa
1

W niektórych przypadkach w /etc/hostspliku należy dodać adresy sprzężenia zwrotnego zarówno dla IPv4, jak i IPv6 .

Powiedzmy, że już dodaliśmy wpis blokujący dla adresu IPv4 website.com:

127.0.0.1 website.com

Jeśli dscacheutil -q host -a name website.comzwraca adresy dla obu wersji protokołu:

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

name: website.com
ip_address: 127.0.0.1

następnie musimy dodać kolejną linię do pliku hosts:

::1 website.com
karniol
źródło
0

Miałem złe zakończenie linii. To musi mieć LF, miałem CR.

user83570
źródło
0

Miałem też ten problem, ale rozwiązanie jest naprawdę łatwe Załóżmy, że utworzysz Alias ​​w pliku hosta na maszynie o nazwie localhost2

Wpis w pliku hosta powinien wyglądać następująco: 127.0.0.1 localhost2

Po wpisaniu „localhost2” na pasku adresu URL safari zauważysz w menu rozwijanym, że domyślną opcją jest wyszukiwanie go w Google, należy wybrać opcję „Przejdź do strony localhost2”

użytkownik104308
źródło
0

Upewnij się, że twój / etc / hosts ma dokładnie te atrybuty. Kopiowałem, modyfikowałem i zastępowałem plik przy użyciu własnego identyfikatora użytkownika, wszystkie inne programy działały oprócz safari ...

$ ls -l /etc/hosts
-rw-r--r--  1 root  wheel  1004 Sep 24 16:03 /etc/hosts
gae123
źródło
0

W przypadku adresu https example.com musiałem podać zarówno adresy IPv4, jak i IPv6 dla przykładów example.com i www.example.com, zanim zadziałało. Lubię to:

##
# 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
źródło
-2

Według tego bloga http://thecoredump.org/2011/09/editing-the-hosts-file-in-mac-os-x-lion/

Musisz umieścić wpis na początku pliku hosta. Bardzo niekonwencjonalny. Nie ma to jednak żadnego osobistego doświadczenia.

Lynn Fang
źródło
Oni są źli. Liczy się tylko składnia, a nie lokalizacja. I wszystkie dodatkowe wpisy powinny zawsze być zgodne z wartościami domyślnymi.
Prawdopodobnie mówią, aby umieścić go na początku, aby uniknąć częstej pułapki wśród osób edytujących plik hosts: zapominają o umieszczeniu nowego wiersza na końcu ostatniej linii. Bez tej nowej linii ostatni wiersz zostanie zignorowany. Jeśli dodasz wpis z przodu, trudno zapomnieć o nowej linii.
ganbustein
Nie wiem dlaczego, ale to działa dla mnie. Używam yosemite.
Wikariusz