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

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


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.


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

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.


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

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.


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

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


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”


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

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

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


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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.