【问题标题】:Would sleep() help against bots [duplicate]sleep() 会帮助对抗机器人吗?
【发布时间】:2014-08-08 05:10:29
【问题描述】:

我有一个网站,成员可以在其中发布某些主题。有很多主题,例如,我使用sleep()sleep(20) 来制定提交时的延迟。我知道这不是一种用户友好的方法,但知道这是我正在实施的。我的问题是,这种方法能抵抗机器人吗?

<form method="post" action="/example.php">

<?php sleep(20); ?>

【问题讨论】:

  • 也许你需要CAPTCHA
  • 不,只是睡晚了,HTTP 请求将等待延迟,也许唯一有效的延迟将是“前端”(例如使用 javascript)。

标签: php html


【解决方案1】:

它只会惹恼他们不喜欢的用户。

但是机器人并不急躁。

最好抱最好的希望,让机器人服从robots.txt 文件。

也只需偶尔检查一下日志文件,看看是否存在看似“不自然”的持续流量。

也可以使用像 CAPTCHA 这样的 summat

【讨论】:

  • 我同意它绝对是用户友好的。
【解决方案2】:

不,这无济于事,因为 php 中的睡眠相当于用户等待页面加载的额外时间。

对于机器人来说没有区别,不幸的是这不会保护你。

您是否想过使用 captchacustom captcha 之类的东西?

【讨论】:

  • 感谢您的输入,将检查验证码的实现。
【解决方案3】:

行为良好的机器人不会进行 POST,因此 robots.txt 文件不会有任何好处。睡眠延迟也无济于事。

一种选择是尝试检测是否是人提交表单。最简单的方法是在隐藏的表单字段中包含时间戳。提交时,您会查看填写和提交表单所需的时间。机器人在这方面很可能会非常快,比任何人类都快得多。这不会阻止所有人,但应该会有所帮助。

【讨论】:

  • 我认为这是不正确的。如果与不守规矩的机器人打交道,他们不会延迟提交 - 也许使用随机数
  • 他们当然可以。大多数机器人都试图用尽可能少的资源尽可能快地完成任务。插入延迟将需要更多资源(在延迟期间保持状态)并减慢速度。
【解决方案4】:

没有。请不要使用sleep 来保护自己免受僵尸程序的侵害,因为即使在少量僵尸程序的情况下,这也会耗尽您服务器的所有 HTTP 连接,因为 sleep() 会阻塞 PHP 线程。

尝试改用honeypot(人类不会填写,但机器人会填写的隐藏表单字段)或CAPTCHA(请求输入图像中的字母;计算难度较大的任务)。

【讨论】:

  • 谢谢你,我会检查他们两个。
猜你喜欢
  • 2023-02-26
  • 2018-05-06
  • 2021-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-11-29
  • 1970-01-01
  • 2011-05-07
  • 1970-01-01
相关资源
最近更新 更多