2

我开发了一个 PHP 应用程序,它的主要目的是从数据库中获取数据。我想通过使用机器请求来防止从数据库中获取所有记录(我的意思是那些由非人类发出的请求,即像 CURL 这样的机制,你通常会通过 CAPTCHA 来阻止这样的请求。)。

我怎样才能让搜索引擎只抓取我的数据而没有其他人抓取我的数据而不会造成明显的可用性损害?

相关:防止非人为生成的请求

4

1 回答 1

0

要打开您的问题,我单击了链接,我的浏览器向 stackOverflow 服务器发出请求并请求此页面。这与 cURL 的作用相同……除了它不能处理 JavaScript。但同样,我没有代表我的浏览器解析 JavaScript。这又是一个程序。

我真正需要强调的是,实际上您无法阻止机器伪造用户活动。

但是,如果您有兴趣,这里有一些技巧。就个人而言,我更喜欢不直接涉及人类的方法。

  • 向页面添加验证码挑战。
  • 如果您的目标受众主要是使用现代浏览器的现代人,请使用一些 Ajax 页面加载。这将保留大多数低端刮刀,但不是全部。Google 可以处理一些 ajax 请求。参见哈希棒。
  • 向页面添加验证码挑战。
  • 如果您的目标受众主要是使用现代浏览器的现代人,请使用一些 Ajax 页面加载。这将保留大多数低端刮刀,但不是全部。Google 可以处理一些 ajax 请求。参见哈希棒。
  • 记录用户的 IP 地址,并在短时间内寻找具有数千次点击的人。
  • 为该站点添加一些防洪措施。您可以禁止(例如)每分钟处理一次以上的表单提交。
  • 将令牌添加到表单并验证它。这至少会使抓取过程分为两步。
  • 并让您的网站从数据库中获取一些数据。例如,如果您的应用程序是日历,您可以禁止所有请求显示超过一年的日期。

您不能通过其用户代理阻止机器人。cURL 和其他程序在发出请求时可以使用用户给定的不同用户代理。

您可以调整 googlebot 在 Google Web Master Central 中的行为方式。尝试将其与您的防洪机制相匹配。请记住,Google 建议您不要依赖其用户代理。

于 2013-01-07T05:45:03.123 回答