2012-11-09 84 views
2

我需要从远程http server.Im获取一些数据,使用Curl Classes进行多请求。 我的问题是远程服务器的防火墙。我在10000 GET和POST请求之间发送1000。而服务器从DDOS禁止我。CURL和DDOS问题

©使用此措施。

  • 包仍然包含头信息

    curl_setopt($这 - > CH,CURLOPT_HTTPHEADER,$头);

  • 包仍包含随机referer信息,

    curl_setopt($这 - > CH,CURLOPT_REFERER,$参[兰特(0,计数($参))]);

  • 包仍包含随机用户代理

    curl_setopt($这 - > CH,CURLOPT_USERAGENT,$剂[兰特(0,计数($剂))]);

  • 我用随机间隔的睡眠功能发送包。

    sleep(rand(0,10));

但是禁止每次访问服务器1小时。

对不起,我的英语不好:) 谢谢大家。

+1

有没有机会远程服务器应该拒绝这个数量的入站请求_intentionally_? – quickshiftin

回答

1

在短时间内向服务器发送大量请求很可能与DOS攻击具有相同的影响,无论这是否是您的意图。一个快速的解决方案是将睡眠线从sleep(rand(0,10));改为这意味着有11比1的机会立即将下一个请求发送到sleep(3);,这意味着请求之间总是会有3秒(大约)。 3秒应该足以保证大多数服务器的快乐。一旦你验证了这个作品,你可以将这个值减小到2或1,看看你能否加快速度。

更好的解决方案是在服务器上创建一个API,使您能够在1或至少只有少数请求中获取所需的数据。显然这只有在你能够对服务器进行更改(或者可以说服那些能够代表你进行更改的人)时才有可能。