CURL:CONNECT后来自代理的代码0?

时间:2009-12-21 23:19:45

标签: php proxy curl

我正在尝试测试以下功能,但每次我尝试使用任何类型的代理IP(我现在尝试过 15 ) - 我通常会得到同样的错误:

Received HTTP code 0 from proxy after CONNECT 

这是功能,有什么不对吗?它可能只是我正在使用的代理,但我现在已经尝试了几次。

function getPage($proxy, $url, $referer, $agent, $header, $timeout) {
    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, $header);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXY, $proxy);
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);
    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, $timeout);
    curl_setopt($ch, CURLOPT_REFERER, $referer);
    curl_setopt($ch, CURLOPT_USERAGENT, $agent);

    $result['EXE'] = curl_exec($ch);
    $result['INF'] = curl_getinfo($ch);
    $result['ERR'] = curl_error($ch);

    curl_close($ch);

    return $result;
}

总的来说,无论如何我可以改进它吗?

我感谢所有人的帮助。

更新

当我提交此内容时,我尝试了另一个代理,它确实有效!

另一个问题仍然存在,我该如何改进上述内容。执行需要大约3-4秒,我能做什么,或者这太小了?

1 个答案:

答案 0 :(得分:1)

我知道您回答了第一个问题,但代码0不是有效的http状态代码。它们都应该以1(信息),2(成功),3(重定向),4(客户端错误)或5(服务器错误)开头。如果有人知道为什么你会得到这个代码,我会真的很分裂。搜索libcurl site并没有带来任何好处。

(如果您有兴趣,可在此处获取更多详细信息:
http://www.w3.org/Protocols/rfc2616/rfc2616-sec10.htmlt


对于第二个问题,我认为您需要找到最长操作的位置。microtime()函数可能对您有用。 documentation for microtime()有一些示例脚本可以帮助您使用计时器。

我怀疑虽然3-4秒的大部分时间都在等待curl_exe($ch)通过代理获得回复。