通过使用Javascript反转来隐藏机器人的URL

时间:2014-09-24 14:49:56

标签: javascript jquery security url bots

A有一个链接:

<a href="http://domain.com/?=register">Register</a>

我想隐藏机器人的网址。我知道机器人通常没有启用Javascript,所以我在考虑这样的方法。在我的HTML代码中,我将URL反转:

<a href="retsiger=?/moc.niamod//:ptth">Register</a>

然后使用Javascript,我将其反转,以便用户看到正确的URL。我怎样才能做到这一点?可比性显然是必不可少的。

对于未启用JS的用户,我只是显示需要JS的消息。

4 个答案:

答案 0 :(得分:3)

你可以用这段脚本做你想要的......

$("a").each(function() {
    var href = $(this).attr("href");
    href = href.split("").reverse().join("");
    $(this).attr("href", href);
});

它将href值转换为一个数组,该数组可以通过Array.reverse()函数轻松反转,然后再次连接它以返回一个字符串。

显然将它放在文档就绪处理程序中,如您的示例所示。

这是一个jsfiddle示例......

http://jsfiddle.net/1u0wtv0f/


属性与属性

在这种情况下,重要的是我们使用href属性值,而不是href属性。这样做的原因是,如果获得href属性,则将其转换为绝对URL。在此示例的情况下,href值

retsiger=?/moc.niamod//:ptth\

会变成

http://domain.com/retsiger=?/moc.niamod//:ptth

通过使用属性值,我们使用创建链接时使用的值。

答案 1 :(得分:1)

好的,对不起,这不是一个疯狂的想法,但无论如何这种方式更好。

<script type="text/javascript">
$(document).ready(function() {
    $('a[data-href]').attr('href', $(this).attr('data-href'));
  });
});
</script>

以下列方式构建您的链接。

<a href="" rel="nofollow" data-href="http://domain.com/?=register">register</a>

一旦Dom准备就绪,将加载所有hrefs。所以在机器人的狩猎时间,href是空的。

<a href="" rel="nofollow" id="reg">register</a>

和jquery

<script type="text/javascript">
$(document).ready(function() {
    $('#reg').attr('href', 'http://domain.com/?=register');
  });
});
</script>

答案 2 :(得分:0)

如果机器人专门寻找&#34; href&#34;锚标记的一部分,然后你可以用不同的方式欺骗​​它们。此代码是一个HTML构造结构,当浏览器显示它时看起来像普通链接,并且像普通链接一样,但不是普通链接,因为它调用JavaScript函数来做链接通常做的事情。 :

<a onclick="linkfunc(1);"
 style="color:#0000ff;text-decoration:underline;cursor:pointer;">
 A Page Being Linked</a>

在您的JavaScript代码块中,您将完成剩下的工作:

function linkfunc(wch)
{ var h="http://", r="?=register";
  window.name="ThisPage";
  switch (wch)
  { case 1:
      window.open(h+"domain.com/"+r, "ThisPage");
      break;
    case 2:
      //window.open(whereever you want linkfunc(2) to go, "ThisPage");
      break;
  }
  return;
}      

答案 3 :(得分:0)

您也可以根本不将链接文本放在标记中并从Ajax加载它。此外,只有在特定用户事件发生且机器人不会触发时,您才能将其置于标记中。

如果你使用过这样的东西:

$(function () {
    $(document).on("mousemove", function (e, data) {
        //Make ajax call to get link
        var linkTarget = "http://www.test.com/register";
        $(".dyn-link").prop("href", linkTarget);
        $(".dyn-link").text("Register");
        console.log("fired");
      //Remove the event handler
        $(document).off("mousemove", null);
    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.0/jquery.min.js"></script>
<a class="dyn-link" href=""></a>