Dlaczego nie mogę zablokować Facebooka za pomocą / etc / hosts na Mountain Lion (OS X)?

34

Przez pewien czas działał w starej konfiguracji, ale z jakiegoś powodu przestał działać.

Oto mój plik / etc / hosts z mojego Mountain Lion MacBook Air:

127.0.0.1 reddit.com www.reddit.com
127.0.0.1 facebook.com www.facebook.com
##
# 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

To blokuje Reddit, ale nie Facebook.

Próbowałem opróżnić pamięć podręczną DNS komputera („sudo killall -HUP mDNSResponder”), Bowserów (FF i Chrome) i próbowałem ponownie uruchomić komputer.

Przesunąłem wpisy na początek pliku zgodnie z zaleceniami tego artykułu , ale nie działało to wcześniej, gdy znajdowało się na dole. Za każdym razem blokowałoby Reddit, ale nie Facebooka.

seanieb
źródło
2
To jest dziwne. To też nie działało - zastanawiam się, czy ma to związek z integracją ML z Facebookiem. Zastanawiam się, jak przetestować tę teorię.
Jerry Seeger
1
Przeszukując folder systemowy w poszukiwaniu wszystkich wzmianek o facebook.com znaleziono (między innymi) /System/Library/Caches/com.apple.internetaccounts.domainscache.plist, który moim zdaniem wyglądał jak najbardziej prawdopodobny winowajca. Nie próbowałem z tym zadzierać, ale to może być to, czego szukasz. Byłbym jednak bardzo ostrożny.
Jerry Seeger
1
Zgodziłbym się z @JerrySeeger, że to prawdopodobnie funkcja integracji z Facebookiem. To powiedziawszy, dlaczego blokujesz witryny za pomocą tak kapryśnej metody? Jeśli chcesz kontrolować dostęp do Internetu, zdobądź proxy.
ta.speot.is
Chcę tylko to zablokować, ponieważ rujnuje to moją produktywność w ciągu dnia. Nie jest to wielka sprawa, ale co ważniejsze, jestem bardzo ciekawy technicznych powodów, dla których nie mogę tego zablokować.
seanieb
1
Co dzieje się w dniu dig facebook.comlub nslookup facebook.com?
JohannesM

Odpowiedzi:

43

harrymc jest blisko, ale z jakiegoś powodu OS X (od 10.8.2) nie respektuje adresu sprzężenia zwrotnego IPv6 :: 1 (prawdopodobnie błąd), więc musisz użyć fe80 :: 1% lo0. Powodem, dla którego musisz zablokować IPv6, jest to, że Facebook będzie ci udostępniał swoją witrynę przez V6, jeśli Twój dostawca usług internetowych go obsługuje. Możesz to łatwo zweryfikować, instalując wtyczkę do przeglądarki, która wyświetla ikonę, gdy witryna jest obsługiwana przez IPv6. Powodem, dla którego nie było to dla ciebie problemem, jest fakt, że Facebook prawdopodobnie dopiero niedawno zaczął udostępniać swoją witrynę przez IPv6.

Prawidłowa odpowiedź to:

# Block Facebook IPv4
127.0.0.1   www.facebook.com
127.0.0.1   facebook.com
127.0.0.1   login.facebook.com
127.0.0.1   www.login.facebook.com
127.0.0.1   fbcdn.net
127.0.0.1   www.fbcdn.net
127.0.0.1   fbcdn.com
127.0.0.1   www.fbcdn.com
127.0.0.1   static.ak.fbcdn.net
127.0.0.1   static.ak.connect.facebook.com
127.0.0.1   connect.facebook.net
127.0.0.1   www.connect.facebook.net
127.0.0.1   apps.facebook.com

# Block Facebook IPv6
fe80::1%lo0 facebook.com
fe80::1%lo0 login.facebook.com
fe80::1%lo0 www.login.facebook.com
fe80::1%lo0 fbcdn.net
fe80::1%lo0 www.fbcdn.net
fe80::1%lo0 fbcdn.com
fe80::1%lo0 www.fbcdn.com
fe80::1%lo0 static.ak.fbcdn.net
fe80::1%lo0 static.ak.connect.facebook.com
fe80::1%lo0 connect.facebook.net
fe80::1%lo0 www.connect.facebook.net
fe80::1%lo0 apps.facebook.com
Jesse Endahl
źródło
3
Cześć Jesse. Skopiowałem wszystko do moich / etc / hosts i nadal mogę dostać się na Facebooka. Czy wciąż czegoś brakuje?
gruszczy
nie działa dla mnie edredon. Próbowałem go również zablokować w routerze, inne strony są zablokowane w porządku, ale nie Facebook
adrianTNT
3
zadziałało po
wyjściu
5

Spróbuj dodać następujący wiersz /etc/resolv.conf

lookup file, bind

Powinno to zmusić OS X do korzystania z / etc / hosts przed dns. Jedynym problemem jest to, że jeśli używasz dhcp, ten plik zostanie nadpisany przy każdym ponownym uruchomieniu.

John Siu
źródło
4

Byłem tym także podeptany. Lubię robić tylko niezbędne kroki i włamać się tylko do niezbędnych plików konfiguracyjnych i nic więcej. Oto podsumowanie tego, co działa, a co nie, co jest konieczne lub nie jest na dzień dzisiejszy :

  • Hack @ jesse-endahl działa dokładnie. Trzeba użyć fe80::1%lo0dla pętli zwrotnej IPv6, wpisy dla::1 wydają się być ignorowane.

  • sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder -- nie są potrzebne

  • Dodanie lookup file, bindw /etc/resolv.conf- nie są potrzebne

Podczas testowania należy pamiętać o tym, że niektóre aplikacje mają własną pamięć podręczną DNS. Na przykład przeglądarka Chrome: wyszukiwanie adresów IP na każdej stronie nie ma sensu, jeśli adres IPfacebook.com był 173.252.110.27minutę temu powinny być nadal tak samo teraz, prawda? Utrudnia to testowanie rzeczy, ponieważ Chrome potrzebuje kilku minut na wygaśnięcie pamięci podręcznej. Chyba że znasz metodę jego zniszczenia.

Jedną z metod testowania, która działała dla mnie dobrze, jest korzystanie z funkcji Nowe okno incognito w Chrome. Za każdym razem, gdy coś zmieniasz /etc/hosts, otwórz nowe okno incognito, aby wyświetlić wynik, i powinno działać natychmiast. Okna bez incognito również będą działać, w końcu zajmuje to tylko kilka minut.

Przestań krzywdzić Monikę
źródło
3

Wypróbuj to :

# Block Facebook IPv4
127.0.0.1   www.facebook.com
127.0.0.1   facebook.com
127.0.0.1   login.facebook.com
127.0.0.1   www.login.facebook.com
127.0.0.1   fbcdn.net
127.0.0.1   www.fbcdn.net
127.0.0.1   fbcdn.com
127.0.0.1   www.fbcdn.com
127.0.0.1   static.ak.fbcdn.net
127.0.0.1   static.ak.connect.facebook.com
127.0.0.1   connect.facebook.net
127.0.0.1   www.connect.facebook.net
127.0.0.1   apps.facebook.com
# Block Facebook IPv6
::1 www.facebook.com
::1 facebook.com
::1 login.facebook.com
::1 www.login.facebook.com
::1 fbcdn.net
::1 www.fbcdn.net
::1 fbcdn.com
::1 www.fbcdn.com
::1 static.ak.fbcdn.net
::1 static.ak.connect.facebook.com
::1 connect.facebook.net
::1 www.connect.facebook.net
::1 apps.facebook.com

Jeśli to nie zadziała, zobacz artykuł Zablokuj Facebook który również sugeruje:

  • Blokowanie Facebooka na routerze
  • Zablokuj Facebooka za pomocą niestandardowej listy bloków OpenDNS

Jeśli to nadal nie działa, możesz wypróbować aplikację SelfControl .

harrymc
źródło
Celem tego pytania nie jest po prostu pozwolenie mi zablokować Facebooka. Chciałbym zrozumieć, dlaczego plik / etc / hosts nie działa.
seanieb
@seanieb Połączył tę odpowiedź z inną odpowiedzią. Możesz znaleźć wyjaśnienie tam.
3

Mac OS X El Capitan: wersja 10.11.5

Safari: 9.1.1

Musiałem użyć kombinacji wszystkich powyższych odpowiedzi, aby móc w końcu zablokować Facebooka. Oto zawartość mojego /etc/hosts pliku:

# 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
# Block Facebook
127.0.0.1   www.facebook.com
127.0.0.1   facebook.com
127.0.0.1   login.facebook.com
127.0.0.1   www.login.facebook.com
127.0.0.1   fbcdn.net
127.0.0.1   www.fbcdn.net
127.0.0.1   fbcdn.com
127.0.0.1   www.fbcdn.com
127.0.0.1   static.ak.fbcdn.net
127.0.0.1   static.ak.connect.facebook.com
127.0.0.1   connect.facebook.net
127.0.0.1   www.connect.facebook.net
127.0.0.1   apps.facebook.com
fe80::1%lo0 facebook.com
fe80::1%lo0 login.facebook.com
fe80::1%lo0 www.login.facebook.com
fe80::1%lo0 fbcdn.net
fe80::1%lo0 www.fbcdn.net
fe80::1%lo0 fbcdn.com
fe80::1%lo0 www.fbcdn.com
fe80::1%lo0 static.ak.fbcdn.net
fe80::1%lo0 static.ak.connect.facebook.com
fe80::1%lo0 connect.facebook.net
fe80::1%lo0 www.connect.facebook.net
fe80::1%lo0 apps.facebook.com
::1 www.facebook.com
::1 facebook.com
::1 login.facebook.com
::1 www.login.facebook.com
::1 fbcdn.net
::1 www.fbcdn.net
::1 fbcdn.com
::1 www.fbcdn.com
::1 static.ak.fbcdn.net
::1 static.ak.connect.facebook.com
::1 connect.facebook.net
::1 www.connect.facebook.net
::1 apps.facebook.com

I dziwnie ... zadziałało!

Kroki:

  1. Na swoim terminalu uruchom sudo vi /etc/hosts lub sudo pico /etc/hosts

  2. Zapisz powyższą zawartość. (z komentarza # Block Facebook)

  3. Na terminalu uruchom dscacheutil -flushcache .

  4. W przeglądarce Safari wyczyść pamięć podręczną. Wybierz pasek menu Develop -> Empty Cache

  5. Może być konieczne ponowne uruchomienie komputera. I problem rozwiązany!

Meghna Natraj
źródło
Tak w końcu: D. Praca w Niemczech z Mojave.
fl034
1

Spróbuj dodać te

127.0.0.1 www.facebook.com

127.0.0.1 facebook.com 127.0.0.1 static.ak.fbcdn.net

127.0.0.1 www.static.ak.fbcdn.net

127.0.0.1 login.facebook.com

127.0.0.1 www.login.facebook.com

127.0.0.1 fbcdn.net

127.0.0.1 www.fbcdn.net

127.0.0.1 fbcdn.com

127.0.0.1 www.fbcdn.com

127.0.0.1 static.ak.connect.facebook.com

127.0.0.1 www.static.ak.connect.facebook.com

Następnie powinno zostać zablokowane.

Karan Raj Baruah
źródło