ทำไมฉันไม่สามารถบล็อก Facebook โดยใช้ / etc / hosts บน Mountain Lion (OS X) ได้?


34

มันใช้งานได้ระยะหนึ่งในการกำหนดค่าแบบเก่า แต่ก็หยุดทำงานด้วยเหตุผลบางอย่าง

นี่คือไฟล์ / etc / hosts ของฉันจาก Mountain Lion MacBook Air ของฉัน:

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"), bowsers (FF และ Chrome) และฉันลองรีสตาร์ทคอมพิวเตอร์

และฉันได้ย้ายรายการไปที่ด้านบนของไฟล์ตามคำแนะนำของบทความนี้แต่มันก็ไม่ได้ทำงานมาก่อนเมื่อมันอยู่ที่ด้านล่าง ทุกครั้งที่มันปิดกั้น Reddit แต่ไม่ใช่ Facebook


2
นั่นเป็นคี่ มันไม่ได้ผลสำหรับฉันด้วย - ฉันสงสัยว่ามันเกี่ยวกับการรวม Facebook ของ ML หรือไม่ ฉันกำลังไตร่ตรองวิธีทดสอบทฤษฎีนั้น
Jerry Seeger

1
ค้นหาโฟลเดอร์ของระบบสำหรับการกล่าวถึง facebook.com ทั้งหมดที่พบ (ท่ามกลางคนอื่น ๆ ) /System/Library/Caches/com.apple.internetaccounts.domainscache.plist ซึ่งดูเหมือนกับตาของฉันเหมือนผู้ร้ายที่น่าจะเป็นไปได้มากที่สุด ฉันไม่ได้ลองมายุ่งกับมัน แต่มันอาจเป็นสิ่งที่คุณกำลังมองหา แม้ว่าฉันจะระมัดระวังจริงๆ
Jerry Seeger

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 หาก ISP ของคุณรองรับ คุณสามารถตรวจสอบสิ่งนี้ได้อย่างง่ายดายโดยติดตั้งปลั๊กอินของเบราว์เซอร์ที่แสดงไอคอนเมื่อมีการให้บริการเว็บไซต์ผ่าน 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 ใช้เวลาสักครู่ในการหมดอายุแคช เว้นแต่คุณจะรู้วิธีที่จะกำจัดมัน

วิธีการทดสอบวิธีหนึ่งที่ใช้งานได้ดีสำหรับฉันคือการใช้คุณลักษณะใหม่ที่ไม่ระบุตัวตนของ 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


เป้าหมายของคำถามนี้ไม่ใช่เพื่อให้ฉันบล็อก 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. ใน terminal, 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

จากนั้นควรถูกบล็อก

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.