所以我一直在工作最近在一个脚本来混淆客户代码,用于保护知识产权而不干扰外观的互动得到的页面。本过程如下:

  1. HTTP请求。要重定(.*) 要parse_request.php
  2. parse_request.php 创建一个"phpURLParser"类,其类变量是实质上的副本$_SERVER变量
  3. phpURLParser看起来在所请求的路径,以及有时的主机,引用程序或其他服务器侧信息,以确定如何作出反应。有几个可能的反应

a.所请求的对象。js。css文件。通过该文件的唯压缩机和发送出

b.请求对象的图像或应用程序。通过的文件没有改变

c.所请求的对象包含HTML。代替每ASCII character与其2位数相当于十六和发送以下javascript:

<script type="text/javascript">
var x="~lots of hex~";
var y="";
for(i=0; i<x.length; i+=2){
    y += unescape('%'+x.substr(i,2));
}
document.write(y);
</script>

因此该网站是替换由一个很大的hex和一个小型的javascript返回hex原为原有形态。我有这样的一个例子安装在examples.chikachu.com/colorbox/example1 (我没有代码颜色盒子,这是一个免费的jQuery的工具,我选择使用,因为它让我来测试几种不同的javascript功能,并确保他们的所有工作)

现在的问题:

事实证明,这一工作的99%的时间。但是,AJAX使得愤怒。点击一的阿贾克斯例(在"其他内容类型")看起来就像它的重定向到新网页。看着的地址栏或查看的网页源将证明,你还在同一页上,但是。采用的检查件工具,在铬(或萤火虫在火狐)将揭示的内容的网页已完全替换为内容的AJAX请求。

如果我修改parse_request.php 稍允许所请求的文件由阿贾克斯是通过一劫,一切工作。没有问题。因此,对于某些原因我的脚本,这将替换串的六角与其有意义HTML的对应方是复盖整个网站,而不是的很好插入本身的范围内 <div> 对象。

基本上这里的预期非模糊HTML:

<html>
<head>
    ...
</head>
<body>
    <div id="colorbox">
        <INSERT AJAX HERE>
    </div>
    ...
</body>
</html>

只有AJAX模糊,我期望下:

<html>
<head>
    ...
</head>
<body>
    <div id="colorbox">
        <script type="text/javascript">
        var x="asdfasdfasdfasdf";
        var y="";
        for(i=0; i<x.length; i+=2){
            y += unescape('%'+x.substr(i,2));
        }
        document.write(y);
        </script>
    </div>
    ...
</body>
</html>

我希望,该文件。write()线在这里会写y在的位置javascript(内 <div>).如果我错了,不是这样的文件。write()工作,我仍然期待它来写y结束时的文件。相反,整个文件取代。这是为什么,以及什么是我的解决方案吗?

有帮助吗?

解决方案

试试这样的事情:

<html> 
<head> 
    ... 
</head> 
<body> 
    <div id="colorbox">
        <div id="MYAJAXCONTENT">
        </div>
        <INSERT AJAX HERE> 
    </div> 
    ... 
</body> 
</html> 

<html> 
<head> 
    ... 
</head> 
<body> 
    <div id="colorbox"> 
        <script type="text/javascript"> 
        var x="asdfasdfasdfasdf"; 
        var y=""; 
        for(i=0; i<x.length; i+=2){ 
            y += unescape('%'+x.substr(i,2)); 
        } 
        document.getElementById('MYAJAXCONTENT').innerHTML = y; 
        // for the jQuery psychos out there
        // $('#MYAJAXCONTENT').html(y);
        </script> 
    </div> 
    ... 
</body> 
</html> 

其他提示

回答你的最后一个问题:叫

文件。写信('my_precious_html_code');

将附加或替代文本的页上取决于当时它被称为(之前或之后加载事件)。你不应该利用它 任何 脚本。了解更多关于它在这里: http://javascript.crockford.com/script.html

一般的回答:混淆HTML代码没有任何意义。就像保护图像通过禁止右键在后期90.我花了不到3秒的"裂缝"您混乱的代码,并得到精美的格式HTML。还有你的网站是呈现在 怪癖模式 这可能是有些东西你不想要。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top