32

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

Вот мой файл /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.

6 ответов6

40

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
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 истекает пара минут, чтобы истечь из кеша. Если вы не знаете способ удалить его.

Один из методов тестирования, который мне пригодился, - это использование нового окна инкогнито в 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.

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

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

1

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. Возможно, вам придется перезагрузить компьютер. И проблема решена!

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .