Tại sao Safari bỏ qua tập tin / etc / hosts của tôi?


22

Tôi đã thêm một số tên miền để chặn ( 127.0.0.1 mydomain.com ) với tôi /etc/hosts và vì một số lý do, Safari dường như đang bỏ qua chúng.

Tôi đã thử:

  • vô hiệu hóa tiện ích mở rộng Safari,
  • xóa bộ nhớ cache ( sudo dscacheutil -flushcache ),
  • khởi động lại Safari và Mac hoàn toàn.

Chrome tôn trọng /etc/hosts thay đổi, nhưng Safari thì không. Kèm theo là một mẫu của tôi /etc/hosts tập tin.

Tôi đang chạy Safari 6.0.4 với Mountain Lion 10.8.3

Có ý kiến ​​gì không?

##
# 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
Nếu không có phản hồi, Safari sẽ cố gắng thêm www. Đến đầu URL. Facebook sau đó có thể chuyển hướng trình duyệt đến Facebook.com. Hãy thử thêm www.facebook.com vào tập tin của bạn và xem nếu nó hoạt động.
JoshRagem

Tôi nghĩ rằng đây có thể là trường hợp. Tôi đã thử cả www.facebook.com và * .facebook.com. Không làm việc.
Nicholas Tulach

Khi tôi lưu văn bản trong khối mã dưới dạng / etc / hosts, nó đã chặn Facebook trong Safari. Có / etc / hosts của bạn sử dụng kết thúc dòng CR hay bạn đã thử di chuyển các mục khác bên trên các mục IPv6 ?
Lri

Điều thú vị là dòng tôi sử dụng để chuyển hướng search.yahoo.com sang DuckDuckGo hoạt động, ngay cả khi tôi đặt nó sau chuyển hướng cho facebook.com, nhưng dòng Facebook không làm gì cả. Hoàn toàn bị vấp ngã trên cái này.
Nicholas Tulach

bạn đã xóa bộ đệm dns và xóa lịch sử safari và bộ đệm - nếu bạn không biết cách xóa bộ đệm dns, bạn cũng có thể khởi động lại máy mac của mình.
konqui

Câu trả lời:


8

Tôi đã có một phiên bản hơi khác của cùng một vấn đề và nghĩ rằng tôi đã đề cập đến những gì làm việc cho tôi.

Tôi phát triển các trang web. Để làm điều đó, tôi có một bản sao hoàn chỉnh của mỗi trang web đang chạy trên mạng cục bộ của tôi. Khi tôi muốn làm việc tại địa phương, tôi luôn luôn thêm một mục nhập cho "example.com" vào tệp cục bộ / etc / hosts của mình và điều đó luôn ghi đè DNS, giúp tôi có thể truy cập bản sao của trang web bất kỳ trình duyệt nào, bao gồm Safari và Firefox. Tôi có thể làm việc mà không ảnh hưởng đến trang web trực tiếp thực tế, sau đó tải lên các thay đổi khi chúng hoàn tất.

Tuy nhiên, gần đây, kỹ thuật này đã ngừng hoạt động cho cả Safari và Firefox, nhưng không phải cho Chrome, vì vậy trong một thời gian, tôi đã bị hạn chế sử dụng Chrome để phát triển cục bộ. Tôi đã tìm kiếm google và thử tất cả các bản sửa lỗi được đề xuất - CR ở cuối tệp máy chủ, chỉ có một mục nhập trên mỗi dòng, thay đổi cấu hình Firefox khác nhau bằng cách sử dụng "about: config", v.v.

Sau đó, tôi đã thử điều đơn giản này: ngoài việc đưa phiên bản IPV4 của địa chỉ vào tệp / etc / hosts, tôi cũng đặt phiên bản IPV6.

Trước:

10.0.1.23       example.com

Sau:

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

Ngay sau khi tôi thêm mục IPV6, cả Firefox và Safari đã bắt đầu nhấn đúng máy chủ (cục bộ).

Có nhiều trang web sẽ dịch địa chỉ IPV4 sang IPV6; chỉ cần thực hiện tìm kiếm google trên "ipv4 đến ipv6".


Bạn có thể kiểm tra ký tự cuối cùng của bạn không /etc/hosts là một dòng mới? Ví dụ mở nó với vi.
daniel Azuelos

Ký tự cuối cùng của tệp / etc / hosts của tôi là "\ n" hoặc hex 0A.
Fred

1
Đây là câu trả lời chính xác. Để ngăn Safari, bạn sẽ cần cả hai Các mục IPv4 và IPv6. Đã thử nghiệm trong MacOS 10.12.
alttag

7

Tôi gặp vấn đề tương tự và nguyên nhân là do có các dòng thực sự dài trong tệp máy chủ của tôi (nhiều máy chủ được ánh xạ tới cùng một địa chỉ IP được liệt kê trên cùng một dòng). Tôi đã sửa nó bằng cách chia nó thành nhiều dòng.


6

Tôi đã có một vấn đề tương tự. Mỗi phần mềm trên máy Mac của tôi đều tôn vinh mục nhập tệp / etc / hosts của tôi khi tệp máy chủ của tôi được liên kết tượng trưng (bí danh) với tệp khác, ngoại trừ Safari. Khi tệp máy chủ của bạn là một liên kết tượng trưng, ​​Safari sẽ bỏ qua nó.

Giải pháp của tôi là tạo / etc / hosts một liên kết cứng. May mắn là tập tin máy chủ tôi giữ cho đến nay là trong cùng một hệ thống tập tin. Nếu không, bạn sẽ bị đau đầu.

Safari xấu ... xấu.


1
Tôi đã xem xét một sự thay đổi nghề nghiệp - cho đến khi tôi tìm thấy điều này. Nghĩ rằng tôi đã thực sự thông minh và lưu trữ tất cả các dotfiles của tôi (và các tệp cấu hình khác) trong kho git, sau đó tạo các liên kết tượng trưng. Đã kéo những gì còn lại của tóc tôi trong vài giờ hôm nay.
localheinz

Cảm ơn bạn, bạn đã tiết kiệm cho tôi hàng giờ thất vọng! Safari không thể tin được!
DrMeers

4

Các chỉ có điều phù hợp với tôi (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
Đây là câu trả lời chính xác. Bạn phải thêm domain.comwww.domain.com trong tập tin máy chủ. Safari có thể thêm www. trong yêu cầu của bạn và sẽ không phù hợp với domain.com.
Vagner

4

Tôi đã dành khá nhiều thời gian cho OS X El Capitan 10.11.4 để chặn các trang web sử dụng tệp / etc / hosts thay vì sử dụng Parental Control trong tùy chọn Hệ thống. Cuối cùng, nó chỉ đơn giản hoạt động như thế này:

127.0.0.1 www.website.com
127.0.0.1 website.com

Tôi đã thử rất nhiều biến thể, nhưng tôi luôn ánh xạ tới 0.0.0.0 ( 0.0.0.0 website.com ). Điều đó không bao giờ làm việc trong bất kỳ biến thể.

Không giống như một số gợi ý trên web, những điều này là vô ích:

  • Không cần chặn IPv6 như fe80::1%lo0 www.website.com hoặc là ::1 website.com
  • Không cần dscacheutil -flushcache, nhưng chỉ làm điều đó trong trường hợp.
  • Không thành vấn đề nếu bạn dán nó ở đầu hoặc cuối tệp máy chủ
  • Các trình duyệt dường như đã được phản hồi khác nhau: Chrome và Safari đã chặn nó ngay lập tức một khi đúng hosts tệp đã được lưu, Firefox tiếp tục bỏ qua nó trong một thời gian (không rõ nếu khởi động lại nó là đủ).
    • Thử sử dụng New Private Window hoặc khởi động lại trình duyệt để kiểm tra nó.
  • Đừng thêm vào http:// hoặc là https:// ở đầu địa chỉ
  • Không có lệnh khác là cần thiết.
  • Không tắt (= nhận xét bằng cách thêm # ở đầu) các dòng trong tệp máy chủ đã có.

Kiểm tra hữu ích

  • Kiểm tra xem hệ thống có nhận ra chuyển hướng của bạn không dscacheutil -q host -a name website.com - nó sẽ hiển thị:

    name: website.com
    ip_address: 127.0.0.1
    
  • Kiểm tra nếu cú ​​pháp của hosts tập tin là chính xác bởi: cat -vet /etc/hosts. Điều này cho thấy các nhân vật vô hình:

    • Các dòng nên kết thúc bằng $
    • Giữa 127.0.0.1website.com chỉ nên là một khoảng trắng hoặc một tab, được hiển thị dưới dạng ^I.
  • Lưu ý rằng đối với một số trang web, chẳng hạn như facebook, bạn có thể cần phải chặn rất nhiều địa chỉ .
  • Tôi nghĩ rằng hosts tập tin nên kết thúc với một dòng mới.

3

Làm việc cho tôi trên Yosemite:

  1. Chuyển đến Tùy chọn hệ thống & gt; Mạng & gt; Nâng cao & gt; Proxy
  2. Đánh dấu vào Auto Proxy Discovery, nhấn OK và Áp dụng (Tôi chưa có đánh dấu nào khác)
  3. Nhập vào Terminal: dscacheutil -flushcache

Điều này tuôn ra dnscache ở Yosemite. Bây giờ Safari và Chrome nên tôn trọng tệp máy chủ của bạn.


Tôi muốn thử cái này, nhưng tôi đang kết nối với iPhone của tôi và Advanced & gt; Tùy chọn proxy không có sẵn.
Roger Dueck

2

Hãy thử đặt một hoặc hai xe trở về sau lần nhập cuối cùng.

...
127.0.0.1       facebook.com

^ Carriage Return

1
Thật không may, điều này đã không giúp đỡ.
Nicholas Tulach

Bạn phải có một dòng mới ( không phải một chuyến xe trở về) ở cuối mỗi dòng, bao gồm cả dòng cuối cùng.
ganbustein

Trừ khi anh ấy chạy Mac OS 9 .: o
William T Froggard

1

Trong một số trường hợp, địa chỉ loopback cần được thêm cho cả IPv4 và IPv6 trong /etc/hosts tập tin.

Giả sử chúng tôi đã thêm một mục chặn cho địa chỉ IPv4 của website.com:

127.0.0.1 website.com

Nếu dscacheutil -q host -a name website.com trả về địa chỉ cho cả hai phiên bản giao thức:

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

name: website.com
ip_address: 127.0.0.1

sau đó chúng ta cần thêm một dòng khác vào tập tin máy chủ:

::1 website.com

0

Tôi đã kết thúc sai dòng. Nó phải có LF, tôi đã có CR.


0

Tôi cũng có vấn đề này nhưng giải pháp rất dễ Giả sử bạn tạo Bí danh trong tệp máy chủ cho máy của mình với tên localhost2

Mục nhập đó trong tệp máy chủ sẽ trông như thế này: 127.0.0.1 localhost2

Khi bạn nhập "localhost2" vào thanh url safari, bạn sẽ thấy trong danh sách thả xuống rằng tùy chọn mặc định là tìm kiếm trong google, bạn nên chọn tùy chọn có nội dung "Truy cập trang web localhost2"


0

Hãy chắc chắn rằng / etc / hosts của bạn có chính xác các thuộc tính này. Tôi đã sao chép, sửa đổi và thay thế tệp bằng userid của riêng tôi, mọi chương trình khác vẫn hoạt động trừ safari ...

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

-2

Theo blog này http://thecoredump.org/2011/09/editing-the-hosts-file-in-mac-os-x-lion/

Bạn phải đặt mục ở đầu tập tin máy chủ. Rất không chính thống. Không có bất kỳ kinh nghiệm cá nhân về điều này mặc dù.


Họ sai. Chỉ có vấn đề cú pháp, không phải vị trí. Và tất cả các mục bổ sung phải luôn luôn theo mặc định.

Có lẽ họ nói nên đặt nó ở đầu để tránh một cạm bẫy chung của những người chỉnh sửa tệp máy chủ: họ quên đặt một dòng mới ở cuối dòng cuối cùng. Không có dòng mới đó, dòng cuối cùng sẽ bị bỏ qua. Nếu bạn thêm mục vào phía trước, thật khó để quên dòng mới.
ganbustein

Không chắc chắn tại sao, nhưng điều này làm việc cho tôi. Tôi đang sử dụng yosemite.
Vicary
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.