对于一个不提供API的网站来说,什么是最合乎道德的消费方式

What would be the most ethical way to consume content from a site that is not providing an API?

本文关键字:道德 方式 什么 于一个 API 网站      更新时间:2023-09-26

我想知道什么是最合乎道德的方式来消费来自给定站点a的一些字节(确切地说是386字节)的内容,在一些网站B中使用应用程序(例如谷歌应用程序引擎),但做对了,没有刮取意图,我真的只需要检查公共服务的状态,而他们目前没有提供任何API。因此,SiteA中的标记有一个JavaScript数组,其中包含我需要的信息,并且能够访问这些信息,比如说每五分钟访问一次就足够了。

任何建议都将不胜感激。

更新:

首先,非常感谢您的反馈SiteA基本上是目前运营我们公共地铁网络的公司的网站,所以我计划开发一个免费的Android应用程序,让任何人不仅可以获得整个网络及其车站的地图,还可以获得有关服务可用性的最新信息(这些是我最终要消耗的字节)等。

会有一些非常不同的观点,但希望这里有一些值得思考的地方:

  1. 首先询问网站所有者,如果他们提前知道,他们不太可能生气
  2. 网站A上的内容是否可以在网站的公共部分访问,例如无需登录
  3. 如果第二个问题的答案是它是公共内容,那么我不会认为有什么问题,因为从网站上抓取这些信息与将浏览器指向网站并自己阅读没有什么不同
  4. 当然,第三个问题的答案取决于网站的货币化方式。如果网站A提供广告为网站创收,那么开始抓取内容可能不是一个主意,因为你会绕过网站的赚钱方式

我认为最重要的事情是首先与网站所有者交谈,并直接从他们那里确定是否:

  1. 我可以从他们的网站上抓取内容吗
  2. 他们是否有API在管道中(简单地强调需求可能会促使他们考虑)

只是我的观点。。。

更新(4年后):这个问题特别包含了问题的道德方面。这就是为什么这个古老的答案是这样写的。

通常在这种情况下,你会联系他们。

如果他们不喜欢,那么从道德上讲,你就不能这样做(法律上是另一回事,取决于是否在网站上提供许可证。他们对访问有什么登录/匿名或其他限制,你必须使用测试/伪造数据吗,等等…)。

如果他们允许,他们可能会提供API(可能涉及成本-将由你决定脂肪对你的应用程序的价值),或承诺为你做出某种预期行为,这本身可能会被废除,或他们决定的任何其他选择。

如果他们允许,但还没有准备好帮助它变得更容易,那么刮削(其他不利因素仍然适用)将是正确的,至少在"道德上"是正确的。

我不会碰它,除非给网站管理员发电子邮件,然后获得他们的书面许可。话虽如此——如果你正在消费内容,但没有提取超出价值的价值一个用户在观察你需要从他们那里得到的数据时,任何TOU他们不会发现你违规。然而,如果你获得了值得注意的价值单个用户将从他们的网站上获得所需的数据,即,假设您使用数据,然后你的结果最终为你自己网站的100倍用户提供了价值——我想说你需要得到明确的许可,才能在晚上睡个好觉。

然而,如果信息已经在公共领域(你可以证明这一点),或者你需要从他们那里获得的数据是在某种类型的"开放许可证"下,比如GNU。

再说一遍,如果没有指向他人内容的链接,网络就什么都不是。我们都捕捉然后重新发布各种论坛上的东西,比如——我们在cnn上读了一篇文章,然后在一个在线论坛上发表评论,也许可以引用这篇文章,并提供一个链接。我想这取决于灵活性该网站的管理员和所有者都持开放态度。但实际上,为了避免被起诉(如果推到了紧要关头)我会得到许可的。

  1. 使用标识您的服务的用户代理标头
  2. 检查他们的robots.txt(并定期重新检查,例如每天)
  3. 尊重记录中与用户代理匹配的任何Disallow(在解释名称时要自由)。如果没有用户代理的记录,请使用User-agent: *的记录
  4. 尊重(非标准)Crawl-delay,它告诉您在再次向该主机请求资源之前应该等待多少秒

"不打算刮"-您打算刮。=)

唯一合理的基于道德的理由是:

  1. 他们可能希望向用户显示广告或重要的安全通知
  2. 这可能会使他们的统计数据不准确

就打击他们的网站而言,这可能不是一个问题。但如果是:

  • 您可能希望节省所需的最少数量(例如,发出最少数量的HTTP请求),而不是过于频繁地冲击服务器
  • 你可能不希望所有的应用程序都查询网站;您可以让自己的网站通过cronjob查询它们。这将允许你更好地控制,以防他们更改格式,或者让你向用户抛出"服务当前不可用"错误,只需更改你的网站;它引入了另一个失败点,但这可能是值得的。这样,如果出现错误,人们就不需要更新他们的应用程序

但你能做的最好的事情就是与网站交谈,问他们什么是最好的。他们可能有一个隐藏的API,允许你使用,也可能允许其他人使用。