Thực tế chưa có một biện pháp triệt để nào chống xem mã nguồn trang web hay chống coppy vì đó là tính năng dành cho các nhà lập trình. Tuy nhiên ta có thể hạn chế việc xem mã nguồn bằng việc sử dụng javascript.
Thủ thuật này khá đơn giản bạn chỉ cần chèn 1 đoạn js vào trước thẻ đóng </body>
<script type='text/javascript'>//<![CDATA[shortcut = {all_shortcuts: {},add: function(a, b, c) {var d = {type: "keydown",propagate: !1,disable_in_input: !1,target: document,keycode: !1};if (c)for (var e in d) "undefined" == typeof c[e] && (c[e] = d[e]);else c = d;d = c.target, "string" == typeof c.target && (d = document.getElementById(c.target)), a = a.toLowerCase(), e = function(d) {d = d || window.event;if (c.disable_in_input) {var e;d.target ? e = d.target : d.srcElement && (e = d.srcElement), 3 == e.nodeType && (e = e.parentNode);if ("INPUT" == e.tagName || "TEXTAREA" == e.tagName) return}d.keyCode ? code = d.keyCode : d.which && (code = d.which), e = String.fromCharCode(code).toLowerCase(), 188 == code && (e = ","), 190 == code && (e = ".");var f = a.split("+"),g = 0,h = {"`": "~",1: "!",2: "@",3: "#",4: "$",5: "%",6: "^",7: "&",8: "*",9: "(",0: ")","-": "_","=": "+",";": ":","'": '"',",": "<",".": ">","/": "?","\\": "|"},i = {esc: 27,escape: 27,tab: 9,space: 32,"return": 13,enter: 13,backspace: 8,scrolllock: 145,scroll_lock: 145,scroll: 145,capslock: 20,caps_lock: 20,caps: 20,numlock: 144,num_lock: 144,num: 144,pause: 19,"break": 19,insert: 45,home: 36,"delete": 46,end: 35,pageup: 33,page_up: 33,pu: 33,pagedown: 34,page_down: 34,pd: 34,left: 37,up: 38,right: 39,down: 40,f1: 112,f2: 113,f3: 114,f4: 115,f5: 116,f6: 117,f7: 118,f8: 119,f9: 120,f10: 121,f11: 122,f12: 123},j = !1,l = !1,m = !1,n = !1,o = !1,p = !1,q = !1,r = !1;d.ctrlKey && (n = !0), d.shiftKey && (l = !0), d.altKey && (p = !0), d.metaKey && (r = !0);for (var s = 0; k = f[s], s < f.length; s++) "ctrl" == k || "control" == k ? (g++, m = !0) : "shift" == k ? (g++, j = !0) : "alt" == k ? (g++, o = !0) : "meta" == k ? (g++, q = !0) : 1 < k.length ? i[k] == code && g++ : c.keycode ? c.keycode == code && g++ : e == k ? g++ : h[e] && d.shiftKey && (e = h[e], e == k && g++);if (g == f.length && n == m && l == j && p == o && r == q && (b(d), !c.propagate)) return d.cancelBubble = !0, d.returnValue = !1, d.stopPropagation && (d.stopPropagation(), d.preventDefault()), !1}, this.all_shortcuts[a] = {callback: e,target: d,event: c.type}, d.addEventListener ? d.addEventListener(c.type, e, !1) : d.attachEvent ? d.attachEvent("on" + c.type, e) : d["on" + c.type] = e},remove: function(a) {var a = a.toLowerCase(),b = this.all_shortcuts[a];delete this.all_shortcuts[a];if (b) {var a = b.event,c = b.target,b = b.callback;c.detachEvent ? c.detachEvent("on" + a, b) : c.removeEventListener ? c.removeEventListener(a, b, !1) : c["on" + a] = !1}}}, shortcut.add("Ctrl+U", function() {top.location.href = "xxx"}), shortcut.add("F12", function() {top.location.href = "xxx"}), shortcut.add("Ctrl+Shift+I", function() {top.location.href = "xxx"}), shortcut.add("Ctrl+S", function() {top.location.href = "xxx"}), shortcut.add("Ctrl+Shift+C", function() {top.location.href = "xxx"});var message = "NoRightClicking";function defeatIE() {if (document.all) {(message);return false;}}function defeatNS(e) {if (document.layers || (document.getElementById && !document.all)) {if (e.which == 2 || e.which == 3) {(message);return false;}}}if (document.layers) {document.captureEvents(Event.MOUSEDOWN);document.onmousedown = defeatNS;} else {document.onmouseup = defeatNS;document.oncontextmenu = defeatIE;}document.oncontextmenu = new Function("return false")//]]></script>
Chức năng của đoạn code này bao gồm
- Chống chuột phải
- Chuyển hướng khi phát hiện người dùng dùng phím tắt
Trong đó bạn cần thay xxx thành link chuyển hướng theo ý thích, bạn cũng có thể thêm không giới hạn các shortcut bằng cách nối tiếp vào code như trên.
Bên cạnh đó bạn cũng có thể dùng setInterval làm cản trở quá trình debug bằng cách thêm code sau:
<script type='text/javascript'>//<![CDATA[setInterval(function() {debugger;}, 1);//]]></script>
* Bonus : Ngoài ra bạn cũng có thể dùng 1 số thủ thuật sau để chống copy bài viết và chặn các phím tắt đơn giản bằng jquery và css
Code chống chuột trái
<style type='text/css'>body{-webkit-touch-callout: none;-webkit-user-select: none;-moz-user-select: none;-ms-user-select: none;-o-user-select: none;user-select: none;}</style>
Code chống chuột phải
<script type='text/javascript'>//<![CDATA[// JavaScript Documentvar message="NoRightClicking"; function defeatIE() {if (document.all) {(message);return false;}} function defeatNS(e) {if (document.layers||(document.getElementById&&!document.all)) { if (e.which==2||e.which==3) {(message);return false;}}} if (document.layers) {document.captureEvents(Event.MOUSEDOWN);document.onmousedown=defeatNS;} else{document.onmouseup=defeatNS;document.oncontextmenu=defeatIE;} document.oncontextmenu=new Function("return false")//]]></script>
Code chống Ctrl + U, chống viewsourse, chống F12
Các bạn coppy code phía dưới dán vào trên thẻ đóng </head><script src='http://ajax.googleapis.com/ajax/libs/jquery/1.5/jquery.min.js'/><script type='text/javascript'>checkCtrl=false $('*').keydown(function(e){if(e.keyCode=='17'){ checkCtrl=false } }).keyup(function(ev){if(ev.keyCode=='17'){ checkCtrl=false } }).keydown(function(event){if(checkCtrl){if(event.keyCode=='85'){ return false; } } })</script>
Chống click chuột vào hình ảnh
Các bạn coppy code phía dưới dán vào trên thẻ đóng </body><script type='text/javascript'>$('body').on('contextmenu', 'img', function(e){ return false; });</script>
Chặn phím tắt nhưng không chuyển hướng
<script type='text/javascript'>//<![CDATA[checkCtrl = false;$('*').keydown(function(e) {if (e.keyCode == '17') {checkCtrl = false}}).keyup(function(ev) {if (ev.keyCode == '17') {checkCtrl = false}}).keydown(function(event) {if (checkCtrl) {if (event.keyCode == '85') {return false;}}})//]]></script>
Cuối cùng thêm thuộc tính onkeydown="return false" cho body, ví dụ <body onkeydown="return false" ... >
Chúc bạn thành công !