【问题标题】:Search robots pressing my button...? Can I prevent that?搜索机器人按下我的按钮...?我可以防止吗?
【发布时间】:2014-06-12 10:53:20
【问题描述】:

我有一个内容可以被“点赞”的网站。不为此使用任何 api,它是一个自定义的点赞按钮,只是增加内容的“点赞”统计信息。

现在,我在每个页面加载时都有一个查看次数计数器和一个点赞按钮。按下点赞按钮后,该页面生命周期内的任何连续点赞都会被禁用。

我遇到了一个问题,我的喜好多于我的观点。这在理论上不应该发生。我已经实现了一些 java 代码来取消按钮的连接(基本上隐藏元素),并且我还为忽略 java 的机器人添加了一些服务器端代码。

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

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

所以,减少到 2 或 3 也不错,但我在某些内容上获得的点赞数比观看次数多。

  • 我的浏览量很好,我仔细检查了。
  • 我的喜欢肯定只会在几次不需要的事件触发后捕获第一个禁用/会话 var 触发器/事件...(快速点击)
  • 我怀疑它的搜索引擎可能会跟踪链接...?

补充信息:jquery 按钮禁用:

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

有什么想法吗?

【问题讨论】:

  • 嗨@IanP,感谢您的回复,回复:我的原始帖子:我已经实现了一些java代码来断开按钮(基本上隐藏元素),并且我还为忽略 java 的机器人添加了一些服务器端代码。我认为机器人会/可能会忽略客户端脚本。
  • 只是想澄清一下您使用的是javascript而不是客户端java?
  • 哦,是的,对不起,使用 javascript,jquery 更准确。我添加了适用的 jquery 代码。

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


【解决方案1】:

当机器人发现某个 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 时,他都会开始一个新会话。当他永久禁用 cookie(一些用户正在这样做)时,它将为他触发的每个请求创建新会话。

【讨论】:

  • 感谢 Ondrej 的回答。我有一个我为表单开发的“静默”验证码控件......适用于基本的超时算法......也许我应该实现它......我可能会赌一个机器人不会坐好几秒钟...... .
【解决方案2】:

尝试一下:

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

【讨论】:

  • 嗨,吉姆,感谢您的回答。我有一个为表单开发的“静默”验证码控件......适用于基本的超时算法......也许我应该实现它......我可能会赌机器人不会坐几秒钟......
  • 谢谢吉姆。我现在接受 Ondrej 的回答,带有验证码的想法。我认为这可能是要走的路......
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-02-07
  • 2011-01-30
  • 1970-01-01
  • 1970-01-01
  • 2021-11-03
  • 1970-01-01
相关资源
最近更新 更多