Php cURL connect()超时
在过去的几个月里,我成功地运行了cURL实现,没有任何问题;然而,上周我突然发现一个特定的网站(www.viewmag.com)出现了问题。我可以在浏览器中完美地访问该站点(并将其解析),但cURL返回以下内容:Php cURL connect()超时,php,curl,ping,Php,Curl,Ping,在过去的几个月里,我成功地运行了cURL实现,没有任何问题;然而,上周我突然发现一个特定的网站(www.viewmag.com)出现了问题。我可以在浏览器中完美地访问该站点(并将其解析),但cURL返回以下内容: * About to connect() to www.viewmag.com port 80 (#0) * Trying 205.178.145.65... * Timeout * connect() timed out! * Closing connection #0 为了理
* About to connect() to www.viewmag.com port 80 (#0)
* Trying 205.178.145.65... * Timeout
* connect() timed out!
* Closing connection #0
为了理智起见,我尝试用两个不同的框ping网站,但每次ping都超时了
方框1(Linux):
方框2(窗口):
我的卷曲如下:
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://www.viewmag.com');
curl_setopt ($ch, CURLOPT_USERAGENT, 'cURL crawler');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt ($ch, CURLOPT_AUTOREFERER, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2);
$html = curl_exec($ch);
有没有人想过为什么cURL会失败,为什么我可以在浏览器中访问这个站点,但不能ping/cURL它?提前感谢很可能他们已经提高了服务器的安全性。服务器中的某些设置已更改,以阻止您对其进行卷曲。尝试伪装为已知用户代理。ping可能不起作用,因为他们刚刚关闭了ping服务器,因此可以阻止分布式拒绝服务(DDOS)等攻击。不幸的是,在这一点上,无法确定什么样的确切组合可以或将使其工作。你需要反复试验
稍后添加: 看起来您的服务器IP被禁止。 我尝试过这个(它是您代码的副本,更改在注释中):
它在我的测试服务器(德国的数据中心)上工作。服务器中的某些设置已更改,以阻止您对其进行卷曲。尝试伪装成一个已知的用户代理,然后检查您是否可以看到
http://www.viewmag.com
在浏览器中?1。网站关闭了。2.他们封锁了你。您可能太频繁地删除他们的站点,并且您可能没有请求许可这样做。@raidance:这是毫无意义的。UA字符串在tcp连接建立后才会发送。如果它在UAs上进行过滤,那么ping将返回resultts。该网站很可能被列入黑名单/防火墙,这是滥用刮削的OP。在这一点上,我假设我已经被列入黑名单,但我只想澄清一下,我的curl脚本每周拉两个简单的html页面(这是我心目中最远离滥用刮削的事情)。无论如何,感谢大家的反馈。我一直在玩超时游戏,但没有成功(我的浏览器的响应也很快)。此时,我想我的服务器IP可能会被禁止,这很奇怪,因为我实际上每周运行一次脚本并抓取两个html页面。@veerman,所以可能尝试更改用户代理。将代理设置为“cURL crawler”就像请求ban:)感谢您花时间为我测试,非常感谢。这也是我的猜测,我尝试了几个UAs,现在假设它们阻止了所有ping流量。
ping www.viewmag.com
Pinging www.viewmag.com [205.178.145.65] with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://www.viewmag.com');
curl_setopt ($ch, CURLOPT_USERAGENT, 'cURL crawler');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt ($ch, CURLOPT_AUTOREFERER, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2);
$html = curl_exec($ch);
<?php
$ch = curl_init();
curl_setopt ($ch, CURLOPT_URL, 'http://www.viewmag.com');
// I changed UA here
curl_setopt ($ch, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1');
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt ($ch, CURLOPT_CONNECTTIMEOUT, 5);
curl_setopt ($ch, CURLOPT_AUTOREFERER, true);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt ($ch, CURLOPT_SSL_VERIFYHOST, 2);
$html = curl_exec($ch);
// I added this
echo $html;
?>