Почему я не могу заблокировать Facebook с помощью / etc / hosts на Mountain Lion (OS X)?

34

Некоторое время он работал в старой конфигурации, но потом почему-то перестал работать.

Вот мой файл / etc / hosts с моего MacBook Air в Mountain Lion:

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

Это блокирует Reddit, но не Facebook.

Я попытался очистить кэш DNS для компьютера ("sudo killall -HUP mDNSResponder"), загрузчиков (FF и Chrome) и попытался перезагрузить компьютер.

И я переместил записи в верхнюю часть файла по совету этой статьи , но раньше он тоже не работал, когда был внизу. Каждый раз это будет блокировать Reddit, но не Facebook.

seanieb
источник
2
Это странно. Это также не сработало для меня - интересно, связано ли это с интеграцией ML в Facebook. Я размышляю, как проверить эту теорию.
Джерри Сигер
1
Поиск в системной папке всех упоминаний о facebook.com обнаружил (среди прочих) /System/Library/Caches/com.apple.internetaccounts.domainscache.plist, который выглядел на мой взгляд как наиболее вероятный виновник. Я не пробовал возиться с этим, но это может быть то, что вы ищете. Я был бы очень осторожен, хотя.
Джерри Сигер
1
Я бы согласился с @JerrySeeger, что это, вероятно, функция интеграции с Facebook. Тем не менее, почему вы блокируете сайты таким изменчивым методом? Если вы хотите контролировать доступ в интернет, получите прокси.
ta.speot.is
Я только хочу заблокировать это, поскольку это разрушает мою производительность в течение дня. Это не так уж важно, но что более важно, мне очень любопытно, по каким техническим причинам я не могу это заблокировать.
Seanieb
1
Что происходит на dig facebook.comили nslookup facebook.com?
JohannesM

Ответы:

43

harrymc близок, но по какой-то причине OS X (по состоянию на 10.8.2) не учитывает адрес обратной петли IPv6 :: 1 (вероятно, ошибка), поэтому вы должны использовать fe80 :: 1% lo0. Причина, по которой вам нужно заблокировать IPv6, заключается в том, что Facebook будет обслуживать вас через V6, если ваш провайдер его поддерживает. Вы можете легко убедиться в этом, установив плагин для браузера, который отображает значок, когда сайт обслуживается через IPv6. Причина, по которой это не было для вас проблемой раньше, заключается в том, что Facebook, вероятно, только недавно начал обслуживать свой сайт по IPv6.

Итак, правильный ответ:

# 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
Джесси Эндал
источник
3
Привет, Джесси, я скопировал и вставил все в мой / etc / hosts, и я все еще могу попасть на Facebook. Я все еще что-то упускаю?
gruszczy
не работает для меня Eider. Я тоже пытался заблокировать его в своем роутере, другие сайты нормально блокируются, но не в Facebook
adrianTNT
3
это сработало после того, как я перестал перезапускать сафари
Mujah Maskey
5

Попробуйте добавить следующую строку в /etc/resolv.conf

lookup file, bind

Это должно заставить OS X использовать / etc / hosts перед dns. Единственная проблема - если вы используете dhcp, этот файл будет перезаписан при каждой перезагрузке.

Джон Сиу
источник
4

Меня это тоже растоптало. Мне нравится делать только необходимые шаги и взламывать только необходимые файлы конфигурации и ничего более. Вот краткое изложение того, что работает, а что нет, что необходимо или нет на сегодняшний день :

  • Взлом @ jesse-endahl работает точно. Необходимо использовать fe80::1%lo0для обратной петли IPv6, записи для, ::1кажется, игнорируются.

  • sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder -- не нужно

  • Добавление lookup file, bindв /etc/resolv.conf- не требуется

При тестировании важно помнить, что некоторые приложения имеют собственный кэш DNS. Например, браузер Chrome: нет смысла искать IP-адреса при каждой перезагрузке страницы, если IP-адрес facebook.comбыл 173.252.110.27минуту назад, он все еще должен оставаться прежним, верно? Это затрудняет тестирование, потому что Chrome истекает пара минут, чтобы истечь из кеша. Если вы не знаете способ удалить его.

Один из методов тестирования, который мне пригодился, - это использование нового окна Incognito в Chrome. Каждый раз, когда вы что-то меняете /etc/hosts, открываете новое окно инкогнито, чтобы просмотреть результат, и оно должно работать немедленно. Окна без инкогнито тоже будут работать, в конце концов, это займет пару минут.

Прекратить постоянный вред Монике
источник
3

Попробуйте это :

# 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

Если это не работает, см. Статью « Блокировать Facebook», в которой также предлагается:

  • Блокировка Facebook на роутере
  • Блокировать Facebook с помощью пользовательского списка блокировки OpenDNS

Если это все еще не работает, вы можете попробовать приложение SelfControl .

harrymc
источник
Цель этого вопроса не в том, чтобы просто позволить мне заблокировать Facebook, я хотел бы понять, почему файл / etc / hosts не работает.
seanieb
@seanieb Он связал этот ответ с другим ответом. Вы можете найти объяснение там.
3

Mac OS X El Capitan: версия 10.11.5

Safari: 9.1.1

Мне пришлось использовать комбинацию всех вышеперечисленных ответов, чтобы наконец заблокировать Facebook. Вот содержимое моего /etc/hosts файла:

# 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

И странно .. это сработало!

шаги:

  1. На вашем терминале запустите sudo vi /etc/hosts или sudo pico /etc/hosts

  2. Сохраните вышеуказанное содержимое. (из комментария # Block Facebook)

  3. На терминале беги dscacheutil -flushcache.

  4. В Safari очистите кеш. Выбор строки меню Develop -> Empty Cache

  5. Возможно, вам придется перезагрузить компьютер. И проблема решена!

Мегна Натрай
источник
Да, наконец: D. Работа в Германии с Мохаве.
fl034
1

Попробуйте добавить эти

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

Тогда это должно быть заблокировано.

Каран Радж Баруа
источник