2017-04-01 3 views
0

Bevor jemand von Ihnen anfängt zu sagen, dass es unmöglich ist, navigieren Sie bitte zu facebook.com Öffnen Sie die Devtools, auch im nicht angeschlossenen Modus, und es wird Ihnen sagen, dass Dev-Tools geöffnet ist, richtig?Javascript + Browser - Wie erkennt man, wenn dev tools/firebug geöffnet ist?

Also, wie kann Facebook das abziehen?

Ich bin in der Lage es für angebracht Fenster

window.outerHeight - window.innerHeight > 200 || window.outerWidth - window.innerWidth > 200 

Aber das zu tun, wenn das Fenster nach oben ausgeklappt ist, das funktioniert nicht.

Wie kann Facebook das schaffen?

+3

Meine Vermutung sie im Voraus warnen setzen, dass die Konsole. Sie sehen es nur nicht, bis Sie die Dev-Tools öffnen. Ich bin mir nicht sicher, ob ich verstehe, warum du wissen musst, ob das Devtool geöffnet ist. – elpddev

+1

@elpddev, Sie hatten Recht, es ist nur 'console.log' mit einigen ausgefallenen Formatierungen. Sehen Sie meine Antwort, wenn Sie den Code sehen möchten, den sie verwenden. –

Antwort

1

Wie @elpddev in den Kommentaren spekuliert, werden sie nur console.log Verwendung zu protokollieren, wenn die Seite geladen wird, werden sie Erkennung nicht, dass Sie die Konsole geöffnet haben.

Wenn Sie den JS-Code auf der Seite prüfen, sollten Sie diese finden:

var j = i.stop || h._("Stop!") 
    , k = i.text || h._("This is a browser feature intended for developers. If someone told you to copy-paste something here to enable a Facebook feature or \"hack\" someone's account, it is a scam and will give them access to your Facebook account.") 
    , l = i.more || h._("See {url} for more information.", [h.param('url', 'https://www.facebook.com/selfxss')]); 
if ((window.chrome || window.safari) && !i.textonly) { 
    var m = 'font-family:helvetica; font-size:20px; '; 
    [[j, i.c1 || m + 'font-size:50px; font-weight:bold; ' + 'color:red; -webkit-text-stroke:1px black;'], [k, i.c2 || m], [l, i.c3 || m], ['', '']].map(function(s) { 
     setTimeout(console.log.bind(console, '\n%c' + s[0], s[1])); 
    }); 
} else { 
    var n = ['', ' .d8888b. 888      888', 'd88P Y88b 888      888', 'Y88b.  888      888', ' "Y888b. 888888 .d88b. 88888b. 888', ' "Y88b. 888 d88""88b 888 "88b 888', '  "888 888 888 888 888 888 Y8P', 'Y88b d88P Y88b. Y88..88P 888 d88P', ' "Y8888P" "Y888 "Y88P" 88888P" 888', '       888', '       888', '       888'] 
     , o = ('' + k).match(/.{35}.+?\s+|.+$/g) 
     , p = Math.floor(Math.max(0, (n.length - o.length)/2)); 
    for (var q = 0; q < n.length || q < o.length; q++) { 
     var r = n[q]; 
     n[q] = r + new Array(45 - r.length).join(' ') + (o[q - p] || ''); 
    } 
    console.log('\n\n\n' + n.join('\n') + '\n\n' + l + '\n'); 
    return; 
} 

Es ist ein wenig schwer zu lesen, da sie minimiert, auch mit hübschem Druck. Der Typ j = i.stop || h._("Stop!") scheint zu versuchen, lokalisierten Text zu laden, der auf Englisch zurückfällt. Es wird dann getestet, ob sie den Browser als Chrome oder Safari erkannt haben und i.textonly nicht eingestellt ist, wenn es so aussieht, als ob es mit dem ausgefallenen Styling angezeigt wird, wenn Sie es in Chrome/Safari ansehen. Die else Klausel ist schwieriger zu folgen, aber es scheint, die ASCII-Grafik-Banner Sie im Textmodus oder Nicht-Chrome/Safari-Browser erhalten zu erstellen:

.d8888b. 888      888  
d88P Y88b 888      888  
Y88b.  888      888 This is a browser feature intended for 
"Y888b. 888888 .d88b. 88888b. 888 developers. If someone told you to copy-paste 
    "Y88b. 888 d88""88b 888 "88b 888 something here to enable a Facebook feature 
     "888 888 888 888 888 888 Y8P or "hack" someone's account, it is a 
Y88b d88P Y88b. Y88..88P 888 d88P   scam and will give them access to your 
"Y8888P" "Y888 "Y88P" 88888P" 888 Facebook account. 
          888    
          888    
          888    

See https://www.facebook.com/selfxss for more information. 
1

Ich denke, was Facebook getan hat, ist nur die Warnung in der Konsole protokolliert. Unten ist der Code, der für mich in Chrome funktioniert hat. I 3 Arten deaktiviert Ich weiß Developer Tool in Chrome zu starten:

  1. Rechtsklick und wählen Sie Option Kontrollieren: Dazu habe ich rechts
  2. F12 Taste Drücken deaktiviert Klicken Sie auf: blockierter dieses Standardverhalten
  3. Ctrl Veranstaltung + Shift + I: alles blockiert Ctrl Standardverhalten

Sehen Sie, wenn Sie sich das leisten können.

document.onkeydown = function(event) {  
    if(event.code == "F12" || event.ctrlKey) { 
     event.preventDefault(); 
    } 
} 
document.addEventListener('contextmenu', event => event.preventDefault()); 
Verwandte Themen