Я добавил несколько доменов для блокировки ( 127.0.0.1 mydomain.com
) в свой /etc/hosts
файл, и по какой-то причине Safari их игнорирует.
Я пытался:
sudo dscacheutil -flushcache
),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
У меня была немного другая версия той же проблемы, и я подумал, что упомяну, что сработало для меня.
Я разрабатываю сайты. Для этого у меня есть полная копия каждого сайта, работающего в моей локальной сети. Когда я хочу работать локально, я всегда просто добавляю запись для «example.com» в свой локальный файл /etc/hosts, и это всегда переопределяет DNS, позволяя мне получить доступ к локальной копии веб-сайта в любой браузер, включая Safari и Firefox. Я могу работать, не затрагивая фактически работающий сайт, а затем загружать изменения, когда они будут завершены.
Однако недавно эта техника перестала работать как для Safari, так и для Firefox, но не для Chrome, поэтому какое-то время я был ограничен использованием Chrome для локальной разработки. Я поискал в Google и попробовал все предложенные исправления — CR в конце файла hosts, только одна запись в строке, различные изменения конфигурации 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
.Я потратил довольно много времени на 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
или::1 website.com
dscacheutil -flushcache
, но просто сделайте это на всякий случай.hosts
файла, 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
.hosts
файл должен заканчиваться новой строкой.У меня была такая же проблема, и она была вызвана наличием очень длинных строк в моем файле hosts (несколько хостов сопоставлены с одним и тем же IP-адресом, указанным в одной строке). Я исправил это, разделив это на несколько строк.
У меня была аналогичная проблема. Каждая часть программного обеспечения на моем Mac соблюдала мою запись в файле /etc/hosts, когда мой файл hosts был символически связан (псевдоним) с другим файлом, кроме Safari. Если ваш файл hosts является символической ссылкой, Safari игнорирует его.
Мое решение состояло в том, чтобы сделать /etc/hosts жесткой ссылкой. К счастью, файл hosts, который я постоянно обновляю, находится в той же файловой системе. Если это не так, вы borked.
Плохое сафари... плохое.
Единственное , что у меня работает (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
domain.com
и www.domain.com
в файл хоста. Safari может добавить www.
в ваш запрос и не будет соответствовать domain.com
.Попробуйте поставить один или два возврата каретки после последней записи.
...
127.0.0.1 facebook.com
^ Carriage Return
Работал для меня на Йосемити:
Это очищает dnscache в Yosemite. Теперь Safari и Chrome должны уважать ваш файл hosts.
В некоторых случаях необходимо добавить в /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
Начиная с бета-версии macOS Monterey 12.0 (21A5506j), Safari игнорировал мой /etc/hosts
файл, когда у меня была включена функция iCloud Private Relay. Решение состоит в том, чтобы полностью отключить частную ретрансляцию в меню «Настройки» > «Сеть» > «Использовать частную ретрансляцию iCloud».
У меня было неправильное окончание строки. У него должен быть LF, у меня был CR.
У меня тоже была эта проблема, но решение действительно простое. Предположим, вы создаете псевдоним в файле хоста для своей машины с именем localhost2.
Эта запись в файле хоста должна выглядеть так: 127.0.0.1 localhost2.
Когда вы вводите «localhost2» в строке URL-адреса сафари, вы заметите в раскрывающемся списке, что параметр по умолчанию — поиск в Google, вы должны выбрать параметр «Перейти на сайт localhost2».
Убедитесь, что ваш /etc/hosts имеет именно эти атрибуты. Я копировал, модифицировал и заменял файл, используя свой собственный идентификатор пользователя, все остальные программы продолжали работать, кроме сафари...
$ ls -l /etc/hosts
-rw-r--r-- 1 root wheel 1004 Sep 24 16:03 /etc/hosts
Для 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
Согласно этому блогу http://thecoredump.org/2011/09/editing-the-hosts-file-in-mac-os-x-lion/
Вы должны поместить запись в начало файла хоста. Очень неортодоксально. Хотя личного опыта в этом нет.
Лри