Javascript - 链接伪装脚本需要修改

Javascript - Link Cloaking Script needs modifying

本文关键字:修改 脚本 伪装 链接 Javascript      更新时间:2023-09-26

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

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

我的问题是...如何修改此脚本以使其原始 URL(未超链接)仍可显示为原始 URL,但将我的附属扩展添加到目标? 更好的是,我需要这个脚本来超链接页面上的所有原始网址。 我需要它,以便如果我的页面上http://www.Google.com原始网址,脚本会将目标更改为 - http://adf.ly/xxxxxx/http://www.Google.com/ - 但查看器仍然只能看到http://www.Google.com

同样,此脚本已经可以很好地处理超链接,因为它只影响 URL,而不会影响链接文本。 我只需要它来掩盖/掩盖/超链接所有原始网址,以便观众仍然看到原始 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>

你可以通过以下方式做到这一点:

  1. 遍历文本节点(或您感兴趣的子集),查找包含 URL 正则表达式匹配项的文本节点。
  2. 为以下各项创建新节点:
    • 文本部分
    • 锚点/链接
  3. 将这些新节点插入到 DOM 中(删除/替换原始文本节点)

这将是一个独立于通过document.links的现有循环的循环。

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

下面的锚标记在href属性中显示"google.fr",但由于onclick,单击该链接将转到那里列出的站点。

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

您可以使用这样的东西来重定向页面上的链接。