Чому 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. Ні один не працював.
Микола Тулач


Цікаво, що рядок, який я використовую для перенаправлення search.yahoo.com на DuckDuckGo, працює, навіть якщо я ставлю його після переспрямування на facebook.com, але лінія Facebook нічого не робить. Повністю наткнувся на цей.
Микола Тулач

Ви очистили кеш-пам'ять dns та очистили історію safary та кеш-якщо ви не знаєте, як відмити кеш-пам'ять 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 до ipv6".


Не могли б ви перевірити останній символ вашого /etc/hostsнового рядка? Наприклад, відкрийте його vi.
дан

Останній символ мого файлу / etc / hosts - це "\ n", або шістнадцятковий 0A.
Фред

1
Це правильна відповідь. Щоб запобігти Safari, вам знадобляться як записи IPv4, так і IPv6. Тестовано в MacOS 10.12.
альттаг

ipaddressguide.com/ipv4-to-ipv6 - обидва додають 2 рядки + видаляють дуже довгі рядки - відокремлюють їх - це працює!
Артемій ЗастійнийАлекс Алексєєв

8

У мене була ця сама проблема, і це було викликано тим, що у моєму файлі хостів є дійсно довгі рядки (кілька хостів, зіставлені з однією і тією ж IP-адресою, вказаною в тому ж рядку). Я виправив це, розділивши це на кілька рядків.


правильно з попереднім!
Артемій ЗастійнийАлекс Алексєєв

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, коли мій файл хостів був пов'язаний (псевдонім) з іншим файлом, крім Safari. Коли ваш файл хостів є символьним посиланням, Safari ігнорує його.

Моє рішення полягало в тому, щоб зробити / etc / hosts міцним посиланням. На щастя, файл хостів, який я постійно в курсі, знаходиться в тій же файловій системі. Якщо це не так, ти змушений.

Поганий Сафарі ... поганий.


1
Я розглядав зміну кар’єри - поки не знайшов цього. Думав, що я справді розумний і зберігаю всі мої dotfiles (та інші файли конфігурації) у сховищі git, а потім створюю символічні посилання. Я вже кілька годин тягнув те, що залишилося від мого волосся.
localheinz

Дякую, ти врятував мені години розчарування! Неймовірне сафарі!
DrMeers

4

Тільки річ , яка працює для мене (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

2
Це правильна відповідь. Ви повинні додати domain.comі www.domain.comу файлі хоста. Safari може додавати www.у ваш запит і не відповідає domain.com.
Вагнер

3

Працював для мене на Yosemite:

  1. Перейдіть до Налаштування системи> Мережа> Додатково> Проксі
  2. Поставте позначку "Автоматичне відкриття проксі", натисніть "ОК" та "Застосувати" (нічого іншого я не поставив)
  3. Введіть у термінал: dscacheutil -flushcache

Це змиває пошкодження в Йосеміті. Тепер Safari та Chrome мають поважати файл хостів.


Я хотів спробувати цю, але я зв’язую свій iPhone, а параметр Advanced> Proxies недоступний.
Роджер Дуек

2

Спробуйте покласти один або два вагони після останнього запису.

...
127.0.0.1       facebook.com

^ Carriage Return

1
на жаль, це не допомогло.
Микола Тулач

У кінці кожного рядка, у тому числі і в останньому, у вас повинен бути новий рядок ( не повернення вагона).
ganbustein

Якщо він не працює на Mac OS 9.: o
Вільям Т Фроггард

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

тоді нам потрібно додати ще один рядок у файл хостів:

::1 website.com

0

У мене неправильне закінчення рядка Він повинен мати LF, у мене був CR.


0

У мене була і ця проблема, але рішення дуже легко. Припустимо, ви створили псевдонім у файлі хосту на своїй машині з ім'ям localhost2

Цей запис у файлі хоста повинен виглядати приблизно так: 127.0.0.1 localhost2

Коли ви введете "localhost2" на панелі URL-адреси сафарі, ви побачите, що в спадному меню видно, що за замовчуванням це пошук для пошуку в Google, ви повинні вибрати опцію "Перейти на сайт localhost2"


0

Переконайтеся, що ваші / etc / hosts мають саме ці атрибути. Я копіював, модифікував і замінював файл за допомогою мого власного userid, будь-яка інша програма продовжувала працювати, крім сафарі ...

$ 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

Не знаю чому, але це працює для мене. Я використовую йосеміт.
Вікарій
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.