搜索机器人按下我的按钮......?我能预防吗?

时间:2014-06-12 10:53:20

标签: asp.net search web robots.txt search-engine-bots

我的网站内容可以"喜欢"。没有使用任何api,它是一个自定义的按钮,只需增加"喜欢"内容和平的统计数据。

现在,我在每个页面加载时都有一个视图计数器,以及一个类似的按钮。按下“赞”按钮后,对于该页面生命周期的任何连续喜欢,它将被禁用。

我遇到了一个问题,我的观点不仅仅是我的观点......理论上不应该发生这种观点。我已经实现了一些java代码来解除按钮的连接(基本上隐藏元素),我还为忽略java的机器人添加了一些服务器端代码。

按下Ons服务器端按钮,我设置一个会话变量,如果为该页面实例设置了该会话变量,则退出所有引发的连续事件。

当我快速点击按钮后退时,我已经把它归结为最多两次或三次被触发的事件。只有在第2次/第3次运行后才有足够的时间来识别会话变量,并且忽略事件代码。在我的会话var技巧之前,您可以快速单击该按钮10次,并且在页面最终回发并禁用按钮之前会增加10个喜欢。

所以,低至2或3并不是坏事,但我对某些内容的看法不断增加。

  • 我的意见很好,我仔细检查过。
  • 我的喜欢肯定只会在发生几次不需要的事件后触发第一次禁用/会话var触发/事件...(快速点击)
  • 我怀疑其搜索引擎可能会关注链接......?

补充信息:jquery按钮禁用:

<script type ="text/javascript">
    function pageLoad() {
        $('#<%=vidUpB.ClientID%>').click(function () {
            $(this).css("display","none")
        });
    }
</script>

有什么想法吗?

2 个答案:

答案 0 :(得分:2)

要尝试的事情:

  1. 默认情况下禁用HTML按钮。如果他们只是抓取HTML,这将阻止任何机器人按下它。这样,如果他们没有解释Javascript,他们就无法按下按钮。
  2. 在您的Javascript页面加载处理中,启用按钮。
  3. 按下按钮时,让Javascript立即(本地)禁用它。这应该可以防止或至少减少连续多次点击它的可能性。
  4. 继续使用您的服务器代码来过滤掉通过其他方式获得的无关按钮。

答案 1 :(得分:2)

当机器人向某个网址发现POST请求时,他们喜欢在那里发送GET请求来查看。如果他们喜欢他们看到的内容,则可以缓存链接,并且您可以不时获得该网址的其他GET请求。令人讨厌的机器人不遵循robots.txt,只有这样处理它们的方法是在他们的方式中放置一些不显眼的验证码 - 就像要求请求POST请求并检查隐藏的输入字段是否为空。

<asp:TextBox ID="txtKeepEmpty" runat="server" style="display:none" />
<asp:Button runat="server" OnClick="btnLike_Click" Text="Like" />

protected void btnLike_Click(object sender, EventArgs e) {
  if (IsPostBack && 
    Request.HttpMethod == "POST" && 
    string.IsNullOrEmpty(txtKeepEmpty.Text)) {
    // update
  }
}

会话存储也基于会话密钥 - 这是一个cookie。每次用户删除会话cookie时,他都会启动一个新会话。当他一直禁用cookie时(有些用户正在这样做),它将为他发起的每个请求创建新的会话。