代码之家  ›  专栏  ›  技术社区  ›  nikc.org

实现“报告此内容”并检测垃圾邮件发送者或机器人触发的事件

  •  0
  • nikc.org  · 技术社区  · 15 年前

    我正在为一个网站创建一个论坛,并计划实施“报告此内容”功能。

    老实说,我不知道有多有用。必要的)功能是,因为过账需要用户帐户(由管理员创建),但解决方案让我感兴趣。

    简而言之,这是一个场景:

    对于所有用户,将以只读方式访问论坛上的所有(非受限)内容。对于身份不明的用户,将有一个答复按钮并报告此内容按钮。前者将继续要求登录,而我计划后者不会,这样任何人都可以标记可疑或攻击性内容。

    因此,我面临的问题基本上是“机器人点击”,或者更确切地说,如何实现这个系统,这样它就不会被“机器人点击”所愚弄。

    有几种方法可以想到:

    1)用户代理

    3)Roopt.txt
    4)需要第二种形式的人工输入(验证码或“指定原因”)。

    我对他们的看法:

    1)不可靠(作为唯一解决方案)
    2)这需要大量的用户,这些用户可能导致事件永远不会被触发。
    3)这可能是正确的做法,但只适用于尊重它的人。
    4)嗯,我不喜欢验证码,需要理由可能会提高标准太高,无法保持功能的有效性。

    (高度开明的)社区必须与我分享什么方法?

    3 回复  |  直到 8 年前
        1
  •  1
  •   Jacco    15 年前

    你可以附加“报告这个” <form> 到带有javascript的DOM appendChild(); .

    这样可以防止大量垃圾邮件。

    它还可以防止没有运行javascript的用户看到报告按钮。但是,由于这是一个不妨碍用户体验的特性,因此它可能是一个可接受的选项。

    window.onload = function() {
        var f = document.createElement('FORM');
            f.method = 'post';
            f.action = 'report.cgi';
    
        var b = document.createElement('INPUT');
            b.type = 'submit';
            b.value = 'Report this';
    
    
            f.appendChild(b);
            document.body.appendChild(f);
     }
    

    注:
    这个 rel="nofollow" 属性确保搜索引擎不“计算”链接,但是它们会跟随链接(是的,名称的建议不同)。

    如果您希望搜索引擎不接触某个文件,请使用 robots.txt

    注2:
    报告某些内容是一种“更改”服务器上某些内容的操作。因此,它不应该是 GET 而是请求它应该是 POST 请求。换句话说:不要使用 <a href""> 而是提交 <形式& gt; 用它 method 参数设置为 "post" .

        2
  •  1
  •   Thorsten Dittmar    15 年前

    您可以简单地重定向到用户需要输入报告内容原因的表单。机器人可能不会在这里输入任何内容,如果用户没有输入任何内容,表单将不会被处理。

        3
  •  1
  •   Rowland Shaw    15 年前

    你错过了让链接成为一个不跟随的,但我选择了一个需要人工输入(原因,投诉人的细节)来对付机器人的组合,并要求一些旗帜来阻止人们仅仅标记他们不同意/不喜欢的人在论坛上。