使用PHP重命名JavaScript变量和函数
我已经搜索并找到了另一个非常接近的问题,但结果是YUI压缩机,我没有发现有用的 我使用php来混淆我的JavaScript代码,但这还不够。我需要一个php脚本,我可以运行,然后重命名所有函数和变量的随机名称(只有字母)和原因之前,我混淆 我见过一些,但它们要么是像Java这样的独立程序,要么是你需要付费的东西,我不能使用它们 有没有人知道一个类或代码段可以做到这一点使用PHP重命名JavaScript变量和函数,php,javascript,class,function,variables,Php,Javascript,Class,Function,Variables,我已经搜索并找到了另一个非常接近的问题,但结果是YUI压缩机,我没有发现有用的 我使用php来混淆我的JavaScript代码,但这还不够。我需要一个php脚本,我可以运行,然后重命名所有函数和变量的随机名称(只有字母)和原因之前,我混淆 我见过一些,但它们要么是像Java这样的独立程序,要么是你需要付费的东西,我不能使用它们 有没有人知道一个类或代码段可以做到这一点 如果YUI压缩器真的能做到这一点,有人能指出一些帮助,帮助我如何将其实现到php中吗?我不知道为什么要这样做,但这似乎是一项非常
如果YUI压缩器真的能做到这一点,有人能指出一些帮助,帮助我如何将其实现到php中吗?我不知道为什么要这样做,但这似乎是一项非常容易手动完成的任务 您只需编写一个生成随机字符串的函数,在PHP中为所有JavaScript函数定义变量,并为这些函数分配随机字符串。然后,当您打印出代码以替换实际的JavaScript方法时,只需替换它们即可。唯一需要注意的是,您需要再次检查随机字符串是否重复。如果你不能使用数字(根据你的问题),那么就使用字母,并在随机字符串的后面增加字母。所以在伪代码中
$var1 = generateRandomString(); //custom method to create random string and append unique letter at end to guarantee no duplicates.
$function1 = generateRandomString();
and in javascript...
//variable assignment
<?php echo "$var1='foo'"; ?>;
//function definition
function <?php echo "$function1" ; ?>( myArg ){
alert(myArg); //this will alert 'foo'
}
//calling the function
<?php echo "$function1($var1)" ; ?>
$var1=generateRandomString()//自定义方法创建随机字符串,并在末尾附加唯一的字母,以确保没有重复。
$function1=generateRandomString();
在javascript中。。。
//变量赋值
等等。在写了这个冗长的回复之后,我开始想知道为什么首先需要混淆javascript代码?Javascript代码本质上是公共的,任何查看您的页面的人都可以看到结果。如果您需要做一些秘密/专有的事情,可以研究AJAX之类的东西,或者通过回调服务器来进行处理,并让它为javascript输出结果。任何人都可以看到您在javascript中所做的任何处理。混淆只会使调试变得更困难,而且不能保证防止有人破解代码 通常使用javascript控制表示,将服务器调用的结果解析到文档中,并验证用户输入。任何你想做的事情,都可以在服务器端进行,这样他们就看不到正在进行的确切代码 如果你还想改名的话,我的回答如下: 我还没有花时间在谷歌上搜索YUI压缩器是什么,但是你所描述的内容听起来像是你需要解析任何javascript,然后重新命名函数和变量。我看到一些问题
- 如果/当您的javascript使用内置变量名,如
或document
,以及类似window
的wise内置函数时。那些你触摸不到的或者脚本不能做它本该做的事情.getElementById()
- javascript在浏览器的上下文中执行,可能使用来自其他javascript文件(例如HTML)的函数/变量
<script type="text/javascript" src="a.js"></script>
<script type="text/javascript" src="b.js"></script>
由于
包含在b.js
之后,a.js
可以引用并使用b.js
中的任何函数或变量,因此如果您对名称进行置乱,您必须确保在a.js
中所做的任何引用都被适当地更新为新名称b.js
- 根据您希望执行此重命名的频率,您可以在更容易破解代码和完全破坏浏览器缓存之间进行权衡
- 只需修改名称一次并保留结果-然后浏览器将正确缓存响应,您的站点应该运行得很好,但是由于名称在调用之间是一致的,因此有人更容易破解重命名。尽管对于这个解决方案,您不一定需要PHP,只需要使用任何语言或脚本并运行一次即可
- 修改每个会话的名称——这可能是最好的解决方案,但需要保留与每个会话相关的额外内存,以更改名称,以便对来自同一会话的新java脚本文件的任何请求进行重命名(大多数现代浏览器和服务器设置将允许缓存相同的命名javascript文件,如第2点所述,如果
中的任何函数/变量被另一个javascript文件使用,则必须相应地更新它们a.js
- 每个请求修改javascript文件-这可能需要您禁用javascript文件的缓存,因为即使用户重新加载同一页面,每个页面请求都需要下载新的javascript文件。这将大大降低页面加载性能(您必须再次重命名所有函数并生成一个新的javascript文件,然后由浏览器下载并解析该文件)并增加带宽消耗,但一个页面的两个脚本不会相同
总的来说,这看起来不像是你想承担的一个人(甚至2人或3人)的项目(除非你手头有很多时间,但事情会发生变化),可能已经有类似的东西出现了,或者你可以根据自己的需要进行修改。从本质上说,我认为你想要做的工作将超出其价值。通常,缩小javascript文件就足够了:实时或离线,这取决于这些文件的稳定性。但可能是这样的在这种情况下有一个特殊的要求。当然,你可能会问为什么:)天哪,我讨厌我不能按enter键换行…无论如何,我正在制作一个浏览器游戏,并试图用动态加载的javascript来集中游戏的大部分。我不能离线完成所有这些,因为javascript是由php文件打印的,所有这些都取决于很多设置