3

我正在尝试索引数百个网页。

简而言之

  1. 使用 CRON 作业调用 PHP 脚本
  2. 获取一些(仅大约 15 个)最近最少更新的 URL
  3. 使用 CURL 查询这些 URL

问题

在开发中一切都很顺利。但是当我开始索引更多的测试页时,CURL 在一些运行后拒绝工作。它不会从远程服务器获取任何数据。

错误信息

这些错误 CURL 已打印出来(当然不是一次)

  1. 无法连接到主机
  2. 操作在 60000 毫秒后超时,收到 0 个字节

我正在使用 V-Server 并尝试使用 Firefox 或 wget 连接到远程服务器。也没什么。但是当从我的本地机器连接到远程服务器时,一切正常。

等待几个小时,它又可以运行一些。

对我来说,这似乎是远程服务器或 DDOS 保护或类似的问题,你们怎么看?

4

2 回答 2

1

当您发送太多请求时,您应该使用代理,因为您的 IP 可能会被站点的 DDOS 保护或类似设置阻止。

这里有几点需要注意:(我用来抓取网站数据的)

1.使用代理。

2.使用随机用户代理

3.随机推荐人

4.crons中的随机延迟。

5.请求之间的随机延迟。

我要做的是让脚本永远运行并在两者之间添加睡眠。

ignore_user_abort(1);
set_time_limit(0);

只需访问 url 几秒钟即可触发它,它将永远运行。

于 2012-05-09T07:18:41.377 回答
1

脚本多久运行一次?它真的可以触发一些类似 DOS 的保护。我建议实施一些随机延迟,使请求看起来延迟一段时间,使它们看起来更“自然”

于 2012-05-08T11:35:48.540 回答