Websiteanalyse verhindern, so nicht ;-)
Wenn man so wie ich sich gerne mal in fremden Code umsieht, stößt man manchmal auf Lustige versuche eine Analyse zu verhindern, hier ist ein aktuelles Beispiel aus dem Code einer Website
<script type="text/javascript">
var tryCount = 0;
var minimalUserResponseInMiliseconds = 200;
function check() {
console.clear();
before = new Date().getTime();
debugger ;after = new Date().getTime();
if (after - before > minimalUserResponseInMiliseconds) {
document.write(" Dont open Developer Tools. ");
self.location.replace(window.location.protocol + window.location.href.substring(window.location.protocol.length));
} else {
before = null;
after = null;
delete before;
delete after;
}
setTimeout(check, 100);
}
check();
window.onload = function() {
document.addEventListener("contextmenu", function(e) {
e.preventDefault();
}, false);
document.addEventListener("keydown", function(e) {
if (e.ctrlKey && e.shiftKey && e.keyCode == 73) {
disabledEvent(e);
}
if (e.ctrlKey && e.shiftKey && e.keyCode == 74) {
disabledEvent(e);
}
if (e.keyCode == 83 && (navigator.platform.match("Mac") ? e.metaKey : e.ctrlKey)) {
disabledEvent(e);
}
if (e.ctrlKey && e.keyCode == 85) {
disabledEvent(e);
}
if (event.keyCode == 123) {
disabledEvent(e);
}
}, false);
function disabledEvent(e) {
if (e.stopPropagation) {
e.stopPropagation();
} else if (window.event) {
window.event.cancelBubble = true;
}
e.preventDefault();
return false;
}
}
;
</script>
Zuerst was tut der Code
Die Funktion Check wird deklariert und aufgerufen, dieser soll feststellen ob man die Entwicklertools geöffnet hat, dies geschieht durch den Aufruf debugger;
es wird die Zeit gemessen und wenn die Entwicklertools geöffnet sind stoppt der Code an der Zeile wo durch der Ablauf deutlich länger als 200ms braucht und lädt dann die Seite neu
Die ganze untere Hälfte versucht zu verhindern das man die Entwicklertools über Tastenkombinationen (F12, STRG+SHIFT+I usw.) oder über das Kontextmenü öffnet, was natürlich nichts bringt, man kann nämlich die Entwicklertools auch anders öffnen, siehe Bild

Daran merkt an schon das das ein sinnloser Versuch ist, seinen Code zu schützen
Wie verhindere ich das die Seite neu lädt
Nun das ist easy, in JavaScript sind Funktionen auch nur Variablen und das machen wir uns mit einem einfachen zwei Zeiler den wir in die Console schreiben zu nutze
minimalUserResponseInMiliseconds = 20000000000;
check = function(){}
In der erste Zeile setzen wir die Zeit auf einen extrem hohen wert, in der zweiten überbügeln wir einfach die check Funktion durch eine die gar nichts tut, wie gesagt Funktionen sind auch nur Variablen 😉
Wie hätte man das besser schützen können
Nun wirkungsvoll kannst du Webseiten eigtl. nie schützen und das ist auch gut so, ich persönlich finde es großartig wenn ich sehen kann was da auf meinem PC passiert, aber es gibt Möglichkeiten eine Analyse zu erschweren
- Lagere einen Teil deines Codes in Web Assembly aus, WASM lässt sich zwar gut untersuchen benötigt aber mehr expertise
- Minifiziere deinen Code bzw. Obfuscate den Code
- Man könnte den Code von oben besser schreiben, wird aber auch nichts bringen
- Verlagere essentielle Funktionen auf die Serverseite
Abgesehen vom letzten Punkt hält das aber alles nur Amateure auf, die nach dem ersten Problem aufgeben
Ist das denn Legal?
Wie immer ich bin kein Anwalt aber das dies keinen wirksamen Schutz darstellt sollte man sofort erkennen außerdem stellt sich die Frage was damit erreicht werden soll, an sich also Legal aber je nachdem was du damit anschließend machst kann es sich um eine Teilhandlung einer illegalen Tat oder eine vorbereitungstat handeln
Außerdem könnte man sich auch den Quelltext herunterladen und in einem Texteditor öffnen und hätte somit extremste illegale Energie aufgewendet um diese Schutzmaßnahme zu umgehen 😉