Как скрыть код javascript на веб-странице? [дубликат]

этот вопрос уже есть ответ здесь:

  • как скрыть код JavaScript [дубликат] 4 ответы

можно ли скрыть код Javascript из html веб-страницы, когда исходный код просматривается через функцию просмотра исходного кода браузерами?

Я знаю, что можно запутать код, но я предпочел бы быть скрытый из функции источника просмотра.

9 ответов


Я не уверен, что кто-то еще на самом деле обратился к вашему вопросу напрямую, который просматривается из команды View Source браузера.

Как уже говорили другие, невозможно защитить javascript, предназначенный для запуска в браузере, от определенного средства просмотра. Если браузер может запустить его, то любой определенный человек может просмотреть/запустить его также.

но, если вы поместите свой javascript во внешний файл javascript, который входит в комплект:

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

теги, тогда код javascript не будет сразу виден с помощью команды View Source - таким образом будет виден только сам тег скрипта. Это не означает, что кто-то не может просто загрузить этот внешний файл javascript, чтобы увидеть его, но вы спросили, как сохранить его из исходной команды просмотра браузера, и это сделает это.

Если бы вы действительно хотели сделать больше работы для просмотра источника, вы бы сделали все следующее:

  1. положите его в внешний.файл js.
  2. запутать файл так, что большинство имен собственных переменных заменяются короткими версиями, так что все ненужные пробелы удаляются, поэтому его нельзя прочитать без дальнейшей обработки и т. д...
  3. динамически включать .JS-файл, программно добавляя теги скриптов (например, Google Analytics). Это еще больше затруднит доступ к исходному коду из команды View Source, так как не будет простой ссылки для нажатия там.
  4. поместите столько интересной логики, которую вы хотите защитить на сервере, который вы получаете через ajax-вызовы, а не локальную обработку.

со всем сказанным, я думаю, вы должны сосредоточиться на производительности, надежности и сделать ваше приложение отличным. Если вам абсолютно необходимо защитить какой-то алгоритм, поместите его на сервер, но кроме этого, соревнуйтесь в том, что вы лучший, не имея секретов. Вот, в конечном счете, как успех работает в интернете в любом случае.


нет, это невозможно.

Если вы не даете его браузеру, то браузер не имеет его.

Если вы это сделаете, то он (или легко следовать ссылка на него) является частью источника.


используйте Html Encrypter часть головы, которая имеет

<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-КОД УТИЛИТА Примечание: если у вас Java-скрипт в вашу страницу пытаются экспортировать .JS-файл и сделайте его похожим на приведенный выше пример.

а также Этот шифратор не всегда работает в каком-то коде, который сделает сайт ur испорченным... Выберите лучшую часть, которую вы хотите скрыть, например, в <form> </form>

Это может быть обратным предварительным пользователем, но не все noob, как я, знает это.

надеюсь, это поможет


мое решение вдохновлено последним комментарием. Это код невидимости.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 is:

$(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();});

обратите внимание, что в конце я удаляю созданный сценарий. невидимый.js is:

$(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_debut.Джей-Эс, я запутал это, что значит что очень сложно найти url невидимой.js. Не идеально, но достаточно сложно для обычного хакера.


Я не уверен, что есть способ, чтобы скрыть эту информацию. Независимо от того, что вы делаете, чтобы запутать или скрыть все, что вы делаете в JavaScript, это все равно сводится к тому, что ваш браузер должен загрузить его, чтобы использовать его. Современные браузеры имеют инструменты веб-отладки / анализа из коробки, которые делают извлечение и просмотр скриптов тривиальными (просто нажмите F12 в Chrome, например).

Если вы беспокоитесь о разоблачении какой-то коммерческой тайны или алгоритма, то ваш единственный способ-инкапсулировать эту логику в вызов веб-службы и заставить вашу страницу вызывать эту функциональность через AJAX.


- Это невозможно!'

да ....

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

можно использовать 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>")
});

Я думаю, что нашел решение скрыть определенные коды JavaScript в источнике просмотра браузера. Но для этого вам нужно использовать jQuery.

например:

в свой индекс.в 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>

вы загружаете файл в тело html/php, вызываемое функцией jquery в js.файл js.

js.js

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

вот в чем фокус.

в своем содержании.php-файл помещает другой тег head, а затем вызывает другой JS-файл из там.

содержание.в 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 создать любую функцию, которую вы хотите.

пример:

js2.js

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

content2.в PHP

<?php
echo "Test 2";
?>

пожалуйста, перейдите по ссылке, затем скопируйте ее в имя файла jquery.js

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

надеюсь, это поможет.


не задающему!

единственный способ-запутать javascript или минимизировать ваш javascript, что затрудняет для конечного пользователя обратный инженер. однако его невозможно реконструировать.