2014-06-12 38 views
0

我有一个内容可以“喜欢”的网站。没有使用任何API,这是一个自定义的按钮,只是增加了“喜欢”的统计数据以保持内容的安宁。搜索机器人按下我的按钮...?我可以预防吗?

现在,我有一个意见计数器,每个页面加载和一个像按钮。按下类似按钮后,该页面生命周期中的任何连续喜欢都会被禁用。

我遇到了一个问题,我的喜好超过了我的观点,理论上这是不应该发生的。自从我实现了一些java代码来去掉按钮(基本上隐藏了元素),并且我还为忽略java的机器人添加了一些服务器端代码。

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

当我快速点击按钮后退到最后时,我已经将其归结为最多两个或三个事件。只有在第二次/第三次运行后有足够的时间才能识别会话变量,并忽略事件代码。在我的会话变种技巧之前,您可以快速点击10次按钮,在页面最终返回并禁用按钮之前,它会递增10个喜欢。

所以,下降到2或3并不差,但我一直在获取更多的喜欢,而不是一些内容的观点。

  • 我的意见是计数罚款,我仔细检查。
  • 我的爱好绝对只是在几次不必要的事件触发后才捕获第一个禁用/会话触发器/事件...(快速点击)
  • 我怀疑它的搜索引擎可能跟随链接...?

补充信息:jQuery的按钮禁用:

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

任何想法?

+0

java或javascript? –

+0

嗨@IanP,感谢您的回复,回复:我原来的帖子:***我已经实现了一些java代码来去掉按钮(基本隐藏元素),并且我还为机器人添加了一些服务器端代码忽略java。***我认为bot会忽略客户端脚本。 –

+0

只是想澄清,你使用的是JavaScript而不是客户端Java? –

回答

2

当机器人发现一些URL的POST请求时,他们喜欢发送GET请求到那里偷窥。如果他们喜欢他们看到的内容,该链接可以被缓存,并且您可以不时获得该URL的其他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时,他都会开始一个新的会话。当他禁用cookies(有些用户正在这样做)时,它会为每次发起的请求创建新的会话。

+0

感谢您的回答Ondrej。我有一个“无声的”验证码控件,我已经为表单开发了......在一个基本的超时算法上工作..也许我应该实现...我可能会赌博一个机器人不会坐几秒钟.. 。 –

2

一件事尝试:

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

嗨吉姆,谢谢你的回答。我有一个“无声的”验证码控件,我已经为窗体开发了......在一个基本的超时算法上工作..也许我应该实现...我可能会赌博一个机器人不会坐几秒钟...... –

+0

谢谢吉姆。我现在接受Ondrej的回答,并附上验证码的想法..我认为这可能是要走的路... –

相关问题