Почему я не могу заблокировать Facebook с помощью /etc/hosts на Mountain Lion (OS X)?
Некоторое время он работал в старой конфигурации, но потом почему-то перестал работать.
Вот мой файл /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 ответов
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
Попробуйте добавить следующую строку в /etc/resolv.conf
lookup file, bind
Это должно заставить OS X использовать /etc/hosts перед dns. Единственная проблема - если вы используете dhcp, этот файл будет перезаписан при каждой перезагрузке.
Меня это тоже растоптало. Мне нравится делать только необходимые шаги и взламывать только необходимые файлы конфигурации и ничего более. Вот краткое изложение того, что работает, а что нет, что необходимо или нет на сегодняшний день:
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
, откройте новое окно инкогнито, чтобы просмотреть результат, и он должен работать немедленно. Окна без инкогнито тоже будут работать, в конце концов, это займет пару минут.
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
И странно.. это сработало!
шаги:
На своем терминале запустите
sudo vi /etc/hosts
или жеsudo pico /etc/hosts
Сохраните вышеуказанное содержимое. (из комментария
# Block Facebook
)На терминале беги
dscacheutil -flushcache
,В Safari очистите кеш. Выбор строки меню
Develop
->Empty Cache
Возможно, вам придется перезагрузить компьютер. И проблема решена!
Попробуйте это:
# 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.
Попробуйте добавить эти
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
Тогда это должно быть заблокировано.