Apakah mungkin untuk menentukan apakah Google Chrome dalam mode penyamaran melalui skrip?
Sunting: Maksud saya sebenarnya adalah mungkin melalui skrip pengguna, tetapi jawaban mengasumsikan JavaScript berjalan di halaman web. Saya telah mengajukan kembali pertanyaan di sini sehubungan dengan skrip pengguna.
javascript
google-chrome
incognito-mode
RodeoClown
sumber
sumber
incognito
jika Anda bisa menentukannya dengan mudah :)Jawaban:
Iya. API FileSystem dinonaktifkan dalam mode penyamaran. Lihat https://jsfiddle.net/w49x9f1a/ saat Anda berada dan tidak dalam mode penyamaran.
Kode sampel:
sumber
Salah satu caranya adalah dengan mengunjungi URL unik dan kemudian memeriksa untuk melihat apakah tautan ke URL itu diperlakukan sebagai dikunjungi oleh CSS.
Anda dapat melihat contohnya di "Detecting Incognito" (Dead link) .
Makalah penelitian oleh penulis yang sama untuk menggantikan link Detecting Incognito di atas
Di
main.html
tambahkan iframe,, dan beberapa kode JavaScript:
Kemudian di
test.html
-load ke iFrame:CATATAN: mencoba ini dari sistem file dapat membuat Chrome menangis tentang "Javascript Tidak Aman". Namun, ini akan berfungsi melayani dari server web.
sumber
:visited
: hacks.mozilla.org/2010/03/…Di Chrome 74+, Anda dapat menentukan ini dengan memperkirakan ruang penyimpanan sistem file yang tersedia
Lihat jsfiddle
sumber
Anda dapat, dalam JavaScript, melihat jawaban JHurrah . Kecuali untuk tidak menyorot tautan, semua mode penyamaran tidak menyimpan riwayat penelusuran dan cookie. Dari halaman bantuan google :
Seperti yang Anda lihat perbedaan antara penjelajahan normal dan penyamaran terjadi setelah Anda mengunjungi halaman web, maka tidak ada yang dikomunikasikan browser ke server saat berada dalam mode ini.
Anda dapat melihat apa yang sebenarnya dikirimkan browser Anda ke server menggunakan salah satu dari banyak penganalisis permintaan HTTP, seperti ini di sini . Bandingkan tajuk antara sesi normal dan penyamaran dan Anda tidak akan melihat perbedaan.
sumber
Jika Anda sedang mengembangkan Ekstensi, Anda dapat menggunakan API tab untuk menentukan apakah jendela / tab itu penyamaran.
Informasi lebih lanjut dapat ditemukan di sini .
Jika Anda hanya bekerja dengan halaman web, itu tidak mudah, dan dirancang seperti itu. Namun, saya perhatikan bahwa semua upaya untuk membuka database (window.database) gagal saat berada dalam mode penyamaran, hal ini karena saat dalam penyamaran tidak ada jejak data yang dibiarkan tertinggal di mesin pengguna.
Saya belum mengujinya tetapi saya curiga semua panggilan ke localStorage gagal juga.
sumber
Ini menggunakan janji untuk menunggu kode asinkron menyetel bendera, jadi kita bisa menggunakannya secara sinkron sesudahnya.
maka kita bisa melakukannya
sumber
reject('Check incognito failed')
denganresolve(false)
jika saya mauisIncognito
menjadi boolean yang hanya benar atau salah? Terima kasih.Syntax Error: await is a reserved word
, dan saya pikirawait
selalu perlu berada dalam suatuasync
fungsi. Jadi saya pikir kode ini tidak berfungsi.reject
akan memunculkan eksepsi jika dipanggil, dan nilai tidak akan dikembalikan, jadiisIncognito
akan selalutrue
ataufalse
cara kode ditulis. Namun, Anda juga dapat menggunakan 'penyelesaian' di sana jika Anda ingin nilai dikembalikan. Dan itu mungkin tergantung pada bagaimana menangani lingkungan menunggu dalam lingkup global? Ini berfungsi pada konsol chrome dalam lingkup global, tetapi Anda dapat mencoba menggabungkan semuanya(async function() { 'everything here' })();
sehingga dijalankan di dalam fungsi asinkronisIncognito
alih-alih hasilnya, dan menjalankannya setelah itu dalam fungsi asinkron:let isIncognito = new Promise( ...etc
lalu di tempat lain Anda akan memiliki fungsi seperti(async function() { if( !(await isIncognito) ) {alert('not incognito') } })();
Fungsi salin-tempel cepat berdasarkan Jawaban Alok (catatan: ini asinkron)
pemakaian:
sumber
Berikut adalah jawaban yang disarankan yang ditulis dalam sintaks ES6 dan sedikit jelas.
sumber
Di sini solusinya menggunakan janji
Cara menggunakannya:
sumber
Dokumentasi untuk mode penyamaran secara khusus mengatakan bahwa situs web tidak akan berperilaku berbeda. Saya yakin ini berarti jawabannya tidak.
sumber