为什么我不能在Mountain Lion(OS X)上使用/ etc / hosts阻止Facebook?


34

它在旧的配置中工作了一段时间,但由于某种原因而停止了工作。

这是我的Mountain Lion MacBook Air的/ etc / hosts文件:

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”),bowers(FF和Chrome),并尝试重新启动计算机。

并且我已根据本文建议将条目移至文件的顶部,但在底部时也无法使用。每次都会阻止Reddit,但不会阻止Facebook。


2
真奇怪 它对我也不起作用-我想知道这是否与ML的facebook集成有关。我正在考虑如何检验该理论。
杰里·西格

1
在系统文件夹中搜索所有提到的facebook.com(除其他外)/System/Library/Caches/com.apple.internetaccounts.domainscache.plist,在我看来,这是最有可能的罪魁祸首。我没有尝试弄乱它,但这可能正是您想要的。不过,我会非常谨慎。
Jerry Seeger

1
我会同意@JerrySeeger,这可能是Facebook集成的功能。就是说,为什么要用这种善变的方法来阻止网站?如果要控制互联网访问,请获取代理。
ta.speot。是

我只想阻止它,因为它会破坏我的一天的生产力。没什么大不了的,但是更重要的是,我对我无法阻止它的技术原因感到很好奇。
seanieb

1
dig facebook.com或会发生什么nslookup facebook.com
JohannesM

Answers:


43

harrymc已经很接近了,但是由于某种原因,OS X(从10.8.2版本开始)不遵循:: 1的IPv6环回地址(可能是一个错误),因此您必须使用fe80 :: 1%lo0。您需要阻止IPv6的原因是,如果ISP支持,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

对我不起作用绒毛。我也尝试在路由器中将其阻止,其他站点也被阻止,但Facebook
未被

3
在我退出重新启动野生动物园后,它起作用了
Mujah Maskey 2014年

5

尝试在其中添加以下行 /etc/resolv.conf

lookup file, bind

这应该强制OS X在dns之前使用/ etc / hosts。唯一的问题是,如果您使用dhcp,则该文件将在每次重新启动时被覆盖。


4

我也为此而感到沮丧。我只喜欢执行必要的步骤,仅hack必要的配置文件,仅此而已。截至今天,这里总结了什么有效,什么无效,什么必要或什么不是:

  • @ jesse-endahl的hack可以正常工作。需要fe80::1%lo0用于IPv6环回,用于的条目::1似乎被忽略了。

  • sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder - 没有必要

  • 添加lookup file, bind/etc/resolv.conf-不需要

测试时要记住的重要事项是某些应用程序具有自己的DNS缓存。例如Chrome浏览器:在每次重新加载页面时查找IP地址都没有意义,如果的IP facebook.com173.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
  • 使用OpenDNS自定义阻止列表阻止Facebook

如果仍然无法解决问题,可以尝试使用SelfControl应用程序。


这个问题的目的不是简单地让我阻止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。在莫哈韦沙漠(Mojave)在德国工作。
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

然后它应该被阻止。

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.