代码之家  ›  专栏  ›  技术社区  ›  Alvaro

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

  •  1
  • Alvaro  · 技术社区  · 7 年前

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

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

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

    如果服务器在很短的时间内看到来自同一服务器IP的数百个呼叫,那么这可能被视为某种攻击吗?

    比如说,500个卷发?

    你给我推荐什么?也许是利用 sleep 从curl到curl的命令,以减少这些请求的频率?

    2 回复  |  直到 7 年前
        1
  •  2
  •   Ryan Cady    7 年前

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

    如果打这些电话时时间不重要,那么,是的,您肯定可以利用 sleep 命令来延迟每个请求之间的时间,如果您发现需要每秒减少几个请求,我建议您这样做。

        2
  •  1
  •   whitwhoa    7 年前

    你绝对可以这样做。但是,您应该记住几件事:

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

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