如何在网页中隐藏 javascript 代码?

IT技术 javascript browser hide obfuscation
2021-01-19 17:12:07

当通过浏览器的“查看源代码”功能查看源代码时,是否可以从网页的 html 中隐藏 Javascript 代码?

我知道可以混淆代码,但我更希望它从查看源功能中隐藏起来

6个回答

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

正如其他人所说,没有办法保护打算在浏览器中运行的 javascript 免受确定的查看器的影响。如果浏览器可以运行它,那么任何有决心的人也可以查看/运行它。

但是,如果您将 javascript 放在包含以下内容的外部 javascript 文件中:

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

标签,那么 javascript 代码将不会立即通过查看源命令可见 - 只有脚本标签本身才会以这种方式可见。这并不意味着有人不能只加载该外部 javascript 文件来查看它,但您确实询问了如何将其排除在浏览器的“查看源代码”命令之外,而这会做到。

如果您想真正使查看源代码更加有效,您可以执行以下所有操作:

  1. 将其放在外部 .js 文件中。
  2. 混淆文件,以便将大多数本地变量名称替换为短版本,从而删除所有不需要的空格,因此如果不进一步处理就无法读取它,等等......
  3. 通过以编程方式添加脚本标签来动态包含 .js 文件(就像 Google Analytics 所做的那样)。这将使从查看源命令获取源代码变得更加困难,因为没有简单的链接可以点击那里。
  4. 将您想要保护的尽可能多的有趣逻辑放在您通过 ajax 调用而不是进行本地处理检索的服务器上。

尽管如此,我认为您应该专注于性能、可靠性和让您的应用程序出色。如果你绝对需要保护一些算法,把它放在服务器上,但除此之外,竞争是你最擅长的,而不是通过拥有秘密。无论如何,这就是成功在网络上的最终运作方式。

fetch("SCRIPT TO HIDE URL or DATAURL").then(function(t) { return t.text()||false; }).then(c=>self[atob("ZXZhbA")](c))
2021-03-15 17:12:07
直接解决问题的好方法。使用JavaScript生成<script>会保持它的查看源代码的更好(实况DOM下仍清晰可见) -也就是说,它不能仅仅是在源视图“右侧点击”。<script>一旦执行 JavaScript,就有可能删除所述元素,这使得获取原始代码变得稍微麻烦(但并非不可能)……当然,网络流量将很容易出现在 Firebug 或类似工具中 ;-)
2021-03-19 17:12:07
@falero80s - 尝试停止右键单击菜单,但不会停止查看页面源的所有其他方式。
2021-03-24 17:12:07
我想我们也可以添加 oncontextmenu = 'return false;' 在 html 标签内。
2021-04-05 17:12:07
@Quentin - 你的查看源 URL 很愚蠢 - 这不是这里被问到或提议的。任何人都可以查看代码。我和其他人一样说过。问题只是它有多容易,并且根据所问的具体问题,当有人查看源代码时它的可见性如何?我的建议使它从“查看源代码”中删除了一步——仅此而已,但这是一个有效的额外步骤。
2021-04-06 17:12:07

不,这不可能。

如果你不把它交给浏览器,那么浏览器就没有它。

如果你这样做了,那么它(或一个容易遵循的对它的引用)构成源的一部分。

我不确定这个答案是否真的回答了被问到的问题(即使它在 15 分钟内获得了 10 票)。他们询问如何将代码保留在浏览器的“查看源代码”命令之外。那是可能的。请看我下面的回答。他们没有询问如何防止代码被坚定的黑客查看。
2021-03-12 17:12:07
在我看来,问题没有被正确解释。创建 JS 文件很常见,用户在这里(我认为)想要的是如何在任何人选择“查看页面源代码”选项时隐藏任何 JS 变量值。从我这边+1。
2021-03-16 17:12:07
单击HTML 文档的“查看源代码”中的链接即可到达脚本的“查看源代码”,这并不需要太多的决定
2021-04-05 17:12:07
这个答案没有任何意义。最好在这里提出建议。使用外部文件的更好选择。
2021-04-09 17:12:07

我的解决方案的灵感来自最后一条评论。这是invisible.html的代码

<script src="http://code.jquery.com/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();});

请注意,最后我将删除创建的脚本。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 创建的。

关于invisible_debut.js,我进行了混淆处理,也就是说查找invisible.js的url非常复杂。不完美,但对于普通黑客来说已经够难了。

@Boyang,它只是没有出现在控制台中,但是如果我们知道路径,我们仍然可以找到它。
2021-03-11 17:12:07
不仅如此,它还会始终显示在大多数 DevTools 的 Network 选项卡中。同样,每个有自尊的黑客都可以使用 DevTools。
2021-03-18 17:12:07
奇怪的是,我完全按照步骤操作,并且能够invisible.js在来源中找到铬版 34.0.1847.131 米
2021-03-24 17:12:07

使用 Html Encrypter Head 的部分

<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 文件并使其像上面的示例一样。

而且这个加密器并不总是在一些代码中工作,这会使你的网站一团糟......选择你想隐藏的最好的部分,例如 <form> </form>

这可以由高级用户逆转,但并非所有像我这样的菜鸟都知道。

希望这会有所帮助

您提供的链接未打开,出现 404 代码错误。
2021-03-18 17:12:07
同样的方法是站点黑客将恶意代码注入网站的方式。一些更高级的安全网络爬虫工具会寻找这样的代码并将其从页面源中清除。
2021-03-26 17:12:07

'不可能!'

哦,是的,它是......

//------------------------------
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]);
    }
  }      
}
变量“head”在这里是多余的还是起到了一些重要的作用?
2021-03-14 17:12:07
这只会从源代码中隐藏它.. 一个匿名函数会做同样的事情: fetch("SCRIPT TO HIDE").then(function(t) { return t.text()||false; }).then(c= >self[atob("ZXZhbA")](c))
2021-03-29 17:12:07
它仅部分隐藏它......开发工具可以显示任何公开的函数(全局),它将显示为匿名函数,但开发工具会告诉您一切,包括从哪里加载
2021-03-30 17:12:07
很好的答案。它确实隐藏了 javascript 用法,但是,只有当您使用 Element Inspector/Developer Tools 时,您仍然可以通过查看源查看。(至少在铬上)
2021-04-04 17:12:07