เหตุใด Chrome จึงไม่สนใจ / etc / hosts บน OS X


27

ฉันใช้ OS X 10.8.5 และ Chrome 30

ฉันเพิ่มลง127.0.0.1 youtube.comใน/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
fe80::1%lo0     localhost

127.0.0.1       youtube.com

เมื่อฉันเรียกใช้คำสั่งtraceroute youtube.comฉันได้รับผลลัพธ์ที่คาดหวัง (youtube.com ได้รับการแก้ไขเป็น 127.0.0.1):

traceroute to youtube.com (127.0.0.1), 64 hops max, 52 byte packets
1  localhost (127.0.0.1)  0.272 ms  0.118 ms  0.063 ms

อย่างไรก็ตามเมื่อฉันพิมพ์ youtube.com ใน Chrome เบราว์เซอร์ของฉันไม่ได้สร้างการเชื่อมต่อกับ 127.0.0.1 แต่แทนที่ด้วยที่อยู่ IP "ปกติ" สำหรับ YouTube ฉันคาดหวังให้ Chrome แก้ไข youtube.com เป็น 127.0.0.1

ฉันได้กำหนดค่า Chrome ให้ใช้การตั้งค่าพร็อกซีของระบบ ใน OS X เมื่อฉันไปที่การตั้งค่าระบบ> เครือข่าย> "ขั้นสูง ... "> พร็อกซีฉันได้เลือก "การค้นหาพร็อกซีอัตโนมัติ"

เหตุใด Chrome จึงมองข้าม/etc/hostsไฟล์ของฉัน


4
คุณแน่ใจหรือไม่ว่าพยายามแก้ไข youtube.com ไม่ใช่ www.youtube.com อาจเป็นไปได้ว่า youtube.com มีการเปลี่ยนเส้นทาง 301 ซึ่งถูกแคชโดยเบราว์เซอร์เพื่อไม่ให้พยายามติดต่อ youtube.com (ไม่ใช่ในคอมพิวเตอร์ของฉันเพื่อตรวจสอบ)
user2313067

@ user2313067 ขอขอบคุณ! ฉันแก้ไข / etc / hosts เพื่อให้มีบรรทัดสำหรับ www.youtube.com ที่แก้ไขเป็น 127.0.0.1 และนั่นก็เป็นเคล็ดลับ
Jonathan

@ user2313067 คุณอาจต้องการโพสต์ความคิดเห็นของคุณเป็นคำตอบ
แบล็กไลท์ส่องแสง

2
เป็นไปได้ที่ซ้ำกันของเหตุใด Chromium จึงข้าม / etc / hosts และ dnsmasq
สกอตต์

คุณอาจใช้ VPN หรือส่วนขยายของโครเมี่ยมที่แก้ไขการเชื่อมต่อของคุณใน
Someway

คำตอบ:


8

ลองเพิ่มwww.youtube.comไฟล์โฮสต์ของคุณ youtube.comถูกเปลี่ยนเส้นทางไปอย่างถาวรwww.youtube.comดังนั้นตราบใดที่คุณได้เข้าชมครั้งเบราว์เซอร์ของคุณแคชการตอบสนองนี้และเปลี่ยนเส้นทางให้คุณyoutube.com www.youtube.comที่อยู่นี้ไม่ได้อยู่ในไฟล์โฮสต์ของคุณดังนั้น Chrome จึงสามารถแก้ไขได้อย่างถูกต้องตามหลักเหตุผล


1
ทำสิ่งนี้เพื่อล้างการเปลี่ยนเส้นทางของคุณsuperuser.com/questions/304589/…หรือเพียงแค่ใช้โหมดไม่ระบุตัวตนเพื่อการพัฒนา
james.c.funk

1
การเพิ่มwwwไม่ทำงานสำหรับฉัน แม้หลังจากล้างข้อมูลเบราว์เซอร์ของฉันทั้งหมดและล้าง DNS ของฉัน นี่อาจเป็นมาตรการต่อต้านฟิชชิงที่อบเข้าใน Chrome ใช่ไหม
f1lt3r

เพิ่มทั้งเปล่าและ www รุ่นในไฟล์โฮสต์ทำงานสำหรับฉัน ฉันยังปิดการใช้งาน chrome: // ค่าสถานะ / # enable-new-
preconnect

10

Google Chrome จะไม่สนใจไฟล์โฮสต์ของคุณและทำการค้นหา DNS ที่แท้จริง (แม้จะเป็นที่คนอื่น ๆ คิดว่า/etc/hostsไม่ใช่ส่วนหนึ่งของ DNS แต่เป็นสิ่งที่เคยใช้ก่อน DNS) ในขณะที่ Google Chrome ควรเคารพรายการไฟล์โฮสต์ที่ไม่เป็นเช่นนั้น ไฟล์โฮสต์ซึ่งเป็นทางเลือกแทน DNS จะถูกอ่านเมื่อไม่มีเซิร์ฟเวอร์ DNS (เช่นถ้าคุณปิดการใช้งานการเชื่อมต่อเครือข่าย)

คุณสามารถทดสอบได้โดยเพิ่ม "127.0.0.1 foobar.dev" ลงในไฟล์โฮสต์ของคุณจากนั้นเปิดใช้งาน wireshark และดูบนอินเทอร์เฟซเครือข่ายของคุณ เปิด Chrome และใส่http://foobar.dev/แถบที่อยู่แล้วไป คุณจะเห็นคำค้นหา DNS ใน Wireshark เช่น:

2   1.668727000 192.168.32.104  8.8.8.8 DNS 75  Standard query 0x663a  A foobar.dev

FWIW, Google DNS ส่งคืน 127.0.53.53 สำหรับ foobar.dev

3   1.706484000 8.8.8.8 192.168.32.104  DNS 91  Standard query response 0x663a  A 127.0.53.53

วิธีแก้ปัญหาคือใช้HostAdminซึ่งเป็นส่วนขยาย Chrome รุ่นเก่าที่ทำให้ Chrome ใช้โฮสต์ อย่างไรก็ตาม Chrome เวอร์ชันใหม่กว่า (> 38, apprently) ไม่รองรับอีกต่อไป


Chrome ไม่สนใจ/etc/hostsไฟล์ใน OS X อย่างน้อย Chrome v43 บน OS X 10.10.3
Petr Peller

Wireshark บอกเล่าเรื่องราวที่แตกต่าง
Karl Wilbur

1
ข้อเท็จจริงที่ว่า Chrome สืบค้น Google DNS อาจไม่ได้หมายความว่า / etc / hosts ถูกละเว้น สิ่งนี้สามารถใช้เพื่อการเพิ่มประสิทธิภาพ / การบันทึก / การสอดแนม ฉันใช้ไฟล์ / etc / hosts บ่อยครั้งบน OS X และไม่มีปัญหากับ Chrome
Petr Peller

3
เมื่อไฟล์โฮสต์ของฉันมี '127.0.0.1 foo.dev' และ Chrome แก้ไข foo.dev ให้เป็น 127.0.53.53 ได้อย่างน่าอัศจรรย์นั่นคือการละเว้นไฟล์โฮสต์ของฉัน
Karl Wilbur

1
ใช่ แต่มี wifi ใน, Chrome ควรใช้แฟ้มเจ้าภาพครั้งแรกก่อนที่จะทำค้นหา DNS มันไม่ใช่. นั่นคือปัญหา
Karl Wilbur

5

ฉันแก้ไขปัญหานี้โดย: ปิด "ปกป้องคุณและอุปกรณ์ของคุณจากไซต์อันตราย" ในการตั้งค่าขั้นสูงของ Chrome

"การป้องกัน" ของ Chrome นั้นรวมถึงการตรวจสอบโดเมนกับ DNS ของตัวเองโดยตรงและผ่านรายการโฮสต์บางประเภทซึ่งถือว่า "น่าสงสัย" หรือรายการสำหรับไซต์ที่มีอยู่ซึ่งถูกแทนที่ซึ่งหมายความว่ารายการโฮสต์ที่กำหนดเองส่วนใหญ่จะถูกเพิกเฉย โดยเฉพาะอย่างยิ่ง * .dev และ * .local รายการที่ใช้สำหรับการพัฒนา

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


ขอบคุณฉันรู้ว่ามันใช้งานได้เมื่อสัปดาห์ที่แล้วฉันเปลี่ยนตัวเลือก Chrome เป็นค่าเริ่มต้นเมื่อหลายวันก่อนและมันไม่ทำงานอีกต่อไป มันได้ผล!
98percentmonkey

ขอบคุณฉันรู้ว่ามันใช้งานได้เมื่อสัปดาห์ที่แล้วฉันเปลี่ยนตัวเลือก Chrome เป็นค่าเริ่มต้นเมื่อหลายวันก่อนและมันไม่ทำงานอีกต่อไป มันได้ผล! มันเรียกว่า "Safe Browsing" ในรุ่นที่ใหม่กว่า
98percentmonkey

0

Localhost เป็นแบบแผนสำหรับที่อยู่ 127.0.0.1 ซึ่งเป็นที่อยู่ภายในสำหรับ tcp / ip อย่างไรก็ตาม Chrome ไม่ได้ใช้ / etc / hosts เพื่อแก้ปัญหาที่อยู่นั้นกำลังใช้เซิร์ฟเวอร์ DNS ดังนั้นที่อยู่ใด ๆ จึงไม่ได้มาจากคุณ / etc / hosts แต่จากเซิร์ฟเวอร์ DNS หากใช้ / etc / hosts จะต้องเก็บชื่อโฮสต์ www ทั้งหมดไว้เพื่อแก้ปัญหาที่อยู่ใด ๆ

หวังว่านี่จะช่วยได้


1
-1 /etc/hostsแทนที่เซิร์ฟเวอร์ DNS ใด ๆ ใช่ถ้าคุณใช้เพียงอย่างเดียว /etc/hostsมันจะต้องมีชื่อโดเมนทั้งหมด แต่การตั้งค่าส่วนใหญ่จะมีเซิร์ฟเวอร์ DNS ด้วย หาก Chrome OS เพียงแค่ถามเพื่อแก้ไขชื่อโดเมนเช่นนั้นควร , /etc/hostsจะถูกตรวจสอบก่อนและถ้ามันไม่ได้มีรายการแล้วค้นหา DNS จะถูกส่งออก
แบล็กไลท์ส่องแสง

/etc/hosts ควรแทนที่และคำขอ DNS แต่นี่ไม่ใช่กรณีของ Google Chrome มัน preforms การค้นหา DNS ของตัวเองแม้จะมีสิ่งที่อาจอยู่ในไฟล์โฮสต์ นี่แสดงให้เห็นได้อย่างง่ายดาย นี่เป็นปัญหาเฉพาะสำหรับการพัฒนาท้องถิ่นโดยใช้.devTLD
Karl Wilbur

0

ฉันสะดุดกับคำถามนี้โดยคิดว่าhostsไฟล์ไม่ทำงานบน Chrome สำหรับ macOS สำหรับ.devโดเมนปลอมที่ฉันใช้เพื่อการพัฒนา

จริงๆแล้วมันไม่ทำงานอย่างน้อยบน Chrome 77

ปัญหาไม่ได้อยู่ที่ไม่พบโดเมน แต่ขณะนี้. dev ทั้งหมดจะถูกเปลี่ยนเส้นทางไปยัง https โดยอัตโนมัติ :

ไม่สามารถเข้าถึงไซต์นี้ได้ - Chrome

หากคุณดับเบิลคลิกที่ชื่อโดเมนคุณจะเห็นผู้ร้าย:

https

ตอนนี้ว่า Google ยากจนของเรา.devเป็นวิธีการแก้ปัญหาที่ลิงค์ด้านบนแสดงให้เห็นที่จะย้ายไป TLD อื่นสำหรับการพัฒนาเช่นหรือ.test.localhost

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