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

当浏览器查看源代码时,有没有可能在网页的 html 中隐藏 Javascript 代码?

我知道这是可能的混淆代码,但我宁愿它是 藏起来了从视图源特性。

369024 次浏览

不,这不可能。

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

If you do, then it (or an easily followed reference to it) forms part of the source.

我不知道有没有办法隐藏这个信息。无论你做什么来混淆或隐藏你在 JavaScript 中做的事情,归根结底还是你的浏览器需要加载它才能使用它。现代浏览器开箱即用的 Web 调试/分析工具使得提取和查看脚本变得很简单(例如,在 Chrome 中只需点击 F12)。

如果您担心暴露某种商业秘密或算法,那么您唯一的办法就是将该逻辑封装在 Web 服务调用中,并让页面通过 AJAX 调用该功能。

I'm not sure anyone else actually addressed your question directly which is code being viewed from the browser's View Source command.

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

但是,如果你把你的 JavaScript 放在一个包含以下内容的外部 JavaScript 文件中:

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

标记,则使用 View Source 命令不会立即看到 JavaScript 代码-只有 script 标记本身可以通过这种方式看到。这并不意味着某人不能加载外部 JavaScript 文件来查看它,但是您确实询问了如何将它排除在浏览器的 View Source 命令之外,这就可以做到。

If you wanted to really make it more work to view the source, you would do all of the following:

  1. 把它放在一个外部的.js 文件中。
  2. 混淆文件,以便大多数本机变量名被替换为短版本,以便删除所有不需要的空格,所以它不能在没有进一步处理的情况下被读取,等等。.
  3. 动态包含。Js 文件,通过编程添加脚本标记(像 GoogleAnalytics 那样)。这将使得从查看源代码命令到达源代码变得更加困难,因为没有简单的链接可以点击那里。
  4. 在通过 AJAX 调用检索的服务器上放置尽可能多的您希望保护的有趣逻辑,而不是进行本地处理。

综上所述,我认为你应该把重点放在性能,可靠性和使你的应用程序伟大。如果你一定要保护某些算法,那就把它放到服务器上,但除此之外,要在你所做的事情上争取做到最好,而不是保守秘密。无论如何,这就是成功在网络上的最终运作方式。

不可能!

唯一的方法是混淆 javascript 或缩小你的 javascript,这使得最终用户很难进行反向工程。然而,逆向工程并非不可能。

我想我找到了在浏览器视图源代码中隐藏某些 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');}

Here's the trick.

在 content.php 文件中放入另一个 head 标记,然后从那里调用另一个 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>

in the js2.js file create any function you want.

例如:

Js2.js

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

content2.php

<?php
echo "Test 2";
?>

请点击链接,然后复制粘贴到 jquery.js 的文件名中

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

希望这个能帮上忙。

Use Html Encrypter The part of the Head which has

<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 加密程序 Note: if you have a java script in your page try to export to .js file and make it like as the example above.

此外,这个加密器并不总是在一些代码中工作,这将使你的网站混乱... 选择最好的部分,你想隐藏喜欢的例如在 <form> </form>

This can be reverse by advance user but not all noob like me knows it.

希望这个能帮上忙

不可能

哦,是的。

//------------------------------
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]);
}
}
}

我的解决方案灵感来自最后一条注释

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

看不见的初次亮相. 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!');});

Js 没有出现在控制台中,因为它已经被删除了,而且从来没有出现在源代码中,因为它是由 javascript 创建的。

关于看不见的处女秀。我把它混淆了,这意味着要找到 invisible.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>")
});

我几年前用过的方法

我们需要一个 jsp 文件、一个 servletjava 文件和一个过滤器 java 文件。

允许用户访问 jsp 文件。 用户类型 jsp 文件的 url。

Case 1 -

  • Jsp 文件将用户重定向到 Servlet。
  • Servlet 将执行嵌入在 xxxx.js 文件中的核心脚本部分 还有
  • 使用 printwitter,它将向用户呈现响应。

  • Meanwhile, Servlet will create a key file .

  • 当 servlet 尝试执行其中的 xxxx.js 文件时,过滤器
    将激活并检测密钥文件的存在,从而删除密钥
    文件

这样一个周期就结束了。

简而言之,密钥文件将由服务器创建,并将立即删除过滤器。

每次袭击都会发生这种事。

案例2-

  • 如果用户尝试获取页面源代码并直接单击 xxxxxxx.js 文件,Filter 将检测到密钥文件不存在。
  • It means the request has not come from any servlet. Hence , It will block the request chain .

可以在会话变量中使用设置值,而不是创建文件。

把你的 JavaScript 放到独立的.js 文件中,使用捆绑和缩小来掩盖代码。

Http://www.sitepoint.com/bundling-asp-net/

有可能,但还是可以看到的。

你可以自己制作这个工具:

const btn = document.querySelector('.btn');
btn.onclick = textRead;
const copy = document.querySelector('.copy');
copy.onclick = Copy;
const file = document.querySelector('.file');
file.type = 'file';
const pre = document.querySelector('.pre');


var pretxt = pre;


if (pre.innerHTML == "") {
copy.hidden = true;
}


function textRead() {
let file = document.querySelector('.file').files[0];
let read = new FileReader();
read.addEventListener('load', function(e) {
let data = e.target.result;
pre.textContent = data;
});
read.readAsDataURL(file);
copy.hidden = false;
}


function Copy() {
var text = pre;
var selection = window.getSelection();
var range = document.createRange();
range.selectNodeContents(text);
selection.addRange(range);
document.execCommand('copy');
selection.removeAllRanges();
}
<input class="file" />
<br>
<button class="btn">Read File</button>
<pre class="pre"></pre>
<button class="copy">Copy</button>

如何使用这个工具?

  1. 创建一个 JavaScript 文件。
  2. Go in the tool and choose your JavaScript file.
  3. 复制结果。
  4. 将结果粘贴到记事本中。
  5. 移除 data:text/javascript;base64,
  6. eval(atob('Notepad Text'))粘贴到代码中,并将 Notepad Text更改为记事本文本结果。

如何查看此隐藏代码?

  1. 复制隐藏代码并粘贴到记事本中。
  2. 在 eval 和 atob 之后复制一个字符串。
  3. 粘贴 data:text/javascript;base64,String并将 String更改为您复制的字符串。