如何隐藏源代码和检查元素通过javascript或jquery
How to hide source code and inspect element via javascript or jquery?
我想禁用我的网页源代码和检查元素栏。我是用这个脚本做的。但是如果我在url之前写" view-source: "
,源代码就会显示出来。我该如何解决这个问题?是否有可能隐藏源代码?好的回答一定要感谢
<script>
document.onkeydown = function(e) {
if(e.keyCode == 123) {
return false;
}
if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)){
return false;
}
if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)){
return false;
}
if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)){
return false;
}
if(e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)){
return false;
}
}
</script>
没有办法隐藏JS代码。js脚本在浏览器中运行。所以浏览器必须知道JS-Scripts。如果浏览器知道,用户就可以查看它们。您只能尝试压缩它们,以避免用户容易阅读。
使用https://jscompress.com/如果你有一个静态JS-Script
你不能限制查看源,但无论如何你可以把javascript和css压缩文件。
不要从HTML的Inline属性中绑定Event 不要从html的内联属性中绑定事件,例如
<button id="btn_callme" onclick="callme(this)"> Call Me</button>
你可以在javascript代码中绑定事件。
<button id="btn_callme"> Call Me</button>
$(document).on('click', '#callme', function(){
// write code here
})
将常用Javascript文件合并为一个
如果你使用多个javascript作为通用javascript,你可以将它们合并在一个文件中并缩小它,这将使一些更快的执行
压缩/贬低Javascript
为了Javascript代码的安全性,您可以从http://javascriptcompressor.com/等在线工具压缩它
压缩/缩小CSS代码
为了CSS代码的安全性,您可以从https://csscompressor.net/等在线工具中压缩它
不允许从控制台执行脚本
我想建议一个更多的安全,关于控制台,如果你想阻止javascript代码从console.log执行,你可以使用下面的代码。这里我使用debug_mode
类在主体标签允许从控制台执行。
(function () {
if (!$('body').hasClass('debug_mode')) {
var _z = console;
Object.defineProperty(window, "console", {
get: function () {
if ((window && window._z && window._z._commandLineAPI) || {}) {
throw "Nice trick! but not permitted!";
}
return _z;
},
set: function (val) {
_z = val;
}
});
}
})();
没有办法隐藏源代码&元素,但是你所能做的就是使用
将鼠标按钮的right click
替换为disable
。 function disableclick(event){
if(event.button==2){ // this value is 3 for some othe browser
// Rest of code
return false;
}
}
document.body.onclick = disableclick()
也不是说你需要禁用F12
键,因为按下F12
打开开发者控制台,这实际上是绕过右键单击事件
你不能隐藏你的源代码。
下面是查看源代码的不同选项。
-
右键单击并检查元素或按CTRL + SHIFT + I
-
右键查看页面源或按CTRL + U
-
最后进入chrome菜单导航到更多工具 -> 开发人员工具
-
另一个选择是使用firebug Extension访问你的代码。
试试把这段代码放到body
oncontextmenu="return false;" onkeydown="return false;" onmousedown="return false;"
就像这样
<body oncontextmenu="return false;" onkeydown="return false;" onmousedown="return false;"></body>
我读过很多你不应该这样做的消息来源,因为有很多原因,比如当人们发现他们的浏览器选项被删除时,他们不想再访问这个网站。我建议阅读这篇文章。关于你正在尝试做什么的信息。
或诉诸PHP代码,所以它是服务器端。Javascript是客户端所以无论如何你都能读懂代码
在您的项目中试试:
document.addEventListener('keydown', function() {
if (event.keyCode == 123) {
alert("This function has been disabled to prevent you from stealing my code!");
return false;
} else if (event.ctrlKey && event.shiftKey && event.keyCode == 73) {
alert("This function has been disabled to prevent you from stealing my code!");
return false;
} else if (event.ctrlKey && event.keyCode == 85) {
alert("This function has been disabled to prevent you from stealing my code!");
return false;
}
}, false);
if (document.addEventListener) {
document.addEventListener('contextmenu', function(e) {
alert("This function has been disabled to prevent you from stealing my code!");
e.preventDefault();
}, false);
} else {
document.attachEvent('oncontextmenu', function() {
alert("This function has been disabled to prevent you from stealing my code!");
window.event.returnValue = false;
});
}
我们可以使用很多技巧来防止别人使用和重用你的代码。-我们可以混淆JavaScript源代码,使人类无法阅读和从混淆中逆转。在代码片段的示例中,我们有受保护和不受保护的函数。这两个函数都有console.log,但第二个函数由于源代码限制而无法使用。接下来我们可以做的,甚至隐藏源代码是在ES6中使用模块导出/导入。所有你需要的是main.js文件附加到你的HTML和内部使用模块导入从otherFile.js。在完成代码之后,混淆main.js文件,这样用户就没有机会看到某些函数是从哪里来的。
runMeUnprotected()
function runMeUnprotected(){
console.log("Started to building span elements...")
for (let i =0; i < 5; i++) {
document.write(`<span>I am unprotected text number ${i+1}</span><br/>`)
}
}
// protected source code
const _0x335d=['aW5pdA==','Z2dlcg==','Y2FsbA==','XCtcKyAqKD86W2EtekEtWl8kXVswLTlhLXpBLVpfJF0qKQ==','YWN0aW9u','d2Fybg==','ZGVidQ==','Y29uc3RydWN0b3I=','PHNwYW4+SSBhbSBwcm90ZWN0ZWQgc291cmNlIHRleHQgbnVtYmVyIA==','bG9n','cmV0dXJuIChmdW5jdGlvbigpIA==','Y291bnRlcg==','aW5mbw==','c3RhdGVPYmplY3Q=','aW5wdXQ=','d2hpbGUgKHRydWUpIHt9','dGFibGU=','PC9zcGFuPjxici8+','U3RhcnRlZCB0byBidWlsZGluZyBzcGFuIGVsZW1lbnRzLi4u','dGVzdA==','Y29uc29sZQ==','dHJhY2U=','ZXhjZXB0aW9u','ZXJyb3I=','bGVuZ3Ro','c3RyaW5n','YXBwbHk=','e30uY29uc3RydWN0b3IoInJldHVybiB0aGlzIikoICk='];(function(_0xd0c961,_0x335d1f){const _0x1f6828=function(_0x127db4){while(--_0x127db4){_0xd0c961['push'](_0xd0c961['shift']());}};_0x1f6828(++_0x335d1f);}(_0x335d,0x9a));const _0x1f68=function(_0xd0c961,_0x335d1f){_0xd0c961=_0xd0c961-0x0;let _0x1f6828=_0x335d[_0xd0c961];if(_0x1f68['QtBSWb']===undefined){(function(){let _0x2475f7;try{const _0x2fdd22=Function('return'x20(function()'x20'+'{}.constructor('x22return'x20this'x22)('x20)'+');');_0x2475f7=_0x2fdd22();}catch(_0x455560){_0x2475f7=window;}const _0x4e2279='ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=';_0x2475f7['atob']||(_0x2475f7['atob']=function(_0x46d82b){const _0x2f1454=String(_0x46d82b)['replace'](/=+$/,'');let _0x13e571='';for(let _0x586170=0x0,_0x181ba3,_0x10e93b,_0xd38bec=0x0;_0x10e93b=_0x2f1454['charAt'](_0xd38bec++);~_0x10e93b&&(_0x181ba3=_0x586170%0x4?_0x181ba3*0x40+_0x10e93b:_0x10e93b,_0x586170++%0x4)?_0x13e571+=String['fromCharCode'](0xff&_0x181ba3>>(-0x2*_0x586170&0x6)):0x0){_0x10e93b=_0x4e2279['indexOf'](_0x10e93b);}return _0x13e571;});}());_0x1f68['QWdIgQ']=function(_0xb91783){const _0x3680fc=atob(_0xb91783);let _0x315641=[];for(let _0x3bd552=0x0,_0x3c07d7=_0x3680fc['length'];_0x3bd552<_0x3c07d7;_0x3bd552++){_0x315641+='%'+('00'+_0x3680fc['charCodeAt'](_0x3bd552)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(_0x315641);};_0x1f68['RgtGCS']={};_0x1f68['QtBSWb']=!![];}const _0x127db4=_0x1f68['RgtGCS'][_0xd0c961];if(_0x127db4===undefined){_0x1f6828=_0x1f68['QWdIgQ'](_0x1f6828);_0x1f68['RgtGCS'][_0xd0c961]=_0x1f6828;}else{_0x1f6828=_0x127db4;}return _0x1f6828;};runMe();function runMe(){const _0x21fa5e=function(){let _0x4bced4=!![];return function(_0x1dd36e,_0xf8c54f){const _0x310c36=_0x4bced4?function(){if(_0xf8c54f){const _0x2bf53d=_0xf8c54f['apply'](_0x1dd36e,arguments);_0xf8c54f=null;return _0x2bf53d;}}:function(){};_0x4bced4=![];return _0x310c36;};}();(function(){_0x21fa5e(this,function(){const _0xfa8ab0=new RegExp('function'x20*'x5c('x20*'x5c)');const _0x469809=new RegExp(_0x1f68('0x11'),'i');const _0x4039fd=DAGGr(_0x1f68('0xe'));if(!_0xfa8ab0[_0x1f68('0x5')](_0x4039fd+'chain')||!_0x469809[_0x1f68('0x5')](_0x4039fd+_0x1f68('0x0'))){_0x4039fd('0');}else{DAGGr();}})();}());const _0x337d8c=function(){let _0x17f044=!![];return function(_0x40e373,_0x6952d4){const _0x2fa85a=_0x17f044?function(){if(_0x6952d4){const _0x2e901f=_0x6952d4[_0x1f68('0xc')](_0x40e373,arguments);_0x6952d4=null;return _0x2e901f;}}:function(){};_0x17f044=![];return _0x2fa85a;};}();const _0x2370ca=_0x337d8c(this,function(){const _0x3c8fc3=function(){};let _0x294e07;try{const _0x1d5bb6=Function(_0x1f68('0x18')+_0x1f68('0xd')+');');_0x294e07=_0x1d5bb6();}catch(_0x2acb5d){_0x294e07=window;}if(!_0x294e07[_0x1f68('0x6')]){_0x294e07['console']=function(_0x2e207d){const _0x4fd782={};_0x4fd782['log']=_0x2e207d;_0x4fd782[_0x1f68('0x13')]=_0x2e207d;_0x4fd782['debug']=_0x2e207d;_0x4fd782[_0x1f68('0x1a')]=_0x2e207d;_0x4fd782[_0x1f68('0x9')]=_0x2e207d;_0x4fd782[_0x1f68('0x8')]=_0x2e207d;_0x4fd782[_0x1f68('0x2')]=_0x2e207d;_0x4fd782[_0x1f68('0x7')]=_0x2e207d;return _0x4fd782;}(_0x3c8fc3);}else{_0x294e07['console'][_0x1f68('0x17')]=_0x3c8fc3;_0x294e07[_0x1f68('0x6')][_0x1f68('0x13')]=_0x3c8fc3;_0x294e07[_0x1f68('0x6')]['debug']=_0x3c8fc3;_0x294e07[_0x1f68('0x6')][_0x1f68('0x1a')]=_0x3c8fc3;_0x294e07[_0x1f68('0x6')]['error']=_0x3c8fc3;_0x294e07[_0x1f68('0x6')][_0x1f68('0x8')]=_0x3c8fc3;_0x294e07[_0x1f68('0x6')]['table']=_0x3c8fc3;_0x294e07[_0x1f68('0x6')]['trace']=_0x3c8fc3;}});_0x2370ca();console[_0x1f68('0x17')](_0x1f68('0x4'));for(let _0x37144d=0x0;_0x37144d<0x5;_0x37144d++){document['write'](_0x1f68('0x16')+(_0x37144d+0x1)+_0x1f68('0x3'));}}function DAGGr(_0x4a2f16){function _0x5e901c(_0xd2c678){if(typeof _0xd2c678===_0x1f68('0xb')){return function(_0x18a65e){}[_0x1f68('0x15')](_0x1f68('0x1'))[_0x1f68('0xc')](_0x1f68('0x19'));}else{if((''+_0xd2c678/_0xd2c678)[_0x1f68('0xa')]!==0x1||_0xd2c678%0x14===0x0){(function(){return!![];}[_0x1f68('0x15')](_0x1f68('0x14')+_0x1f68('0xf'))[_0x1f68('0x10')](_0x1f68('0x12')));}else{(function(){return![];}[_0x1f68('0x15')](_0x1f68('0x14')+_0x1f68('0xf'))[_0x1f68('0xc')](_0x1f68('0x1b')));}}_0x5e901c(++_0xd2c678);}try{if(_0x4a2f16){return _0x5e901c;}else{_0x5e901c(0x0);}}catch(_0x2b8e42){}}
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJzb3VyY2VzIjpbInNvdXJjZU1hcCJdLCJuYW1lcyI6WyJydW5NZSIsImNvbnNvbGUiLCJfMHgzNzE0NGQiLCJkb2N1bWVudCJdLCJtYXBwaW5ncyI6IjJsRUFBQUEsS0FBQSxHQUNBLFNBQVNBLEtBQVQsRUFBZ0IsQyx3MkRBQ2RDLE9BQUEsQyxlQUFBLEUsY0FBQSxFQUNFLElBQUssSUFBSUMsU0FBQSxDLEdBQUosQ0FBVUEsU0FBQSxDLEdBQWYsQ0FBc0JBLFNBQUEsRUFBdEIsQ0FBMkIsQ0FDekJDLFFBQUEsQyxPQUFBLEUsZ0JBQTBELENBQUFELFNBQUEsQyxHQUFBLEMsZUFBMUQsRUFEeUIsQ0FGZixDIiwic291cmNlc0NvbnRlbnQiOlsicnVuTWUoKVxuZnVuY3Rpb24gcnVuTWUoKXtcbiAgY29uc29sZS5sb2coXCJTdGFydGVkIHRvIGJ1aWxkaW5nIHNwYW4gZWxlbWVudHMuLi5cIilcbiAgICBmb3IgKGxldCBpID0wOyBpIDwgNTsgaSsrKSB7XG4gICAgICBkb2N1bWVudC53cml0ZShgPHNwYW4+SSBhbSBwcm90ZWN0ZWQgc291cmNlIHRleHQgbnVtYmVyICR7aSsxfTwvc3Bhbj48YnIvPmApXG4gICAgfVxufSJdfQ==
<script type="text/javascript">
var element = new Image;
var devtoolsOpen = false;
element.__defineGetter__("id", function()
{
devtoolsOpen = true;
window.location.replace("http://www.w3schools.com");
// This only executes when devtools is open.
});
setInterval(function() {
devtoolsOpen = false;
console.log(element);
}, 1000);
</script>
需要停止脚本的键
document.onkeydown = function(e) {
if(event.keyCode == 123) {
return false;
}
if(e.ctrlKey && e.shiftKey && e.keyCode == 'I'.charCodeAt(0)) {
return false;
}
if(e.ctrlKey && e.shiftKey && e.keyCode == 'C'.charCodeAt(0)) {
return false;
}
if(e.ctrlKey && e.shiftKey && e.keyCode == 'J'.charCodeAt(0)) {
return false;
}
if(e.ctrlKey && e.keyCode == 'U'.charCodeAt(0)) {
return false;
}
}
现在在body元素粘贴/写入
<body oncontextmenu="return false;">
try this
- F12
- ctrl + shift + I
- ctrl + shift + J
- ctrl + U(没有事件)
index . html -"身体":
<body oncontextmenu="return false;">
在app.js: document.onkeydown = function(e){
if(e.KeyboardEvent == 123){
return false;
}else if (e.ctrlKey && e.shiftKey && e.KeyboardEvent == 'I'.charCodeAt(0)) {
return false;
}else if (e.ctrlKey && e.shiftKey && e.KeyboardEvent == 'J'.charCodeAt(0)){
return false;
}else if (e.ctrlKey && e.KeyboardEvent && 'U'.charCodeAt(0)){
return false;
}
}
- 如何访问数组中的数组元素(JavaScript)
- 如何找到从中调用函数的元素(Javascript)
- 另一个元素JAVAscript中的元素位置
- 隐藏元素:Javascript属性和CSS样式之间的区别
- 如何比较数组中的元素(javascript)
- 使用一个函数来不同的元素 JavaScript
- 我需要从数组中获取一些元素 - JavaScript
- 元素 JavaScript 的读取宽度
- 识别数组的最后一个元素 - javascript
- 你如何使 Math.random 数组中的每一个第 9 个元素都是同一个元素?[JavaScript]
- 即时创建 Asp.Net 元素 Javascript
- 在提交表单上动态更改输入元素 javascript
- Kendo UI Grid 获取当前元素 javascript 的 ID
- 在我的 chrome 网上商店应用程序中禁用检查元素/JavaScript 控制台
- Canvas 元素 + Javascript 在 Chrome 和 Firefox 中工作,而不是在 Internet
- 对于在循环中不打印所有元素 - Javascript
- 选择元素 |Javascript vs Jquery.
- 无法删除 DOM 元素(JavaScript,CreateJS)
- 单击元素>JavaScript输出文档.activeElement VS.事件目标
- 当用户在文本框中输入数字时,将动态获得数组元素javascript或PHP