代码之家  ›  专栏  ›  技术社区  ›  n1nsa1d00

有没有其他方法可以让asp.net页面在不使用captchas的情况下识别机器人?

  •  0
  • n1nsa1d00  · 技术社区  · 9 年前

    我经常看到网页使用captchas来实现这一点,但我想知道是否有其他方法。。。

    1 回复  |  直到 9 年前
        1
  •  1
  •   johna    9 年前

    还有其他方法,例如:

    (1) 记录表格的显示时间和提交时间,检查表格是否提交过快。

    (2) 蜜罐:创建一个不可见的文本字段。提交时,请检查它是否未填充,因为机器人可能会用值填充所有字段,但人类不会填充。

    (3) 使用客户端JavaScript生成一个复选框,并告诉人类需要检查它。机器人可能无法处理JavaScript,因此可能无法检查它。

    (4) 为了确保只有在实际显示表单时才能提交表单(机器人可以只发布提交的表单值而不首先请求表单),请在显示表单时创建并存储会话令牌,然后在提交表单时检查其是否存在。确保在使用会话令牌后删除它,以防止重复使用。

    下面是一些结合了(1)和(4)的C#示例代码。

    //When form is displayed
    Guid token = Guid.NewGuid();
    Session["token_" + token.ToString()] = DateTime.Now;
    hdnToken.Value = token.ToString();
    
    //When form is submitted
    string token = hdnToken.Value;
    book valid = false;
    If (Session["token_" + token] != null)
    {
        DateTime displayed = DateTime.Parse(Session["token_" + token]);
        //form must not be submitted within 30 seconds
        valid = displayed < DateTime.Now.AddSeconds(-30);
        Session.Remove("token_" + token);
    }