(Làm thế nào) Một trang web có thể xác định xem Safari Private Browseing được bật không?


11

Trong Safari trên Mavericks, đôi khi tôi nhận được một hộp thoại từ các trang web cho biết rằng một số chức năng trang web sẽ bị chặn hoặc xuống cấp trừ khi tôi tắt chế độ Duyệt web riêng tư. Hầu hết người dùng có thể mong đợi sự lựa chọn của họ về việc có nên sử dụng Duyệt web riêng tư ở chế độ riêng tư hay không. Ấn tượng của tôi là các trình duyệt lớn khác không rò rỉ trạng thái Duyệt web riêng tư lên các trang web.

Tôi đã nhận thấy rằng khi ở chế độ Duyệt web riêng tư, Safari sẽ không yêu cầu favicon, vì vậy về mặt lý thuyết, một trang web có thể chặn bộ nhớ đệm của favicon và đoán khá rõ rằng Duyệt web riêng tư đang bật.

Ngược lại, trên iOS, Safari hoàn toàn không yêu cầu favicon. Nhưng ngay cả trong chế độ Duyệt web riêng tư, sẽ yêu cầu bất kỳ "biểu tượng cảm ứng táo" nào nếu bạn truy cập bảng Chia sẻ (biểu tượng táo chạm được sử dụng làm biểu tượng Màn hình chính nếu sau đó bạn "Thêm vào màn hình chính" cho điều đó URL).

Khác với favicon, có những cách đã biết khác mà một trang web có thể xác định (hoặc đoán với độ chính xác hợp lý) rằng bạn đang sử dụng chế độ Duyệt web riêng tư trong Safari máy tính để bàn?


Bạn có thể cung cấp một trang web ví dụ?
sayzlim

ví dụ: video.pbs.org "Đã xảy ra lỗi. Để có trải nghiệm tốt nhất với trang web này, vui lòng kiểm tra xem Duyệt web riêng tư có TẮT hay không."
bút danh

Có thể trang web đang khóa một số yếu tố khác, chẳng hạn như DNT = 1 hoặc một số chặn theo dõi. Nếu đó là trường hợp, thông báo lỗi là sai lệch. Nhưng tôi đã nhận được một cái gì đó tương tự trên các trang web khác.
bút danh

1
Tôi vừa thử nghiệm DNT và chặn các tiện ích mở rộng và những tiện ích này dường như không phải là một yếu tố. Trong chế độ Duyệt web riêng tư với tất cả các tiện ích mở rộng tắt và không đặt DNT, tôi vẫn nhận được hộp thoại báo lỗi. Nhưng với tính năng Duyệt web riêng tư và DNT = 1 và (chặn) tiện ích mở rộng, tôi không gặp phải lỗi này.
bút danh

Tại sao bạn không muốn một trang web biết rằng bạn đang ở chế độ riêng tư? Ứng dụng dựa trên web của chúng tôi sẽ hoàn toàn không hoạt động trong cấu hình đó vì chúng tôi phụ thuộc rất nhiều vào indexeddb, appcache, lưu trữ cục bộ, nhân viên web và một loạt các tính năng HTML5 khác không có sẵn khi ở chế độ riêng tư. Vì vậy, những gì bạn đang yêu cầu là một cách để ngăn chúng tôi nói với người dùng rằng họ đã định cấu hình trình duyệt của họ để ứng dụng web của chúng tôi không hoạt động. Giá trị của nó là gì? (Nếu bạn không hiểu tại sao điều này không có ý nghĩa gì, hãy thư giãn. Bạn không bị tổn hại bởi một trang web biết
user3343404

Câu trả lời:


14

Trên iOS, bộ nhớ cục bộ của HTML5 không khả dụng ở chế độ duyệt web riêng tư, điều đó có nghĩa là bạn có thể phát hiện ra nó bằng cách cố gắng lưu thứ gì đó vào bộ nhớ cục bộ và bắt ngoại lệ với JavaScript sau:

try { localStorage.test = 2; } catch (e) {
  alert('You are in Private Browsing mode');
}

Được sửa đổi từ /programming//a/17741714/

Trên OS X, không thực sự là một phương pháp chính tắc, nhưng điều này sẽ cung cấp một số thông tin hữu ích:

Nếu bạn đang tìm kiếm hướng dẫn triển khai, có lẽ bạn nên thử Stack Overflow


Cảm ơn. Tôi chỉ quan tâm đến việc triển khai phía máy chủ đến mức nó giúp tôi phòng thủ chống lại nghệ thuật hắc ám;)
bút danh

2
Cảnh giác với các kết quả dương tính giả - đoạn mã JavaScript được cung cấp cũng sẽ hiển thị cảnh báo ở chế độ không riêng tư nếu khóa lưu trữ cục bộ cho nguồn gốc đó đã đầy.
Mathias Bynens


4

Duyệt web riêng tư của Safari không hoạt động giống như trình duyệt riêng tư khác của trình duyệt .

Ví dụ: Chế độ ẩn danh của Chrome tạo một phiên mới riêng biệt, tất cả dữ liệu sẽ bị xóa sau phiên duyệt (trang web vẫn có thể theo dõi hành động của bạn từ địa chỉ IP trong chế độ đó).

Mặc dù Safari cấm trang web tạo / ghi tệp cục bộ, hãy loại bỏ tất cả các thay đổi được thực hiện đối với cookie, bao gồm các hoạt động của bạn trong trình duyệt trong phiên duyệt web này (trang web vẫn có thể theo dõi hoạt động của bạn trong chế độ này, ngoại trừ việc họ lưu trữ cookie trong phiên này sẽ bị loại bỏ).

Vậy làm thế nào để một trang web biết nếu bạn đã bật Duyệt web riêng tư? Bởi vì nó kiểm tra nếu nó có thể ghi tập tin cục bộ .


Safari không cho phép cookie trong phiên Duyệt web riêng tư, phải không? Tôi có thể đăng nhập vào các trang web trong khi Duyệt web riêng tư và làm mọi việc tôi thường làm, và không gặp phải giới hạn nào, ngoại trừ trong những trường hợp hiếm hoi tôi nhận được hộp thoại như thế này.
bút danh

Vâng, sửa đổi câu trả lời của tôi một chút. Ý tôi là cookie của bạn trong phiên này không được lưu sau khi Duyệt web riêng tư bị tắt.
sayzlim
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.