簡體   English   中英

如何通過 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。 如果瀏覽器知道,用戶可以查看它們。 您只能嘗試壓縮它們,以避免用戶閱讀。

如果您有靜態 JS 腳本,請使用https://jscompress.com/

您不能限制查看源代碼,但可以通過任何方式放置 javscript 和 css 壓縮文件。

不要從 HTML 的內聯屬性綁定事件 不要從 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/等在線工具對其進行壓縮

不允許從控制台執行腳本

我想建議一種關於控制台的安全性,如果你想防止從 console.log 執行 JavaScript 代碼,你可以使用下面的代碼。 在這里,我在 body 標記中使用了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;
            }
        });
    }
})();

沒有辦法隱藏源代碼和檢查元素,但你所能做的就是disable鼠標right click使用

    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 訪問您的代碼。

我已經閱讀了多個來源,您不應該出於很多原因,例如讓人們在發現他們的瀏覽器選項被刪除時不想重新訪問該網站。 我建議閱讀這篇文章。 有關您正在嘗試做什么的信息。

或者求助於php代碼,所以它是服務器端的。 javascript 是客戶端,因此無論您是否能夠閱讀代碼。

試試這個代碼把代碼放在body

oncontextmenu="return false;" onkeydown="return false;" onmousedown="return false;"

而且會是這樣

<body oncontextmenu="return false;" onkeydown="return false;" onmousedown="return false;"></body>

在你的項目中試試這個:

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 中使用模塊導出/導入。 您需要的一切都是附加到 HTML 的 main.js 文件,並且在其中使用從 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,+SSBhbSBwcm90ZWN0ZWQgc291cmNlIHRleHQgbnVtYmVyICR7aSsxfTwvc3Bhbj48YnIvPmApXG4gICAgfVxufSJdfQ==

需要停止腳本的鍵

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 oncontextmenu="return false;">
    <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>

嘗試這個

  • F12
  • ctrl + shift + 我
  • ctrl + shift + J
  • ctrl + U(無事件)

在 index.html-'body' 中:

  <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;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM