Randin Asked: 2009-05-12 16:10:59 +0800 CST2009-05-12 16:10:59 +0800 CST 2009-05-12 16:10:59 +0800 CST 如何避免被刮? 772 我们有一个可搜索的数据库(DB),我们将结果限制为每页 15 个,并且只有 100 个结果,但仍然让人们试图抓取该网站。 我们正在禁止访问速度足够快的网站。我想知道我们是否还有什么可以做的。Flash渲染结果可能吗? database scraping 7 个回答 Voted John McC 2009-05-12T18:28:12+08:002009-05-12T18:28:12+08:00 既然显然对您的数据库有需求,您是否考虑过扭转它并提供刮板想要的东西?与爬虫建立业务联系并鼓励适当使用 API? cletus 2009-05-12T16:36:07+08:002009-05-12T16:36:07+08:00 在如何阻止脚本编写者每秒数百次抨击您的网站中有一些很好的信息? Best Answer Ivan 2009-05-12T16:15:59+08:002009-05-12T16:15:59+08:00 您可以通过 AJAX 检索记录并为 AJAX 调用使用身份验证 ID(如 API 密钥)来使其变得更加困难。 当然,您可以通过读取 ID 然后使用它发出 AJAX 请求来解决这个问题。 正如您所指出的那样,使用 Flash 渲染是一种替代方法(尽管仍然不是 100% 不可抓取),就像在 PDF 中渲染一样。 Portman 2009-05-12T18:50:31+08:002009-05-12T18:50:31+08:00 没有任何技术解决方案可以防止有动机的个人抓取您可公开访问的内容。 但是,您可以通过以下方式合法保护您的知识产权: 确保您的网站具有明确标记的版权 在页脚中发布明确禁止抓取的服务条款 考虑将数字水印嵌入到您网站的所有内容中。不要忘记文本也可以加水印! tomjedrz 2009-05-12T19:27:37+08:002009-05-12T19:27:37+08:00 如何在给定的时间段内设置身份验证(可能还有验证码)、跟踪使用情况以及限制对某些记录或搜索的访问? Brian Lyttle 2009-05-12T16:38:23+08:002009-05-12T16:38:23+08:00 您可能会发现,当您应用不同的技术时,刮板会改善它们的效果。也许有一种方法可以分析抓取并呈现验证码或其他干扰的用户的行为?也许您可以在一段时间内将结果限制为较小的数字,以迫使刮板等待 10 天。如果他们之间没有登录,那么假设他们是 scapers? 无论你做什么,一定要混合你的技术,让它们更长寿。 Bruce McLeod 2009-05-12T22:07:22+08:002009-05-12T22:07:22+08:00 您需要考虑刮板可能没有使用您的网页和表单,它们可能只是在 http 级别调用您的网站。 我认为最好的解决方案是在 IP 地址请求超过某个请求阈值后抛出一个 catchpa。 您需要非常小心,以确保您不会影响应用程序对真实用户的可扩展性。 如您在问题中描述的那样限制每页的数据量只会增加客户端将对您的服务器发出的请求数量。
既然显然对您的数据库有需求,您是否考虑过扭转它并提供刮板想要的东西?与爬虫建立业务联系并鼓励适当使用 API?
在如何阻止脚本编写者每秒数百次抨击您的网站中有一些很好的信息?
您可以通过 AJAX 检索记录并为 AJAX 调用使用身份验证 ID(如 API 密钥)来使其变得更加困难。
当然,您可以通过读取 ID 然后使用它发出 AJAX 请求来解决这个问题。
正如您所指出的那样,使用 Flash 渲染是一种替代方法(尽管仍然不是 100% 不可抓取),就像在 PDF 中渲染一样。
没有任何技术解决方案可以防止有动机的个人抓取您可公开访问的内容。
但是,您可以通过以下方式合法保护您的知识产权:
如何在给定的时间段内设置身份验证(可能还有验证码)、跟踪使用情况以及限制对某些记录或搜索的访问?
您可能会发现,当您应用不同的技术时,刮板会改善它们的效果。也许有一种方法可以分析抓取并呈现验证码或其他干扰的用户的行为?也许您可以在一段时间内将结果限制为较小的数字,以迫使刮板等待 10 天。如果他们之间没有登录,那么假设他们是 scapers?
无论你做什么,一定要混合你的技术,让它们更长寿。
您需要考虑刮板可能没有使用您的网页和表单,它们可能只是在 http 级别调用您的网站。
我认为最好的解决方案是在 IP 地址请求超过某个请求阈值后抛出一个 catchpa。
您需要非常小心,以确保您不会影响应用程序对真实用户的可扩展性。
如您在问题中描述的那样限制每页的数据量只会增加客户端将对您的服务器发出的请求数量。