1

众所周知,Reddit 允许每个链接每个 IP 地址大约 1 票,以避免垃圾邮件发送者的问题。我正在开发一个具有投票功能的 Slim 应用程序,坦率地说,我不知道如何实现这样的系统,因为我没有使用 cookie 和本地会话的经验。此外,我的大多数函数都有类似(示例)localhost:8888/myapp/voteup/item-to-vote 的路径。

4

2 回答 2

0

对抗自动化机器人的最好方法是混淆它们。隐藏一些文本输入字段,以其他方式命名它们(名称字段,将它们命名为电子邮件,以及站点,将它们命名为名称等)

更喜欢仅使用 Javascript 提交,因此它可以帮助减轻来自外部的表单提交。CSRF 的使用也有帮助。强制使用 cookie、HTTP 自定义标头,所有这些都是为了确保只有浏览器且没有自动化手段可以重现。

逻辑问题也可以提供帮助,例如“1 + 1 是多少,写下来”(答案必须是 2,并使其随机化)或“以 W 开头的星期几”。

于 2012-12-29T23:48:42.417 回答
0

在我的网站上,我允许会员每 24 小时对一些代码进行 1 到 5 的评分。我通过添加哈希码并使用 ajax 提交投票来阻止垃圾邮件。自从我在 2012 年 6 月添加它以来,我没有收到任何垃圾邮件投票。我曾经每天从机器人那里获得大约 40 票,但现在已经被淘汰了。

例如,这是我的链接的样子:
http ://phpsnips.com/process/vote.php?id=43&vote=3&enc=a560e4320af4e13e4170947cd42de18b

这样,每次页面加载时 enc 都会有所不同,并且一旦提交投票,它就会再次更改。

我的脚步

  • 使用会话创建 md5 哈希
  • 将哈希放在链接上或形成隐藏字段
  • 在提交页面测试以确保会话与链接/字段匹配
  • 重置哈希
  • 重定向回原始页面(如果不使用 ajax)
于 2012-12-29T23:59:09.553 回答