เหตุใด Safari จึงเพิกเฉยต่อไฟล์ / etc / hosts ของฉัน


25

ฉันเพิ่มบางโดเมนเพื่อบล็อก ( 127.0.0.1 mydomain.com) ลงใน/etc/hostsไฟล์ของฉันและด้วยเหตุผลบางอย่างดูเหมือนว่า Safari จะไม่สนใจพวกเขา

ฉันเหนื่อย:

  • ปิดใช้งานส่วนขยาย Safari
  • การล้างแคช ( sudo dscacheutil -flushcache)
  • รีสตาร์ท Safari และ Mac โดยสิ้นเชิง

Chrome เคารพการ/etc/hostsเปลี่ยนแปลง แต่ Safari ไม่ได้ แนบเป็นตัวอย่างของ/etc/hostsไฟล์ของฉัน

ฉันใช้ Safari 6.0.4 กับ Mountain Lion 10.8.3

ความคิดใด ๆ

##
# 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
127.0.0.1       facebook.com

3
หากไม่มีการตอบสนอง Safari จะพยายามเพิ่มwww.ไปที่จุดเริ่มต้นของ URL Facebook Facebook.comแล้วสามารถเปลี่ยนเส้นทางเบราว์เซอร์ ลองเพิ่มwww.facebook.comไฟล์ของคุณและดูว่าใช้งานได้หรือไม่
JoshRagem

ฉันคิดว่านี่อาจเป็นกรณี ฉันลองทั้ง www.facebook.com และ * .facebook.com ไม่ทำงาน
นิโคลัส Tulach

เมื่อฉันบันทึกข้อความในบล็อครหัสเป็น / etc / hosts มันบล็อก Facebook ใน Safari / etc / hosts ของคุณใช้การจบบรรทัด CR หรือคุณลองย้ายรายการอื่นเหนือรายการ IPv6หรือไม่
Lri

สิ่งที่น่าสนใจคือบรรทัดที่ฉันใช้เพื่อเปลี่ยนเส้นทาง search.yahoo.com ไปยัง DuckDuckGo ทำงานได้แม้ว่าฉันจะวางไว้หลังจากการเปลี่ยนเส้นทางสำหรับ facebook.com แต่สาย Facebook ไม่ได้ทำอะไรเลย นิ่งงันโดยสิ้นเชิงในอันนี้
นิโคลัสทูลัช

คุณล้างแคช dns และล้างประวัติ safary และ cache- หรือไม่ถ้าคุณไม่รู้วิธีล้างแคช dns คุณสามารถรีสตาร์ท mac ของคุณได้
konqui

คำตอบ:


13

ฉันมีปัญหาเดียวกันในเวอร์ชันที่แตกต่างกันเล็กน้อยและคิดว่าฉันจะพูดถึงสิ่งที่ได้ผลสำหรับฉัน

ฉันพัฒนาเว็บไซต์ ในการทำเช่นนั้นฉันมีสำเนาของแต่ละไซต์ที่ทำงานบนเครือข่ายท้องถิ่นของฉัน เมื่อฉันต้องการทำงานในพื้นที่ฉันเพิ่งเพิ่มรายการสำหรับ "example.com" ลงในไฟล์ / etc / hosts ของฉันเสมอและนั่นก็เป็น DNS ที่ถูกแทนที่เสมอทำให้ฉันสามารถเข้าถึงสำเนาของเว็บไซต์ใน เบราว์เซอร์ใด ๆ รวมถึง Safari และ Firefox ฉันสามารถทำงานได้โดยไม่ส่งผลกระทบต่อไซต์สดจริงจากนั้นอัปโหลดการเปลี่ยนแปลงเมื่อดำเนินการเสร็จ

อย่างไรก็ตามเมื่อเร็ว ๆ นี้เทคนิคนี้หยุดทำงานกับทั้ง Safari และ Firefox แต่ไม่ใช่สำหรับ Chrome ดังนั้นในขณะที่ฉันถูก จำกัด ให้ใช้ Chrome สำหรับการพัฒนาท้องถิ่น ฉันค้นหา google และลองใช้การแก้ไขที่แนะนำทั้งหมด - CR ในตอนท้ายของไฟล์โฮสต์รายการเดียวต่อบรรทัดการเปลี่ยนแปลงการกำหนดค่า Firefox ต่างๆโดยใช้ "about: config" ฯลฯ ไม่มีอะไรทำงาน

จากนั้นฉันลองสิ่งง่าย ๆ นี้: นอกเหนือจากการใส่ที่อยู่ IPV4 ในไฟล์ / etc / hosts ฉันยังใส่รุ่น IPV6

ก่อน:

10.0.1.23       example.com

หลังจาก:

10.0.1.23       example.com
0:0:0:0:0:FFFF:0A00:0117        example.com

ทันทีที่ฉันเพิ่มรายการ IPV6 ทั้ง Firefox และ Safari ก็เริ่มกดเซิร์ฟเวอร์ที่ถูกต้อง

มีหลายเว็บไซต์ที่จะแปลที่อยู่ IPV4 เป็น IPV6 เพียงทำการค้นหาของ Google ที่ "ipv4 to ipv6"


คุณสามารถตรวจสอบอักขระตัวสุดท้ายของคุณขึ้น/etc/hostsบรรทัดใหม่ได้หรือไม่? viยกตัวอย่างเช่นเปิดด้วย
แดน

อักขระสุดท้ายของไฟล์ / etc / hosts ของฉันคือ "\ n" หรือ hex 0A
Fred

1
นี่คือคำตอบที่ถูกต้อง เพื่อป้องกัน Safari คุณต้องมีทั้งรายการ IPv4 และ IPv6 ทดสอบใน MacOS 10.12
alttag

ipaddressguide.com/ipv4-to-ipv6 - ทั้งสองเพิ่ม 2 บรรทัด + ลบบรรทัดที่ยาวมาก - แยกพวกมันออก - มันใช้งานได้!
Artemiy StagnantIce Alexeew

8

ฉันมีปัญหาเดียวกันนี้และมีสาเหตุมาจากการที่มีบรรทัดยาวมากในไฟล์โฮสต์ของฉัน (โฮสต์หลายรายการถูกแมปกับที่อยู่ IP เดียวกันที่ระบุไว้ในบรรทัดเดียวกัน) ฉันแก้ไขมันโดยแยกสิ่งนี้ออกเป็นหลายบรรทัด


ถูกต้องกับก่อนหน้า!
Artemiy StagnantIce Alexeew

8

ฉันใช้เวลาค่อนข้างนานใน OS X El Captain 10.11.4 เพื่อบล็อกไซต์โดยใช้ไฟล์ / etc / hosts แทนที่จะใช้การควบคุมโดยผู้ปกครองในการตั้งค่าระบบ ในตอนท้ายมันก็ทำงานเช่นนี้:

127.0.0.1 www.website.com
127.0.0.1 website.com

ฉันลองชุดรูปแบบมากมาย แต่ฉันทำแผนที่เป็น 0.0.0.0 เสมอ (0.0.0.0 website.com ) เสมอ ที่ไม่เคยทำงานในรูปแบบใด ๆ

ไม่เหมือนกับคำแนะนำบนเว็บสิ่งเหล่านี้ไร้ประโยชน์:

  • ไม่จำเป็นต้องมีการบล็อก IPv6 เหมือนกัน fe80::1%lo0 www.website.comหรือ::1 website.com
  • ไม่จำเป็นต้องมี dscacheutil -flushcacheมี แต่ทำในกรณี
  • ไม่สำคัญว่าคุณจะวางไว้ที่จุดเริ่มต้นหรือจุดสิ้นสุดของไฟล์โฮสต์
  • ดูเหมือนว่าเบราว์เซอร์จะได้รับการตอบสนองที่แตกต่างกัน: Chrome และ Safari ปิดกั้นทันทีเมื่อถูกต้อง hostsบันทึกไฟล์ที่แล้ว Firefox จะยังคงเพิกเฉยต่อไปครู่หนึ่ง (ไม่ชัดเจนถ้าเริ่มต้นใหม่ก็เพียงพอแล้ว)
    • ลองใช้New Private Windowหรือรีสตาร์ทเบราว์เซอร์เพื่อทำการทดสอบ
  • อย่าเพิ่มhttp://หรือhttps://ที่จุดเริ่มต้นของที่อยู่
  • ไม่จำเป็นต้องมีคำสั่งอื่น
  • อย่าปิดการใช้งาน (= ความคิดเห็นโดยการเพิ่ม#บรรทัดที่จุดเริ่มต้น) ที่อยู่ในไฟล์โฮสต์แล้ว

การตรวจสอบที่มีประโยชน์

  • ตรวจสอบว่าระบบรับรู้การเปลี่ยนเส้นทางของคุณหรือไม่dscacheutil -q host -a name website.com- ควรแสดง:

    name: website.com
    ip_address: 127.0.0.1
    
  • ตรวจสอบว่าไวยากรณ์ของhostsไฟล์นั้นถูกต้องโดย: cat -vet /etc/hosts. สิ่งนี้แสดงให้เห็นตัวละครที่มองไม่เห็น:

    • เส้นควรลงท้ายด้วย $
    • ระหว่าง127.0.0.1และควรจะมีเพียงช่องว่างหรือแท็บซึ่งจะแสดงเป็นwebsite.com^I
  • โปรดทราบว่าสำหรับบางเว็บไซต์เช่น Facebook คุณอาจต้องปิดกั้นที่อยู่จำนวนมากปิดกั้นมากของที่อยู่
  • ฉันคิดว่าhostsไฟล์ควรลงท้ายด้วยการขึ้นบรรทัดใหม่

6

ฉันมีปัญหาที่คล้ายกัน ซอฟต์แวร์ทุกชิ้นใน Mac ของฉันให้เกียรติรายการไฟล์ / etc / hosts ของฉันเมื่อไฟล์โฮสต์ของฉันถูก symlinked (aliased) ไปยังไฟล์อื่นยกเว้น Safari เมื่อไฟล์โฮสต์ของคุณเป็น symlink Safari จะไม่สนใจมัน

ทางออกของฉันคือการทำให้ / etc / โฮสต์เชื่อมโยงอย่างหนัก โชคดีที่ไฟล์โฮสต์ที่ฉันอัปเดตอยู่ในระบบไฟล์เดียวกัน หากไม่เป็นเช่นนั้นคุณจะถูก borked

Bad Safari ... แย่


1
ฉันกำลังพิจารณาเปลี่ยนแปลงอาชีพ - จนกระทั่งพบสิ่งนี้ คิดว่าฉันฉลาดและเก็บ dotfiles ทั้งหมดของฉัน (และไฟล์การกำหนดค่าอื่น ๆ ) ไว้ในที่เก็บ git แล้วสร้างลิงก์สัญลักษณ์ ดึงสิ่งที่เหลือไว้จากเส้นผมของฉันมาหลายชั่วโมงแล้ววันนี้
localheinz

ขอบคุณคุณช่วยฉันชั่วโมงของความยุ่งยาก! Safari ที่ไม่น่าเชื่อ!
DrMeers

4

เพียงสิ่งที่เหมาะกับฉัน (10.12.1 "เซีย"):

127.0.0.1   example.com
127.0.0.1   www.example.com
fe80::1%lo0 example.com
fe80::1%lo0 www.example.com

2
นี่คือคำตอบที่ถูกต้อง คุณต้องเพิ่มdomain.comและwww.domain.comในไฟล์โฮสต์ Safari สามารถเพิ่มในคำขอของคุณและจะไม่ตรงกับwww. domain.com
Vagner

3

ทำงานให้ฉันที่ Yosemite:

  1. ไปที่การตั้งค่าระบบ> เครือข่าย> ขั้นสูง> พร็อกซี
  2. ติ๊กค้นพบพร็อกซีอัตโนมัติกดตกลงและนำไปใช้ (ฉันไม่ได้รับการเลือกอื่น)
  3. ป้อนในเทอร์มินัล: dscacheutil -flushcache

สิ่งนี้จะล้างข้อมูล dnscache ใน Yosemite ตอนนี้ Safari และ Chrome ควรเคารพไฟล์โฮสต์ของคุณ


ฉันต้องการลองใช้ตัวนี้ แต่ฉันกำลังเชื่อมโยงกับ iPhone ของฉันและตัวเลือกขั้นสูง> พร็อกซีไม่พร้อมใช้งาน
Roger Dueck

2

ลองใส่การขึ้นบรรทัดใหม่หนึ่งหรือสองแคร่หลังจากรายการสุดท้าย

...
127.0.0.1       facebook.com

^ Carriage Return

1
น่าเสียดายที่นี่ไม่ได้ช่วยอะไร
นิโคลัสทูลัช

คุณต้องมีการขึ้นบรรทัดใหม่ ( ไม่ใช่การขึ้นบรรทัดใหม่) ในตอนท้ายของทุกบรรทัดรวมถึงบรรทัดสุดท้าย
ganbustein

เว้นแต่ว่าเขาใช้ Mac OS 9: o
William T Froggard

1

ในบางกรณีจำเป็นต้องเพิ่มที่อยู่ลูปแบ็คสำหรับทั้ง IPv4 และ IPv6 ใน /etc/hostsไฟล์

สมมติว่าเราได้เพิ่มรายการบล็อกสำหรับที่อยู่ IPv4 ของwebsite.com:

127.0.0.1 website.com

หากdscacheutil -q host -a name website.comส่งคืนที่อยู่สำหรับทั้งสองรุ่นโปรโตคอล:

name: website.com
ipv6_address: rand:omin:vali:dipv:6addr:ess5

name: website.com
ip_address: 127.0.0.1

จากนั้นเราต้องเพิ่มอีกหนึ่งบรรทัดในไฟล์ hosts:

::1 website.com


0

ฉันมีปัญหานี้เช่นกัน แต่วิธีแก้ปัญหานั้นง่ายมากสมมติว่าคุณสร้างนามแฝงในไฟล์โฮสต์ไปยังเครื่องของคุณด้วยชื่อ localhost2

รายการนั้นในไฟล์โฮสต์ควรมีลักษณะเช่นนี้: 127.0.0.1 localhost2

เมื่อคุณพิมพ์ "localhost2" ในแถบ url ของซาฟารีคุณจะสังเกตเห็นว่าตัวเลือกเริ่มต้นคือการค้นหาใน google คุณควรเลือกตัวเลือกที่ระบุว่า "ไปที่ไซต์ localhost2"


0

ตรวจสอบให้แน่ใจว่า / etc / hosts ของคุณมีแอตทริบิวต์เหล่านี้อย่างแน่นอน ฉันกำลังคัดลอกแก้ไขและแทนที่ไฟล์โดยใช้หมายเลขผู้ใช้ของฉันเองโปรแกรมอื่น ๆ ทั้งหมดทำงานได้อย่างต่อเนื่องยกเว้นซาฟารี ...

$ ls -l /etc/hosts
-rw-r--r--  1 root  wheel  1004 Sep 24 16:03 /etc/hosts

0

สำหรับที่อยู่ https example.com ฉันต้องรวมทั้งที่อยู่ IPv4 และ IPv6 สำหรับทั้ง example.com และ www.example.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
127.0.0.1       example.com
::1     example.com
127.0.0.1       www.example.com
::1     www.example.com
255.255.255.255 broadcasthost
::1             localhost

-2

อ้างอิงจากบล็อกนี้http://thecoredump.org/2011/09/editing-the-hosts-file-in-mac-os-x-lion/

คุณต้องใส่รายการที่จุดเริ่มต้นของไฟล์โฮสต์ แหกคอกมาก ไม่เคยมีประสบการณ์ส่วนตัวเกี่ยวกับเรื่องนี้


พวกเขาผิด ไวยากรณ์มีความสำคัญเท่านั้นไม่ใช่ที่ตั้ง และรายการเพิ่มเติมทั้งหมดควรปฏิบัติตามค่าเริ่มต้นเสมอ

พวกเขาอาจพูดว่าวางไว้ที่จุดเริ่มต้นเพื่อหลีกเลี่ยงข้อผิดพลาดที่พบบ่อยของผู้ที่แก้ไขไฟล์โฮสต์: พวกเขาลืมใส่บรรทัดใหม่ที่ท้ายบรรทัดสุดท้าย หากไม่มีบรรทัดใหม่บรรทัดสุดท้ายจะถูกละเว้น หากคุณเพิ่มรายการที่ด้านหน้าก็ยากที่จะลืมบรรทัดใหม่
ganbustein

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