Tại sao tôi không thể chặn Facebook bằng cách sử dụng / etc / hosts trên Mountain Lion (OS X)?


34

Nó hoạt động được một lúc trong cấu hình cũ, nhưng sau đó ngừng hoạt động vì một số lý do.

Đây là tập tin / etc / hosts của tôi từ 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

Điều này chặn Reddit, nhưng không phải Facebook.

Tôi đã thử xóa bộ đệm DNS cho máy ("sudo killall -HUP mDNSResponder"), các bowsers (FF và Chrome) và tôi đã thử khởi động lại máy tính.

Và tôi đã chuyển các mục vào đầu tập tin theo lời khuyên của bài viết này , nhưng nó không hoạt động trước đây khi nó ở dưới cùng. Mỗi lần nó sẽ chặn Reddit nhưng không phải Facebook.


2
Lạ thật đấy. Nó cũng không hoạt động với tôi - tôi tự hỏi liệu nó có liên quan đến việc tích hợp facebook của ML không. Tôi đang suy nghĩ làm thế nào để kiểm tra lý thuyết đó.
Jerry Seeger

1
Tìm kiếm thư mục hệ thống cho tất cả các đề cập đến facebook.com được tìm thấy (trong số những người khác) / System / L Library / Caches / com.apple.iNETaccounts.domainscache.plist nhìn vào mắt tôi giống như thủ phạm rất có thể. Tôi đã không thử làm hỏng nó, nhưng nó có thể là những gì bạn đang tìm kiếm. Tôi thực sự thận trọng, mặc dù.
Jerry Seeger

1
Tôi đồng ý với @JerrySeeger rằng đó có lẽ là một chức năng của tích hợp Facebook. Điều đó nói rằng, tại sao bạn chặn các trang web với một phương pháp hay thay đổi như vậy? Nếu bạn muốn kiểm soát truy cập internet, hãy lấy proxy.
ta.speot.is

Tôi chỉ muốn chặn nó vì nó làm hỏng năng suất của tôi trong ngày. Đó không phải là một vấn đề lớn, nhưng quan trọng hơn là tôi rất tò mò về những lý do kỹ thuật mà tôi không thể chặn nó.
seanieb

1
Điều gì xảy ra trên dig facebook.comhoặc nslookup facebook.com?
JulianM

Câu trả lời:


43

harrymc gần nhưng vì một số lý do, OS X (kể từ ngày 10.8.2) không tôn trọng địa chỉ vòng lặp IPv6 của :: 1 (có thể là lỗi), vì vậy bạn phải sử dụng fe80 :: 1% lo0. Lý do bạn cần chặn IPv6 là vì Facebook sẽ phục vụ bạn trang web của họ trên V6 nếu ISP của bạn hỗ trợ. Bạn có thể dễ dàng xác minh điều này bằng cách cài đặt plugin trình duyệt hiển thị biểu tượng khi trang web đang được phục vụ qua IPv6. Lý do đây không phải là vấn đề với bạn trước đây là vì có khả năng Facebook mới chỉ bắt đầu phục vụ trang web của họ qua IPv6.

Vì vậy, câu trả lời đúng là:

# 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
Xin chào Jesse, tôi sao chép mọi thứ vào / etc / hosts của tôi và tôi vẫn có thể truy cập facebook. Tôi vẫn còn thiếu một cái gì đó?
gruszczy

không làm việc cho tôi eider. Tôi cũng đã cố gắng chặn nó trong bộ định tuyến của mình, các trang web khác cũng bị chặn, nhưng không phải Facebook
adrianTNT

3
nó hoạt động sau khi tôi thoát khởi động lại safari
Mujah Maskey

5

Hãy thử thêm dòng sau vào /etc/resolv.conf

lookup file, bind

Điều này sẽ buộc OS X sử dụng / etc / hosts trước dns. Vấn đề duy nhất là nếu bạn sử dụng dhcp, tệp này sẽ bị ghi đè mỗi lần khởi động lại.


4

Tôi cũng bị cản trở bởi điều này. Tôi chỉ muốn làm các bước cần thiết và chỉ hack các tệp cấu hình cần thiết và không có gì hơn. Dưới đây là tóm tắt về những gì hoạt động và những gì không, những gì cần thiết hoặc không, cho đến ngày hôm nay :

  • Bản hack của jlie-endahl hoạt động chính xác. Cần sử dụng fe80::1%lo0cho vòng lặp IPv6, các mục nhập ::1dường như bị bỏ qua.

  • sudo dscacheutil -flushcache; sudo killall -HUP mDNSResponder -- không cần thiết

  • Thêm lookup file, bindvào /etc/resolv.conf- không cần thiết

Một điều quan trọng cần lưu ý khi kiểm tra điều này là một số ứng dụng có bộ đệm DNS riêng. Ví dụ trình duyệt Chrome: nó không có ý nghĩa để tra cứu địa chỉ IP trên mỗi tải lại trang, nếu chỉ IP của facebook.com173.252.110.27một phút trước nó vẫn cần được như vậy bây giờ, phải không? Điều này khiến việc kiểm tra mọi thứ trở nên khó khăn vì phải mất vài phút để Chrome hết hạn bộ nhớ cache. Trừ khi bạn biết một phương pháp để loại bỏ nó.

Một phương pháp thử nghiệm hoạt động tốt với tôi là sử dụng tính năng Cửa sổ ẩn danh mới của Chrome. Mỗi khi bạn thay đổi thứ gì đó /etc/hosts, hãy mở một cửa sổ ẩn danh mới để xem kết quả và nó sẽ hoạt động ngay lập tức. Các cửa sổ không ẩn danh cũng sẽ hoạt động, cuối cùng, chỉ mất vài phút.


3

Hãy thử điều này :

# 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

Nếu điều này không hiệu quả, hãy xem bài viết Chặn Facebook cũng gợi ý:

  • Chặn Facebook trên Bộ định tuyến
  • Chặn Facebook với danh sách chặn tùy chỉnh OpenDNS

Nếu điều này vẫn không hoạt động, bạn có thể thử ứng dụng SelfControl .


Mục tiêu của câu hỏi này không chỉ đơn giản là để tôi chặn Facebook, tôi muốn hiểu tại sao tệp / etc / hosts không hoạt động.
seanieb

@seanieb Ông đã liên kết câu trả lời này với câu trả lời khác. Bạn có thể tìm thấy lời giải thích ở đó.

3

Mac OS X El Capitan: Phiên bản 10.11.5

Safari: 9.1.1

Tôi đã phải sử dụng kết hợp tất cả các câu trả lời ở trên để cuối cùng có thể chặn Facebook. Dưới đây là nội dung của /etc/hosts tập tin của tôi :

# 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

Và thật kỳ lạ .. điều này đã làm việc!

Các bước:

  1. Trên thiết bị đầu cuối của bạn, chạy sudo vi /etc/hosts hoặc sudo pico /etc/hosts

  2. Lưu các nội dung trên. (từ bình luận # Block Facebook)

  3. Trên thiết bị đầu cuối, chạy dscacheutil -flushcache.

  4. Trên Safari, xóa bộ nhớ cache. Thanh menu chọn Develop -> Empty Cache

  5. Bạn có thể phải khởi động lại máy tính của bạn. Và vấn đề đã được giải quyết!


Có cuối cùng: D. Làm việc tại Đức với Mojave.
fl034

1

Hãy thử thêm chúng

127.0.0.1 www.facebook.com

127.0.0.1 facebook.com 127.0.0.1 tĩnh.ak.fbcdn.net

127.0.0.1 www.static.ak.fbcdn.net

127.0.0.1 đăng nhập.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

Sau đó, nó sẽ bị chặn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.