【问题标题】:How can I let only search engines to grab my data but no one else?我怎样才能让搜索引擎只抓取我的数据而其他人不抓取?
【发布时间】:2012-12-20 20:19:55
【问题描述】:

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

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

相关:Preventing non-human generated requests

【问题讨论】:

    标签: php request web-scraping search-engine


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2015-06-13
      • 2013-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-01-20
      • 1970-01-01
      • 1970-01-01
      • 2020-04-01
      相关资源
      最近更新 更多