cURL connect()超时

时间:2013-04-30 16:39:57

标签: 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

为了理智,我尝试用两个不同的方框ping网站,但每次ping都超时。

方框1(Linux):

ping www.viewmag.com
PING www.viewmag.com (205.178.145.65) 56(84) bytes of data.

方框2(Windows):

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.

我的cURL如下:

$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呢?提前致谢

2 个答案:

答案 0 :(得分:7)

  1. 也许您的服务器IP在该网站上被禁止了?

  2. 也许尝试设置更长的超时?我访问了该网站,它的工作速度很慢,可能需要5秒以上。


  3. 稍后添加:

    看起来您的服务器IP已被禁止。

    我尝试了这个(它的代码副本,更改在评论中):

    <?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; 
    
    ?>
    

    它适用于我的测试服务器(德国的数据中心)。

答案 1 :(得分:1)

他们很可能在服务器中增加了安全性。服务器中的某些设置已更改为阻止您进行设置。尝试伪装成已知的用户代理。 Ping可能不起作用,因为他们刚刚关闭了ping服务器,因此可以阻止分布式拒绝服务(DDOS)等攻击。遗憾的是,在这一点上无法确定哪些确切的组合可以或将使其起作用。您需要使用反复试验。