如何隐藏网页中的JavaScript代码?

当通过浏览器查看源代码function查看源代码时,是否可以隐藏网页的HTML代码?

我知道有可能混淆代码,但我更喜欢它从视图源function隐藏

我不确定其他人是否真的直接从你的问题中解决了问题,即从浏览器的查看源代码命令查看代码。

正如其他人所说,没有办法保护JavaScript的意图在确定的查看器中运行在浏览器中。 如果浏览器可以运行它,那么任何确定的人都可以查看/运行它。

但是,如果您将您的JavaScript放入随附的外部JavaScript文件中:

<script type="text/javascript" src="http://mydomain.com/xxxx.js"></script>

标签,那么JavaScript代码将不会立即显示与查看源代码命令 – 只有脚本标签本身将可见的方式。 这并不意味着有人不能只加载外部的JavaScript文件来查看它,但你确实要求如何保持它在浏览器的查看源代码命令,这将做到这一点。

如果你想真正做更多的工作来查看来源,你会做以下所有:

  1. 把它放在一个外部的.js文件中。
  2. 混淆文件,以便大多数本地variables名称被replace为短版本,以便删除所有不需要的空白,所以它不能被读取没有进一步处理,等等…
  3. 通过以编程方式添加脚本标记(如Google Analytics(分析))来dynamic包括.js文件。 这将使得查看源代码命令中的源代码变得更加困难,因为在那里没有简单的链接可以点击。
  4. 把你想要通过ajax调用来检索的服务器上保护的有趣逻辑,而不是本地处理。

所有这一切,我认为你应该把重点放在性能,可靠性,使您的应用程序很好。 如果你绝对要保护一些algorithm,把它放在服务器上,但除此之外,你要做的最好,而不是有秘密。 无论如何,这就是networking成功的最终目标。

不,这是不可能的。

如果你不给它的浏览器,那么浏览器没有它。

如果你这样做,那么它(或者是一个容易被引用的参考)就构成了源代码的一部分。

使用Htmlencryption器头的部分有

 <link rel="stylesheet" href="styles/css.css" type="text/css" media="screen" /> <script type="text/javascript" src="script/js.js" language="javascript"></script> copy and paste it to HTML Encrypter and the Result will goes like this and paste it the location where you cut the above sample <Script Language='Javascript'> <!-- HTML Encryption provided by iWEBTOOL.com --> <!-- document.write(unescape('%3C%6C%69%6E%6B%20%72%65%6C%3D%22%73%74%79%6C%65%73%68%65%65%74%22%20%68%72%65%66%3D%22%73%74%79%6C%65%73%2F%63%73%73%2E%63%73%73%22%20%74%79%70%65%3D%22%74%65%78%74%2F%63%73%73%22%20%6D%65%64%69%61%3D%22%73%63%72%65%65%6E%22%20%2F%3E%0A%3C%73%63%72%69%70%74%20%74%79%70%65%3D%22%74%65%78%74%2F%6A%61%76%61%73%63%72%69%70%74%22%20%73%72%63%3D%22%73%63%72%69%70%74%2F%6A%73%2E%6A%73%22%20%6C%61%6E%67%75%61%67%65%3D%22%6A%61%76%61%73%63%72%69%70%74%22%3E%3C%2F%73%63%72%69%70%74%3E%0A')); //--> 

HTML ENCRYPTER注意:如果您的页面中有一个Java脚本,请尝试将其导出为.js文件,并使其与上面的示例类似。

而且这个encryption器并不总是工作在一些代码,这将使你的网站搞砸了…select你想隐藏的最好的部分,例如<form> </form>

这可以通过提前用户来反转,但不是像我这样知道的所有noob。

希望这会有所帮助

我的解决scheme是从最后的评论中得到启发 这是invisible.html的代码

 <script src="jquery-1.8.2.js"></script> <script type="text/javascript" src="invisible_debut.js" ></script> <body> </body> 

invisible_debut.js的明确代码是:

 $(document).ready(function () { var ga = document.createElement("script"); //ga is to remember Google Analytics ;-) ga.type = 'text/javascript'; ga.src = 'invisible.js'; ga.id = 'invisible'; document.body.appendChild(ga); $('#invisible').remove();}); 

注意最后我删除了创build的脚本。 invisible.js是:

 $(document).ready(function(){ alert('try to find in the source the js script which did this alert!'); document.write('It disappeared, my dear!');}); 

invisible.js不会出现在控制台中,因为它已被删除,从不在源代码中,因为由JavaScript创build。

关于invisible_debut.js,我把它混淆了,这意味着findinvisible.js的url是非常复杂的。 不是完美的,但对于一个普通的黑客来说足够困难。

'不可能!'

哦,是的,这是….

 //------------------------------ function unloadJS(scriptName) { var head = document.getElementsByTagName('head').item(0); var js = document.getElementById(scriptName); js.parentNode.removeChild(js); } //---------------------- function unloadAllJS() { var jsArray = new Array(); jsArray = document.getElementsByTagName('script'); for (i = 0; i < jsArray.length; i++){ if (jsArray[i].id){ unloadJS(jsArray[i].id) }else{ jsArray[i].parentNode.removeChild(jsArray[i]); } } } 

我不确定是否有办法隐藏这些信息。 无论你在JavaScript中做什么来混淆或隐藏你所做的事情,还是归结于你的浏览器需要加载它才能使用它。 现代浏览器提供了网页debugging/分析工具,使提取和查看脚本变得微不足道(例如,只需点击Chrome中的F12 )。

如果您担心公开某种商业秘密或algorithm,那么您唯一的办法是将该逻辑封装在Web服务调用中,让您的页面通过AJAX调用该function。

我想我find了一个解决scheme来隐藏浏览器的视图源中的某些JavaScript代码。 但是你必须使用jQuery来做到这一点。

例如:

在你的index.php

 <head> <script language = 'javascript' src = 'jquery.js'></script> <script language = 'javascript' src = 'js.js'></script> </head> <body> <a href = "javascript:void(null)" onclick = "loaddiv()">Click me.</a> <div id = "content"> </div> </body> 

你在js.js文件中的jquery函数调用的html / php主体中加载一个文件。

js.js

 function loaddiv() {$('#content').load('content.php');} 

这是诀窍。

在你的content.php文件中放入另一个头标签,然后从那里调用另一个js文件。

content.php

 <head> <script language = 'javascript' src = 'js2.js'></script> </head> <a href = "javascript:void(null)" onclick = "loaddiv2()">Click me too.</a> <div id = "content2"> </div> 

在js2.js文件中创build你想要的任何函数。

例:

js2.js

 function loaddiv2() {$('#content2').load('content2.php');} 

content2.php

 <?php echo "Test 2"; ?> 

请按照链接,然后复制粘贴到jquery.js的文件名

http://dl.dropbox.com/u/36557803/jquery.js

我希望这有帮助。

你可以使用document.write

没有jQuery

 <!DOCTYPE html> <html> <head><meta charset=utf-8></head> <body onload="document.write('<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>');"> </body></html> 

或者用jQuery

 $(function () { document.write("<!doctype html><html><head><meta charset=utf-8></head><body><p>You cannot find this in the page source. (Your page needs to be in this document.write argument.)</p></body></html>") }); 

不是possbile!

唯一的方法是混淆JavaScript或缩小您的JavaScript,这使最终用户难以逆向工程。 然而,逆向工程并非不可能。