স্ক্রিপ্টের মাধ্যমে ক্রোম ছদ্মবেশী মোডে রয়েছে কিনা তা আপনি নির্ধারণ করতে পারেন?


114

কোনও স্ক্রিপ্টের মাধ্যমে গুগল ক্রোম ছদ্মবেশী মোডে রয়েছে কিনা তা নির্ধারণ করা সম্ভব?

সম্পাদনা: আমি আসলে বলতে চাইছিলাম এটি ব্যবহারকারী-স্ক্রিপ্টের মাধ্যমে সম্ভব, তবে উত্তরগুলি ধরে নিই যে ওয়েব পৃষ্ঠায় জাভাস্ক্রিপ্ট চলছে। ব্যবহারকারীর স্ক্রিপ্টগুলির বিষয়ে আমি এখানে প্রশ্নটি পুনরায় জিজ্ঞাসা করেছি ।


28
incognitoআপনি খুব সহজেই এটি নির্ধারণ করতে পারলে এটি খুব বেশি হবে না :)
আরেন

এবং আপনাকে মনে রাখতে হবে যে ব্যবহারকারীকে অবশ্যই এক্সটেনশন ম্যানুয়ালটির জন্য ছদ্মবেশী মোডের অনুমতি দিতে হবে। ডিফল্টরূপে, সবকিছু সত্য।
মোহাম্মদ মনসুর

@ মোহাম্মদ: ব্যবহারকারীকে এটির অনুমতি দেওয়া আমার হবে, যাতে কোনও সমস্যা হবে না :)
রোডিও ক্লাউন ডাউন


1
@ পেটএলভিন বা সাইট ছদ্মবেশ সনাক্ত করে মানকে হ্রাস করতে পারে। বোস্টন গ্লোবের সাইটটি তার নিবন্ধগুলি ছদ্মবেশে প্রদর্শন করবে না, ব্যবহারকারীকে তাদের নিবন্ধের নিবন্ধের কোটা ছাড়িয়ে দেবে। সাধারণভাবে, আমি আমার সম্পর্কে কম সাইট পছন্দ করি।
জনসি

উত্তর:


232

হ্যাঁ. ফাইলসিস্টেম এপিআই ছদ্মবেশী মোডে অক্ষম। আপনি যখন আছেন এবং ছদ্মবেশী মোডে নেই তখন https://jsfiddle.net/w49x9f1a/ দেখুন ।

কোডের উদাহরণ:

    var fs = window.RequestFileSystem || window.webkitRequestFileSystem;
    if (!fs) {
      console.log("check failed?");
    } else {
      fs(window.TEMPORARY,
         100,
         console.log.bind(console, "not in incognito mode"),
         console.log.bind(console, "incognito mode"));
    }


19
এটি সর্বনিম্ন হ্যাক-ইশ উপায় এবং এটি শীর্ষে থাকা উচিত। পরিষ্কার এবং মার্জিত।
টম টেমন

1
@ user2718671 jsfiddle.net/w49x9f1a এখনও ম্যাক ওক্সে সর্বশেষ ক্রোমে আমার পক্ষে ভাল কাজ করে। অদ্ভুত ...
অলোক

1
আমি ক্রোমে চেষ্টা করেছি। এটি কাজ করে তবে যুক্তিটি পিছনের দিকে।
লুকাস মাসুহ

9
এই শীঘ্রই ধন্যবাদ দূরে যেতে যাচ্ছে এই করে
blueren

8
ক্রোম বনাম 77.0.3865.90 এ ব্যর্থ
গীতেশ পূর্বিয়া

18

একটি উপায় হ'ল একটি অনন্য ইউআরএল পরিদর্শন করা এবং তারপরে সেই URL টির কোনও লিঙ্ক CSS দ্বারা পরিদর্শন করা হয় কিনা তা পরীক্ষা করে দেখুন।

আপনি "ছদ্মবেশী সনাক্তকরণ" (মৃত লিঙ্ক) এ এর উদাহরণ দেখতে পাচ্ছেন ।

উপরের ছদ্মবেশী লিঙ্কটি সনাক্ত করার জন্য একই লেখকের গবেষণা পত্র

ইন main.htmlএকটি iframe যোগ করুন,

 <iframe id='testFrame' name='testFrame' onload='setUniqueSource(this)' src='' style="width:0; height:0; visibility:hidden;"></iframe>

, এবং কিছু জাভাস্ক্রিপ্ট কোড:

function checkResult() {
  var a = frames[0].document.getElementById('test');
  if (!a) return;

  var color;
  if (a.currentStyle) {
    color = a.currentStyle.color;
  } else {
    color = frames[0].getComputedStyle(a, '').color;
  }

  var visited = (color == 'rgb(51, 102, 160)' || color == '#3366a0');
  alert('mode is ' + (visited ? 'NOT Private' : 'Private'));
}

function setUniqueSource(frame) {
  frame.src = "test.html?" + Math.random();
  frame.onload = '';
}

তারপরে test.htmlএতে আইফ্রেমে লোড করা হয়:

<style> 
   a:link { color: #336699; }
   a:visited { color: #3366A0; }
</style> 
<script> 
  setTimeout(function() {
    var a = document.createElement('a');
    a.href = location;
    a.id = 'test';
    document.body.appendChild(a);
    parent.checkResult();
  }, 100);
</script> 

দ্রষ্টব্য: ফাইল সিস্টেম থেকে এটি চেষ্টা করা Chrome কে "অনিরাপদ জাভাস্ক্রিপ্ট" সম্পর্কে চিৎকার করতে পারে। এটি যাইহোক, একটি ওয়েব সার্ভার থেকে পরিবেশনার কাজ করবে।


এটি বেশ দুর্দান্ত, আমি বুঝতে পারি নি যে ছদ্মবেশী মোড পরিদর্শন করা লিঙ্কগুলিকে হাইলাইট করে না। এটির জন্য যদিও কোনও লিঙ্কটি ক্লিক করা প্রয়োজন।
ইগর জেভাকা

1
না এটি হয় না, iframe লিঙ্কটি "ক্লিক" করে।
কিবিবু

40
বেশিরভাগ ব্রাউজারগুলি প্রকাশ না করায় এটি আসলে কাজ করে না: জাভাস্ক্রিপ্টের মাধ্যমে পরিদর্শন করা স্টাইলের তথ্য। সিএসএস ইন্টারফেসটি বলবে যেন লিঙ্কটিতে অ-দর্শনীয় রঙ রয়েছে। এটি একটি সুরক্ষা ব্যবস্থা যা ওয়েবকিট- এবং গেকো ব্রাউজারগুলিতে কমপক্ষে ২০১০ সাল থেকে রয়েছে This এটি ব্যবহারকারীর ইতিহাস রক্ষা করার জন্য ছিল (উদাহরণস্বরূপ, সমস্ত সম্ভাব্য ইউআরএল চেষ্টা করতে পারে, এবং পরিদর্শন করা একটি তৃতীয় পক্ষকে প্রেরণ করতে পারে This এইভাবে কেউ পেতে পারে ইউআরএলগুলিতে টোকেনগুলিতে অ্যাক্সেস এবং কী নয়)।
টিমো তিজহফ

2
সম্পর্কিত গোপনীয়তার পরিবর্তনগুলি ব্যাখ্যা করে সরকারী মজিলা নিবন্ধ :visited: hacks.mozilla.org/2010/03/…
ডেনিলসন সা মায়া

18

ক্রোম +৪+ তে আপনি উপলব্ধ ফাইল সিস্টেমের সঞ্চয়স্থানের স্থান অনুমান করে এটি নির্ধারণ করতে পারেন

Jsfiddle দেখুন

if ('storage' in navigator && 'estimate' in navigator.storage) {
    const {usage, quota} = await navigator.storage.estimate();
    console.log(`Using ${usage} out of ${quota} bytes.`);

    if(quota < 120000000){
        console.log('Incognito')
    } else {
        console.log('Not Incognito')
    }   
} else {
    console.log('Can not detect')
}

4
এটি এখন সঠিক উত্তর। হয় গ্রহণযোগ্য উত্তর এটির সাথে আপডেট করা উচিত, অথবা স্বীকৃত উত্তরটি পরিবর্তন করা উচিত। মূল গ্রহণযোগ্য উত্তর থেকে দূরে সরে যাবেন না কারণ এটি তখনকার সঠিক সমাধান ছিল।
ক্রুঙ্কার

8

আপনি, জাভাস্ক্রিপ্টে, জুরহুরার উত্তর দেখতে পারেন । লিঙ্কগুলি হাইলাইট না করা ব্যতীত সমস্ত ছদ্মবেশী মোড ব্রাউজ ইতিহাস এবং কুকিজ সংরক্ষণ করে না। গুগল সহায়তা পৃষ্ঠা থেকে :

  • আপনি ছদ্মবেশী থাকাকালীন আপনি যে ওয়েব পৃষ্ঠাগুলি খুলেন এবং ফাইলগুলি ডাউনলোড করা হয় সেগুলি আপনার ব্রাউজিং এবং ডাউনলোডের ইতিহাসে রেকর্ড করা হয় না।
  • আপনি যে সমস্ত ছদ্মবেশী উইন্ডো খুলেছেন তা বন্ধ করার পরে সমস্ত নতুন কুকিজ মুছে ফেলা হবে।

আপনি যেমন দেখতে পাচ্ছেন যে ওয়েব ব্রাউজটি দেখার পরে সাধারণ ব্রাউজিং এবং ছদ্মবেশের মধ্যে পার্থক্য ঘটে থাকে , সুতরাং ব্রাউজারটি যখন এই মোডে থাকে তখন সার্ভারের সাথে যোগাযোগ করে এমন কিছুই নেই।

আপনি দেখতে পারেন আপনার ব্রাউজার সার্ভার অনেক HTTP অনুরোধ বিশ্লেষক একটি ব্যবহার পাঠায় মত, ঠিক কি এখানে এই এক । সাধারণ অধিবেশন এবং ছদ্মবেশের মধ্যে শিরোনামগুলির তুলনা করুন এবং আপনি কোনও পার্থক্য দেখতে পাবেন না।


সম্প্রতি, এটি সেই এক্সটেনশনগুলি ব্যতীত সমস্ত এক্সটেনশান অক্ষম করে যা ব্যবহারকারী দ্বারা ছদ্মবেশী নিরাপদ হিসাবে চিহ্নিত করেছিলেন।
টিবেরিউ-আয়নু স্টান

4

আপনি যদি কোনও এক্সটেনশান বিকাশ করছেন তবে আপনি উইন্ডো / ট্যাব ছদ্মবেশী কিনা তা নির্ধারণ করতে আপনি ট্যাবগুলি API ব্যবহার করতে পারেন।

আরও তথ্য এখানে পাওয়া যাবে

যদি আপনি কেবল একটি ওয়েবপৃষ্ঠা নিয়ে কাজ করছেন তবে এটি সহজ নয় এবং এটি সেভাবে ডিজাইন করা হয়েছে। যাইহোক, আমি লক্ষ করেছি যে একটি ডাটাবেস খোলার সমস্ত প্রচেষ্টা (উইন্ডো.ড্যাটাসবস) ব্যর্থ হয় যখন incongnito এ থাকে, কারণ এটি যখন ছদ্মবেশে থাকে তখন ব্যবহারকারীদের মেশিনে ডেটার কোনও চিহ্ন রাখার অনুমতি থাকে না।

আমি এটি পরীক্ষা করে দেখিনি তবে আমি সন্দেহ করি লোকালস্টোরারে সমস্ত কলও ব্যর্থ হয়েছে।


3

এটি একটি পতাকা সেট করার জন্য অ্যাসিক্রোনাস কোডের জন্য অপেক্ষা করার প্রতিশ্রুতি ব্যবহার করে, তাই আমরা পরে এটি সিঙ্ক্রোনালি ব্যবহার করতে পারি।

let isIncognito = await new Promise((resolve, reject)=>{
    var fs = window.RequestFileSystem || window.webkitRequestFileSystem;
    if (!fs) reject('Check incognito failed');
    else fs(window.TEMPORARY, 100, ()=>resolve(false), ()=>resolve(true));      
});

তাহলে আমরা করতে পারি

if(isIncognito) alert('in incognito');
else alert('not in incognito');

এই সৌন্দর্য খুব আকর্ষণীয় এবং জাভাস্ক্রিপ্ট একটি ফর্ম যে আমি অপরিচিত আছি এবং উইন্ডোজ 10. আমার Netbeans 8.2 আইডিই দ্বারা অসমর্থিত বলে মনে হয় কিন্তু আমি যদি এটা কাজ পেতে পারেন, আমিও কৌতুহলী হল: আমি প্রতিস্থাপন করতে পারে reject('Check incognito failed')সঙ্গে resolve(false)যদি আমি চাই isIncognitoবুলিয়ান হতে যা কেবল কখনও সত্য বা মিথ্যা? ধন্যবাদ।
রায়ান

2
আমি দেখছি Syntax Error: await is a reserved word, এবং আমি মনে করি awaitসবসময় কোনও asyncফাংশনের মধ্যে থাকা দরকার । সুতরাং আমি মনে করি এই কোডটি কাজ করে না।
রায়ান

1
rejectযদি এটি ডাকা হয় তবে একটি ব্যতিক্রম উত্থাপন করবে এবং কোনও মান ফেরত দেওয়া হবে না, তাই isIncognitoসর্বদা trueবা falseকোডটি যেভাবে লেখা হয় তা would তবে আপনি যদি কোনও মান ফেরত চান তবে আপনি সেখানে একটি 'সংকল্প' ব্যবহার করতে সক্ষম হবেন। এবং এটি নির্ভর করে যে পরিবেশ কীভাবে হ্যান্ডলগুলি বিশ্বব্যাপী সুযোগে অপেক্ষা করছে? এটি বিশ্বব্যাপী ক্রোম কনসোলে কাজ করে তবে আপনি সমস্ত কিছু মোড়ানোর চেষ্টা করতে পারেন (async function() { 'everything here' })();তাই এটি একটি
অ্যাসিঙ্ক

2
বিকল্পভাবে, আপনি isIncognitolet isIncognito = new Promise( ...etc(async function() { if( !(await isIncognito) ) {alert('not incognito') } })();
ফলাফলটির

1
এই উত্তরটি Chrome এ 76+ অকার্যকর ও বাতিল হয়
Cruncher

0

অলোকের উত্তরের উপর ভিত্তি করে দ্রুত কপি-পেস্ট ফাংশন (দ্রষ্টব্য: এটি অবিচ্ছিন্ন)

function ifIncognito(incog,func){
    var fs = window.RequestFileSystem || window.webkitRequestFileSystem;
    if (!fs)  console.log("checking incognito failed");
    else {
        if(incog) fs(window.TEMPORARY, 100, ()=>{}, func);
        else      fs(window.TEMPORARY, 100, func, ()=>{});
    }
} 

ব্যবহার:

ifIncognito(true,  ()=>{ alert('in incognito') });
// or
ifIncognito(false, ()=>{ alert('not in incognito') });

এটি আর কাজ করছে না (সম্ভবত এটি অতীতে কাজ করেছিল)
আলেকজান্দ্রু আর

2
এখনই আমার ক্রোম আপডেট করেছে এবং এটি এখনও কাজ করে। আমি দেখতে পেয়েছি আপনি একই পোস্ট করেছেন এবং তারপরে বলেছেন যে আপনি ভুল করেছেন, কেবল ভবিষ্যতের দর্শকদের জন্য এটি নির্দেশ করে (আপনার মন্তব্য মুছতে নির্দ্বিধায় মনে করুন, আপনি যদি এটি করেন তবে আমি এটি মুছে ফেলব)।
aljgom

0

এখানে প্রস্তাবিত উত্তরটি ES6 সিনটেক্সটে রচিত এবং কিছুটা বিচ্ছিন্ন হয়ে গেল।

const isIncognito = () => new Promise((resolve, reject) => {
    const fs = window.RequestFileSystem || window.webkitRequestFileSystem;

    if (!fs) {
        reject('Cant determine whether browser is running in incognito mode!');
    }

    fs(window.TEMPORARY, 100, resolve.bind(null, false), resolve.bind(null, true));
});

// Usage
isIncognito()
    .then(console.log)
    .catch(console.error)

0

এখানে প্রতিশ্রুতি ব্যবহার করে সমাধান

const isIncognito = () => {
    return new Promise((resolve, reject) => {
      if ("storage" in navigator && "estimate" in navigator.storage) {
        navigator.storage.estimate().then((res) => {
          console.log(`Using ${res.usage} out of ${res.quota} bytes.`);
          if (res.quota < 120000000) {
            resolve(true);
          } else {
            reject(false);
          }
        });
      } else {
        reject(false);
      }
    });
  };

এটি কীভাবে ব্যবহার করবেন:

isIncognito().then(yes => console.log(yes)).catch(isnot => console.log(isnot))

-10

ছদ্মবেশী মোডের জন্য ডকুমেন্টেশনটি স্পষ্টতই বলেছে যে ওয়েবসাইটগুলি আলাদা আচরণ করবে না। আমি বিশ্বাস করি এর অর্থ হ'ল উত্তরটি নেই।


9
আমি জানি এই উত্তরটি 4 বছরের পুরনো, তবে সম্প্রতি নেটফ্লিক্স বৈশিষ্ট্যযুক্ত "ছদ্মবেশী" সনাক্তকরণটি কার্যকর করেছে এবং তারা কীভাবে এটিকে টানিয়েছে তা গবেষণার প্রতি আমার আগ্রহের বিষয়টি তাড়িত করে। আপনি যদি ছদ্মবেশে নেটফ্লিক্স যান তবে নেটফ্লিক্স আপনাকে ভিডিও খেলতে দেয় না।
ILikeTacos

যাচাই করা <ক্রোম>: "ছদ্মবেশী মোড ত্রুটি আপনার ব্রাউজারটি ছদ্মবেশী মোডে উপস্থিত বলে মনে হচ্ছে" "
পিট অ্যালভিন 13

আমি মনে করি এই পোস্টটি উন্নত হতে পারে কারণ এটি অবশ্যই সত্য কথা বলে না। যেহেতু এটি ইতিমধ্যে এই উত্তর থেকে উপরে এবং নীচে উভয়ই প্রমাণিত হয়েছে এটি যদি দেখা হয় যে কেউ যদি তারা ছদ্মবেশী মোড থেকে বা নিয়মিত ক্রোম ব্রাউজার থেকে দেখা হয় কিনা তা দেখতে চান।
ফরচুনসোলজিয়ার

@ আইলাইক টাকোস আমি জানি আপনার মন্তব্যটি চার বছরেরও বেশি পুরানো, তবে ক্রোম ইচ্ছাকৃতভাবে তাদের ছদ্মবেশী সনাক্তকরণটি ভেঙেছে, তাই আমি এখনও অনুভব করি যে আমি সেটিতে জিতেছি ..
পপি

@ পপি ভাল আচ্ছা কিন্তু আসলে কোন mishravikas.com/articles/2019-07/...
Cruncher
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.