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

Posted

技术标签:

【中文标题】向数百个站点发出 curl 请求是不是会被某些主机视为攻击?【英文标题】:Can making a curl request to hundreds of sites be considered an attack by some hosts?向数百个站点发出 curl 请求是否会被某些主机视为攻击? 【发布时间】:2018-08-10 01:09:15 【问题描述】:

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

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

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

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

比方说,50000 卷发?

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

【问题讨论】:

500 hundred curls 等于 50,000? 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

你绝对可以做到这一点。但是,您应该记住以下几点:

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

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

【讨论】:

以上是关于向数百个站点发出 curl 请求是不是会被某些主机视为攻击?的主要内容,如果未能解决你的问题,请参考以下文章

从 Zend Framework 应用程序向数百个收件人发送电子邮件的最佳方法是啥?

使用 AFNetworking 同时处理数百个请求

如何使用 nginx 将数百个主机名重定向到其他主机名

PHP CURL 对于本地主机来说太慢了

PHP CURL 对于本地主机来说太慢了

请求被中止:请求被取消。没有解决方案有效