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の両方を試しました。どちらも機能しませんでした。
ニコラス・トゥラッハ

コードブロックのテキストを/ etc / hostsとして保存すると、SafariでFacebookがブロックされました。/ etc / hostsでCR行末記号を使用していますか、または他のエントリをIPv6エントリの上に移動しようとしましたか?
Lri

面白いのは、facebook.comのリダイレクトの後に配置しても、search.yahoo.comをDuckDuckGoにリダイレクトするために使用する行が機能することですが、Facebookの行は何もしません。これに完全に困惑。
ニコラス・トゥラッハ

DNSキャッシュをフラッシュし、サファリの履歴とキャッシュをクリアしました-DNSキャッシュをフラッシュする方法がわからない場合は、Macを再起動することもできます。
コンキ14年

回答:


13

私は同じ問題のわずかに異なるバージョンを持っていたので、何がうまくいったのかを言及すると思いました。

ウェブサイトを開発しています。そのために、ローカルネットワークで実行されている各サイトの完全なコピーを持っています。ローカルで作業したいときは、常に「example.com」のエントリをローカルの/ etc / hostsファイルに追加しただけで、常にDNSをオーバーライドして、ウェブサイトのローカルコピーにアクセスできるようにしましたSafariおよびFirefoxを含む任意のブラウザー。実際のライブサイトに影響を与えずに作業し、完了したら変更をアップロードできます。

ただし、最近、この手法はSafariとFirefoxの両方で機能しなくなりましたが、Chromeでは機能しなかったため、しばらくの間はローカル開発にChromeを使用することに制限されていました。私はグーグルを検索し、提案されたすべての修正を試してみました-hostsファイルの最後のCR、1行につき1エントリのみ、「about:config」を使用したFirefoxのさまざまな設定変更など。

次に、この簡単なことを試しました。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に変換するさまざまなWebサイトがあります。「ipv4 to ipv6」でGoogle検索を行うだけです。


あなたの最後の文字が/etc/hosts改行であることを確認できますか?たとえば、で開きviます。
ダン

/ etc / hostsファイルの最後の文字は「\ n」または16進0Aです。
フレッド

1
これは正解です。Safariを防ぐには IPv4とIPv6の両方のエントリが必要です。MacOS 10.12でテスト済み。
alttag

ipaddressguide.com/ipv4-to-ipv6-両方とも2行を追加+非常に長い行を削除-それらを分離-その動作!
Artemiy StagnantIce Alexeew

8

これと同じ問題があり、hostsファイルに非常に長い行(同じ行にリストされた同じIPアドレスに複数のホストがマップされている)が原因でした。これをいくつかの行に分割して修正しました。


前の修正!
Artemiy StagnantIce Alexeew

7

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)にマッピングしていました。それはどのバリエーションでも機能しませんでした。

ウェブ上のいくつかの提案とは異なり、これらは役に立ちませんでした。

  • fe80::1%lo0 www.website.comまたはのようなIPv6ブロッキングの必要はありませんでした::1 website.com
  • の必要はありませんでしたが、念のためdscacheutil -flushcacheに行ってください。
  • hostsファイルの最初または最後に貼り付けるかどうかは関係ありません
  • ブラウザは異なる応答をしたようです。正しいhostsファイルが保存されると、ChromeとSafariはすぐにブロックし、Firefoxはしばらくそれを無視し続けました(再起動が十分だったかどうかは不明です)。
    • New Private Windowテストのためにブラウザを使用するか再起動してみてください。
  • アドレスの先頭http://またはhttps://先頭に追加しないでください
  • 他のコマンドは必要ありませんでした。
  • #既にhostsファイルにある行を無効にしないでください(=を先頭に追加してコメントアウト)。

便利なチェック

  • システムがリダイレクトを認識しているかどうかを確認します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上のすべてのソフトウェアは、Safariを除き、hostsファイルが別のファイルにシンボリックリンク(エイリアス)されたときに、/ etc / hostsファイルエントリを尊重しました。ホストファイルがシンボリックリンクの場合、Safariはそれを無視します。

私の解決策は、/ etc / hostsをハードリンクにすることでした。幸いなことに、私が最新の状態に保つhostsファイルは同じファイルシステムにあります。そうでない場合、あなたは退屈しています。

悪いSafari ...悪い。


1
私はこれを見つけるまで、転職を考えてきました。私は本当に賢く、すべてのドットファイル(および他の構成ファイル)をgitリポジトリに保存し、シンボリックリンクを作成すると思いました。今日は数時間、私の髪の毛を引っ張っていました。
localheinz

ありがとう、あなたは私に何時間ものフラストレーションを与えてくれました!信じられないほどのサファリ!
-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

ヨセミテで私のために働いた:

  1. [システム環境設定]> [ネットワーク]> [詳細設定]> [プロキシ]に移動します
  2. [自動プロキシ検出]にチェックマークを付けて[OK]をクリックし、適用します(他にチェックマークはありません)
  3. ターミナルに入力します:dscacheutil -flushcache

これにより、Yosemiteのdnscacheがフラッシュされます。これで、SafariとChromeはhostsファイルを尊重するはずです。


これを試してみたかったのですが、iPhoneとテザリングしていて、[詳細設定]> [プロキシ]オプションが利用できません。
ロジャーデューク


1

場合によっては、/etc/hostsファイル内のIPv4とIPv6の両方にループバックアドレスを追加する必要があります。

次の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

行末が間違っていました。LFが必要で、CRがありました。


0

私もこの問題を抱えていましたが、解決策は非常に簡単ですlocalhost2という名前でマシンのホストファイルにエイリアスを作成するとしましょう。

ホストファイルのエントリは次のようになります。127.0.0.1localhost2

サファリURLバーに「localhost2」と入力すると、ドロップダウンでデフォルトオプションがgoogleで検索することがわかります。「サイトlocalhost2に移動」というオプションを選択する必要があります。


0

/ etc / hostsにこれらの属性が正確に設定されていることを確認してください。私は自分のユーザーIDを使用してファイルをコピー、変更、置換していましたが、safariを除く他のすべてのプログラムは動作し続けました...

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

0

httpsアドレスexample.comの場合、example.comとwww.example.comの両方にIPv4アドレスとIPv6アドレスの両方を含める必要がありました。このような:

##
# 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/

ホストファイルの先頭にエントリを配置する必要があります。非常に非正統的です。ただし、これに関する個人的な経験はありません。


彼らは間違ってる。構文のみが重要であり、場所は重要ではありません。そして、すべての追加エントリは常にデフォルトに従う必要があります。

彼らはおそらく、hostsファイルを編集する人々のよくある落とし穴を避けるために、最初にそれを置くことを言うでしょう:彼らは最後の行の終わりに改行を置くことを忘れます。その改行がないと、最後の行は無視されます。エントリを先頭に追加すると、改行を忘れることはほとんどありません。
ガンブシュタイン14

理由は定かではありませんが、これでうまくいきます。ヨセミテを使用しています。
ビカリー
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.