向数百个站点发出 curl 请求是否可以被某些主机视为攻击?

Can making a curl request to hundreds of sites be considered an attack by some hosts?

有时我们没有想要的 API,这就是其中一种情况。

我想从某个网站提取某些信息,因此我正在考虑通过在我的服务器中使用 CRON 作业,以编程方式对站点中的数百个页面使用 CURL 请求。

然后缓存响应并在一或几天后再次触发它。

这是否可能被认为是服务器发起的某种攻击,服务器可能会在很短的时间内看到来自同一服务器 IP 的数百次对某些站点的调用?

比方说,500 百卷发?

你会推荐我什么?也许使用从 curl 到 curl 的 sleep 命令来减少这些请求的频率?

在很多情况下,您的脚本最终可能会被网站的防火墙阻止。要查看是否允许这样做,您可以采取的最佳步骤之一是联系网站所有者并让他们知道您想要做什么。如果那不可能,请阅读他们的服务条款,看看它是否被严格禁止。

如果进行这些调用时时间不是最重要的,那么,是的,您绝对可以使用 sleep 命令来延迟每个请求之间的时间,如果您发现需要,我会推荐它每秒发出更少的请求。

你绝对可以做到这一点。但是你应该记住一些事情:

  1. 大多数有能力的网站在其服务条款中都有一个条款,禁止以提供的界面以外的任何方式使用该网站。
  2. 如果网站看到您正在做的事情并注意到对他们网络的不利影响,他们将阻止您的 ip(我们的组织运行 对此问题的关注程度足以保证我们开发一个程序来记录 ips 和他们访问内容的速度,然后如果他们试图在 y 秒内访问超过 x 个页面,我们将禁止 ip z 分钟),但是您可以通过使用 sleep如您所述的命令。
  3. 如果您需要在呈现标记后通过 javascript 动态加载的页面上的信息,您从 curl 请求收到的响应将不包含此信息。对于此类情况,可以使用 iMacros 等程序,您可以在浏览器中编写脚本,以编程方式执行操作,就像您实际使用浏览器一样。

如@RyanCady 所述,最好的解决方案可能是联系网站所有者并解释您在做什么,看看他们是否能满足您的要求。