如果页面上没有提交按钮,垃圾邮件机器人是否能够提交表单?

时间:2011-04-04 20:25:56

标签: jquery

只是想知道是否有人知道如果页面上没有提交按钮,垃圾邮件机器人是否能够提交表单。只是尝试在不使用CAPTCHA的情况下进行一些非常基本的垃圾邮件预防。如果用户以某种方式与表单交互,我们的想法是使用jQuery呈现提交按钮。任何想法都将不胜感激。

7 个答案:

答案 0 :(得分:10)

由围绕WebKit或其他浏览器核心的代码包装器组成的spambot可以强制DOM“submit()”运行,或者(甚至更激进)只需启动自己的POST事务。

最好将一个spambot视为一个强大的邪恶机器人,其浏览器不遵循原子能束附加到其机器人大脑的规则。但它是一个无法很好阅读的机器人。

答案 1 :(得分:6)

机器人绝对能够找到你的帖子按钮,如果不经常的话。

一个非常流行的方法类似就像你正在尝试的那样是创建一个蜜罐表单元素。表单上的可编辑蜜罐字段对于人来说是不可见的(您可以使用jQuery / CSS来隐藏这些表单元素)。它们在表单数据发布时进行验证,如果它们包含任何输入,则提交者必须是某种类型的机器人。

使用模糊的字段名称,验证也可以阻止这些机器人。如果电子邮件字段必须有@符号,并且机器人无法分辨哪个字段是电子邮件,哪个不是,那么它成功发布的可能性就会大大降低。

答案 2 :(得分:2)

是的,有可能,机器人不需要提交按钮。

如果你有(pseudohtml):

<form action="POST" target="posting.php">
<input name="something"/>
<!-- some logic for the submit button -->
</form>

机器人可以简单地解析form标记和表单中字段的名称,并自行发出POST,而无需触及提交按钮。

答案 3 :(得分:1)

是的,他们可以。该按钮不是完全需要的:

$('#form_id').submit(); /* This is a jQuery trigger */

但是机器人可能很讨厌并向你的服务器发出自己的 POST请求,因为它并不难做到。

但是如果您使用jQuery创建了一个<input type="hidden" />具有secret-ish值(由服务器知道并为每个会话动态检索)并且只接受提交,如果该值存在,则您将停止所有非JS启用了机器人。

缺点是您要阻止非JS用户使用您的网页。但是,这是你必须为了杀死垃圾邮件而战斗的持续战斗......

答案 4 :(得分:1)

通常我们会创建一个隐藏字段,其名称为“多汁吸引人”,如“FirstName”。

然后在代码隐藏中我们运行类似:

if FirstName.text <> "" Then

    <insert your "what I want to happen" code. maybe a popup saying "oops an error has been made" or just not submit the form.  maybe redirect to a fake error page. like

    response.redirect("thisisabot.aspx")

endif

答案 5 :(得分:0)

从未编写过垃圾邮件机器人,我只能做出假设。但我认为提交按钮的存在不会产生太大的影响。更有可能的是,它正在查看<form> - 标签,并根据if应该发出POST / GET请求来确定。更好的选择(但绝不是万无一失)将不使用<form>,而是在单击您选择的按钮或链接时手动执行$ .post(因为您提到使用jQuery)动态元素的POST数据。

答案 6 :(得分:0)

无需呈现提交按钮,因为数据通常是从远程服务器发送的,而不是从页面本身填写的。 CAPTCHA是可怕的,有时它是如此不清楚我不明白它说什么。我一次使用三种方法来阻止机器人。

  1. 将表单源IP地址与目标IP地址进行比较,如果它们不匹配,则不会进行进一步处理。
  2. CSS隐藏的字段留空,如果填写,则为机器人并被忽略。
  3. 在提交表单时通过JavaScript接收预定值的另一个字段。没有比赛,没有进一步处理。
  4. 我还将IP地址的尝试记录到数据库表中。尝试失败了一次,两次或全部测试。

    但是,停止血汗工厂的垃圾邮件发送者是另一回事。 Sweatshop垃圾邮件发送者是廉价雇用手动发送垃圾邮件的人。如果您拥有更大的网站,则可能需要使用处理此类垃圾邮件的服务。有些服务也会处理滥用语言。