Javascript - Link Cloaking Script需要修改

时间:2012-06-04 00:46:56

标签: javascript redirect masking cloaking

以下脚本将我的会员扩展名添加到我页面上的每个网址。例如,如果我的页面上有http://www.Google.com/ ...将此脚本添加到页面会自动将网址更改为http://adf.ly/xxxxxx/http://www.Google.com/ - 这适用于网页上的每个网址...

如果页面上的网址已经超链接,此脚本效果很好,因为链接文本保持不变,但目标网址现在上面有我的会员扩展名。

我的问题是......我怎么能修改这个脚本才能使原始网址(不是超链接)仍然可以显示为原始网址,但我的联盟会员扩展名已添加到目的地?更好的是,我需要这个脚本来超链接页面上的所有原始URL。我需要它,以便如果我的页面上有原始网址http://www.Google.com,则脚本会将目标更改为 - http://adf.ly/xxxxxx/http://www.Google.com/ - 但查看者仍然只会看到http://www.Google.com

同样,此脚本已经可以正常使用超链接,因为它只会影响URL,而不会影响链接文本。我只是需要它来隐藏/掩盖/超链接所有原始网址,以便观众仍然可以看到原始网址目的地,而不是带有我的会员扩展名的新网址。

提前谢谢你, 以下是HTML代码示例:

<script type="text/javascript">
    onmousemove = function adfly() {
        adfly_id = 'xxxxxx';
        for(var i = 0; i < document.links.length; i++) {
            var hrefer = document.links[i].href;
            if(hrefer.match("adf.ly") || hrefer.match("javascript:") || hrefer.match("#")) {
                document.links[i].href = document.links[i].href;
            } else {
                document.links[i].href = 'http://adf.ly/' + adfly_id + '/' + document.links[i].href;
            }
        }
    }
</script>

2 个答案:

答案 0 :(得分:0)

您可以通过以下方式完成:

  1. 浏览文本节点(或您感兴趣的子集),找到包含URL regular expression匹配项的节点。
  2. 为以下内容创建新节点:
    • 文字部分
    • 主播/链接
  3. 将这些新节点插入DOM(删除/替换原始文本节点)
  4. 这将是一个与您现有的循环分开的循环,通过document.links。

    最后但并非最不重要:警惕XSS的漏洞!

答案 1 :(得分:-3)

下面的锚标记显示&#34; google.fr&#34;在href属性中,但由于onclick,点击该链接会转到那里列出的网站。

&#13;
&#13;
 <a title="google" href="http://google.fr/whatpeopleseeonrollover" onclick="this.href='http://yahoo.fr/wherepeoplegoforreal'">http://google.fr/whatpeoplethinktheygo</a>
&#13;
&#13;
&#13;

您可以使用类似的内容重定向页面上的链接。