Json 提供API是否有助于阻止屏幕刮屏?

Json 提供API是否有助于阻止屏幕刮屏?,json,language-agnostic,api,screen-scraping,Json,Language Agnostic,Api,Screen Scraping,最近,我在这里一直在思考屏幕抓取以及这是一项多么艰巨的任务。因此,我提出以下问题 作为站点开发者,您是否会公开简单的API以防止用户抓取屏幕,例如JSON结果 这些结果可以实现缓存,并且它们的流量比可能下载的大量标记要小得多 我不是在看预防,而是在阻止刮擦 刮取带宽样本 ((用户*(/100))*((频率*60)*24))*文件大小 用户:20万 %使用实用程序的用户数:5 文件大小:1kb 频率:1分钟 公式: ((用户*(/100))*((频率*60)*24))*文件大小 10000*

最近,我在这里一直在思考屏幕抓取以及这是一项多么艰巨的任务。因此,我提出以下问题

作为站点开发者,您是否会公开简单的API以防止用户抓取屏幕,例如JSON结果

这些结果可以实现缓存,并且它们的流量比可能下载的大量标记要小得多

我不是在看预防,而是在阻止刮擦


刮取带宽样本
((用户*(/100))*((频率*60)*24))*文件大小

  • 用户:20万
  • %使用实用程序的用户数:5
  • 文件大小:1kb
  • 频率:1分钟
公式:

((用户*(/100))*((频率*60)*24))*文件大小

10000*1440*1

14400000kb或13.73291015625gb

假设JSON结果是200字节,现在是(10000*1440*0.2)或每天2.74658203125gb

这意味着每天大约有11gb的流量变化


我的堆栈溢出配置文件是96k,仅供参考


此问题的原因提示询问用户配置文件的JSON结果:


我想知道其他开发人员是否会公开这种类型的API,以及是否值得您花时间提供这些API以减少带宽。

如果您想提供一个开放模型,人们可以在您的站点上开发解决方案,那么是的,您应该提供一个API。刮屏是一种恶意集成的方法,只能在万不得已的情况下使用。

刮屏实际上是不可预防的。提供API虽然对使用您的数据的人很好,但并不能阻止它。由于数据最终必须是人类可读的,因此它是机器可读的。你最好把精力花在你的网站上,而不是为那些会使用你的数据的人工作(合法与否)


wget、perl、正则表达式是抓取数据的常用机制。

提供API肯定会减少对站点进行的屏幕抓取。使用良好的RESTAPI比屏幕抓取更容易、更安全。屏幕可以在没有通知的情况下更改,这使得屏幕抓取代码更难维护。作为一名开发人员,如果我需要一个站点的信息,如果通过API可以获得相同的信息,我永远不会删除该站点。

如果你想鼓励人们与你的站点集成,或者它很流行,这会成为一个问题(因此你不得不允许人们与之集成),那么请务必提供一个API。如果您的API足够且易于使用,那么人们会更喜欢它而不是屏幕抓取。如果您的API不足或比屏幕刮板更难使用,那么您可能仍然存在问题。

如果技术用户使用API比使用屏幕刮板更容易,他们会这样做。更好的是,如果您可以鼓励人们使用您的API而不是屏幕抓取,那么您应该可以更轻松地监控流量,因为自动用户代理与浏览器用户代理有着明显的区别


RESTful JSON接口是一个不错的选择,因为它可以很容易地从任何其他语言编写脚本(向我展示一种没有JSON解析器的语言,我将向您展示一种无人关心的语言)。

大多数开发人员会出于自己的原因选择使用该技术。因此,如果您提供的API比他们用来刮屏的API更容易,那么一些未知的百分比将转移到它。在他们的考虑事项列表中,带宽减少可能非常少

由于您还没有指定要刮取什么,我们无法帮助您猜测要提供什么样的API,或者使用它的比例

一个非常常见的刮伤工具是使用Excel或其他一些产品,使刮伤无痛

如果你的目的只是为了尽量减少痛苦(人们可能会从你的问题中推断出这一点),那么到目前为止,最有用的事情就是查询他们的刮刀——无论如何,比查询更有用


您可以查看woot.com,看看他们在RSS提要上提供了什么来减轻web http服务器的负担。

但是如果通过API可以获得相同的数据,为什么会有人想进行screen scrape,因为这比调用API困难得多。这是我的想法,那么您可以将其格式化为您喜欢的任何人类可读格式。我不是在看预防,而是阻止他们这样做。“好的,那么你想从我的网站上获取程序数据,请使用此api,而不是占用我的带宽并给我错误的分析。”当然,如果你想花费额外的精力使数据更好地可用,那么绝对要发布一个api。如果我需要的话,我更愿意使用api而不是screen scape。但是,仅仅为那些试图恶意集成的人公开api是否有助于减少流量?我想这就是@Josh所说的:只有在你不提供api的情况下,人们才会使用screen scraping。“应该作为最后的手段使用”-不幸的是,问这个问题的是生产者,而不是消费者。他认为最后的手段应该是什么与任何事情都没有多大关系。我不认为你可以在不知道API有多大的情况下绘制btw屏幕抓取和流量之间的关联…但是由于API应该只包含数据,你可以放心地假设API将减少流量…@le告诉我一个消费者,他当时更喜欢屏幕抓取使用API,我会告诉你,当我因为修改标记而破坏了他的屏幕抓取代码时,有人会哭。我不是在问实现问题,我只是想让它不受语言的影响,并讨论时间与带宽的投资。你的时间,还是刮刀的时间?你的投资,还是铲运机的投资?或者两者都有?现在还不清楚你认为时间和带宽在哪里被交换——有几种可能的解释。