Mengapa Safari mengabaikan file / etc / hosts saya?

25

Saya menambahkan beberapa domain untuk memblokir ( 127.0.0.1 mydomain.com) ke /etc/hostsfile saya dan karena alasan tertentu, Safari tampaknya mengabaikannya.

Saya telah mencoba:

  • menonaktifkan ekstensi Safari,
  • membersihkan cache ( sudo dscacheutil -flushcache),
  • restart Safari dan Mac sama sekali.

Chrome menghargai /etc/hostsperubahan, tetapi Safari tidak. Terlampir adalah contoh /etc/hostsfile saya .

Saya menjalankan Safari 6.0.4 dengan Mountain Lion 10.8.3

Ada ide?

##
# 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
Nicholas Tulach
sumber
3
Jika tidak ada respons, Safari akan mencoba menambahkan www.Ke awal URL. Facebook kemudian dapat mengarahkan browser ke Facebook.com. Coba tambahkan www.facebook.comke file Anda dan lihat apakah itu berhasil.
JoshRagem
Saya pikir ini mungkin masalahnya. Saya mencoba www.facebook.com dan * .facebook.com. Tidak ada yang berhasil.
Nicholas Tulach
Ketika saya menyimpan teks di blok kode sebagai / etc / hosts, itu memblokir Facebook di Safari. Apakah / etc / hosts Anda menggunakan akhiran garis CR, atau sudahkah Anda mencoba memindahkan entri lain di atas entri IPv6 ?
Lri
Yang menarik adalah bahwa garis yang saya gunakan untuk mengarahkan kembali search.yahoo.com ke DuckDuckGo berfungsi, bahkan jika saya meletakkannya setelah pengalihan untuk facebook.com, tetapi garis Facebook tidak melakukan apa-apa. Benar-benar bingung yang satu ini.
Nicholas Tulach
apakah Anda membersihkan cache dns dan menghapus riwayat safary dan cache-jika Anda tidak tahu cara mem-flush cache dns Anda juga dapat me-restart mac Anda.
konqui

Jawaban:

13

Saya memiliki versi yang sedikit berbeda dari masalah yang sama, dan berpikir saya akan menyebutkan apa yang berhasil untuk saya.

Saya mengembangkan situs web. Untuk melakukan itu, saya memiliki salinan lengkap dari setiap situs yang berjalan di jaringan lokal saya. Ketika saya ingin bekerja secara lokal, saya selalu baru saja menambahkan entri untuk "example.com" ke file lokal / etc / hosts saya, dan itu selalu menimpa DNS, sehingga memungkinkan saya untuk mengakses salinan lokal situs web di browser apa pun, termasuk Safari dan Firefox. Saya dapat bekerja tanpa memengaruhi situs langsung yang sebenarnya, lalu mengunggah perubahan setelah selesai.

Namun, baru-baru ini, teknik ini berhenti bekerja untuk Safari dan Firefox, tetapi tidak untuk Chrome, jadi untuk sementara waktu saya terbatas menggunakan Chrome untuk pengembangan lokal. Saya mencari di google dan mencoba semua perbaikan yang disarankan - CR di akhir file hosts, hanya satu entri per baris, berbagai perubahan konfigurasi Firefox menggunakan "about: config", dll. Tidak ada yang berhasil.

Kemudian saya mencoba hal sederhana ini: selain meletakkan versi alamat IPV4 di file / etc / hosts, saya juga memasukkan versi IPV6.

Sebelum:

10.0.1.23       example.com

Setelah:

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

Segera setelah saya menambahkan entri IPV6, Firefox dan Safari mulai mengenai server (lokal) yang benar.

Ada berbagai situs web yang akan menerjemahkan alamat IPV4 ke IPV6; lakukan pencarian google di "ipv4 to ipv6".

Fred
sumber
Bisakah Anda memeriksa karakter terakhir dari Anda /etc/hostsadalah baris baru? Misalnya membukanya dengan vi.
dan
Karakter terakhir dari file saya / etc / hosts adalah "\ n", atau hex 0A.
Fred
1
Ini jawaban yang benar. Untuk mencegah Safari, Anda harus baik IPv4 dan IPv6 entri. Diuji dalam MacOS 10.12.
alttag
ipaddressguide.com/ipv4-to-ipv6 - Keduanya menambah 2 baris + menghapus garis yang sangat panjang - pisahkan mereka - kerjanya!
Artemiy StagnantIce Alexeew
8

Saya memiliki masalah yang sama dan itu disebabkan oleh memiliki garis yang sangat panjang di file host saya (beberapa host dipetakan ke alamat IP yang sama yang tercantum pada baris yang sama). Saya memperbaikinya dengan memecah ini menjadi beberapa baris.

vincent.io
sumber
benar dengan sebelumnya!
Artemiy StagnantIce Alexeew
7

Saya menghabiskan cukup banyak waktu di OS X El Captain 10.11.4 untuk memblokir situs menggunakan file / etc / hosts daripada menggunakan Parental Control dalam preferensi Sistem. Pada akhirnya itu hanya bekerja seperti ini:

127.0.0.1 www.website.com
127.0.0.1 website.com

Saya mencoba banyak varian, tetapi saya selalu memetakan ke 0.0.0.0 ( 0.0.0.0 website.com). Itu tidak pernah berhasil dalam variasi apa pun.

Tidak seperti beberapa saran di web, ini tidak berguna:

  • Tidak perlu untuk memblokir IPv6 seperti fe80::1%lo0 www.website.comatau::1 website.com
  • Tidak perlu untuk dscacheutil -flushcache, tetapi lakukan saja kalau-kalau.
  • Tidak masalah jika Anda menempelkannya di awal atau akhir file hosts
  • Browser tampaknya telah direspon berbeda: Chrome dan Safari segera memblokirnya setelah hostsfile yang benar disimpan, Firefox terus mengabaikannya untuk sementara waktu (tidak jelas apakah me-restart cukup).
    • Coba gunakan New Private Windowatau mulai ulang browser untuk mengujinya.
  • Jangan tambahkan http://atau https://di awal alamat
  • Tidak ada perintah lain yang diperlukan.
  • Jangan nonaktifkan (= komentar dengan menambahkan #di awal) baris yang sudah ada di file host.

Cek berguna

  • Periksa apakah sistem mengenali pengalihan Anda dscacheutil -q host -a name website.com- itu akan menampilkan:

    name: website.com
    ip_address: 127.0.0.1
    
  • Periksa apakah sintaks dari hostsfile benar oleh: cat -vet /etc/hosts. Ini menunjukkan karakter yang tidak terlihat:

    • Baris harus diakhiri dengan $
    • Antara 127.0.0.1dan website.comseharusnya hanya spasi atau tab, yang ditampilkan sebagai ^I.
  • Perhatikan bahwa untuk beberapa situs, seperti facebook misalnya, Anda mungkin perlu memblokir banyak alamat .
  • Saya pikir hostsfile tersebut harus diakhiri dengan baris baru.
bud.dugong
sumber
6

Saya memiliki masalah serupa. Setiap perangkat lunak di Mac saya menghargai entri file / etc / hosts saya ketika file host saya disinkronkan (alias) ke file lain, kecuali Safari. Ketika file host Anda adalah symlink, Safari mengabaikannya.

Solusi saya adalah membuat / etc / hosts menjadi hard link. Untungnya file hosts yang saya perbarui selalu berada dalam sistem file yang sama. Jika tidak, Anda borked.

Safari buruk ... buruk.

Matthew Du Puy
sumber
1
Saya telah mempertimbangkan perubahan karier - sampai saya menemukan ini. Kupikir aku akan benar-benar pintar dan menyimpan semua dotfile saya (dan file konfigurasi lainnya) dalam repositori git, dan kemudian membuat tautan simbolis. Telah menarik apa yang tersisa dari rambutku selama beberapa jam hari ini.
localheinz
Terima kasih, Anda telah menyelamatkan saya selama berjam-jam frustrasi! Safari Luar Biasa!
DrMeers
4

Satu- satunya hal yang berfungsi untuk saya (10.12.1 "Sierra"):

127.0.0.1   example.com
127.0.0.1   www.example.com
fe80::1%lo0 example.com
fe80::1%lo0 www.example.com
nev
sumber
2
Ini jawaban yang benar. Anda harus menambahkan domain.comdan www.domain.comdalam file host. Safari dapat menambahkan www.permintaan Anda dan tidak akan cocok dengan domain.com.
Vagner
3

Bekerja untuk saya di Yosemite:

  1. Pergi ke System Preferences> Network> Advanced> Proxy
  2. Centang Auto Proxy Discovery, tekan OK dan Terapkan (Saya tidak punya apa pun yang dicentang)
  3. Masukkan di Terminal: dscacheutil -flushcache

Ini memerah dnscache di Yosemite. Sekarang Safari dan Chrome harus menghormati file host Anda.

vascorola
sumber
Saya ingin mencoba yang ini, tapi saya menambatkan dengan iPhone saya dan opsi Advanced> Proxies tidak tersedia.
Roger Dueck
2

Coba letakkan satu atau dua carriage return setelah entri terakhir.

...
127.0.0.1       facebook.com

^ Carriage Return
Tuan Rusia
sumber
1
sayangnya ini tidak membantu.
Nicholas Tulach
Anda harus memiliki baris baru ( bukan carriage return) di akhir setiap baris, termasuk yang terakhir.
ganbustein
Kecuali dia menjalankan Mac OS 9.: o
William T Froggard
1

Dalam beberapa kasus, alamat loopback perlu ditambahkan untuk IPv4 dan IPv6 dalam /etc/hostsfile.

Katakanlah kita sudah menambahkan entri pemblokiran untuk alamat IPv4 website.com:

127.0.0.1 website.com

Jika dscacheutil -q host -a name website.commengembalikan alamat untuk kedua versi protokol:

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

name: website.com
ip_address: 127.0.0.1

maka kita perlu menambahkan baris lain ke file hosts:

::1 website.com
karniol
sumber
0

Saya memiliki garis akhir yang salah. Itu harus memiliki LF, saya punya CR.

pengguna83570
sumber
0

Saya punya masalah ini juga tetapi solusinya sangat mudah. ​​Misalkan Anda membuat Alias ​​di file host ke komputer Anda dengan nama localhost2

Entri dalam file host tersebut akan terlihat seperti ini: 127.0.0.1 localhost2

Ketika Anda mengetik "localhost2" di bilah safari url Anda akan melihat di dropdown bahwa opsi default adalah untuk mencari di google, Anda harus memilih opsi yang mengatakan "Pergi ke Situs localhost2"

pengguna104308
sumber
0

Pastikan / etc / hosts Anda memiliki atribut ini persis. Saya sedang menyalin, memodifikasi dan mengganti file menggunakan userid saya sendiri, setiap program lain tetap bekerja kecuali ...

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

Untuk alamat https example.com, saya harus memasukkan alamat IPv4 dan IPv6 untuk example.com dan www.example.com sebelum berfungsi. Seperti ini:

##
# 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
Jameson Quinn
sumber
-2

Menurut blog ini http://thecoredump.org/2011/09/editing-the-hosts-file-in-mac-os-x-lion/

Anda harus meletakkan entri di awal file host. Sangat tidak lazim. Belum ada pengalaman pribadi tentang ini.

Lynn Fang
sumber
Mereka salah. Hanya masalah sintaksis, bukan lokasi. Dan semua entri tambahan harus selalu mengikuti standar.
Mereka mungkin mengatakan untuk meletakkannya di awal untuk menghindari perangkap umum orang mengedit file host: mereka lupa untuk menempatkan baris baru di akhir baris terakhir. Tanpa baris baru itu, baris terakhir akan diabaikan. Jika Anda menambahkan entri ke depan, sulit untuk melupakan baris baru.
ganbustein
Tidak yakin mengapa, tetapi ini berhasil untuk saya. Saya menggunakan yosemite.
Vicary