1

我过去已经解决了这个问题,但我绝对不记得是如何解决的。

所以,我正在尝试使用代理将网页获取到我的服务器。

这是代码:

function curlFile($url,$proxy_ip,$proxy_port,$loginpassw)
{

    $ch = curl_init();
    curl_setopt($ch, CURLOPT_URL, $url);
    curl_setopt($ch, CURLOPT_HEADER, 0);
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
    curl_setopt($ch, CURLOPT_PROXYPORT, $proxy_port);
    curl_setopt($ch, CURLOPT_PROXYTYPE, 'HTTP');
    curl_setopt($ch, CURLOPT_PROXY, $proxy_ip);
    curl_setopt($ch, CURLOPT_HEADER, false);
    curl_setopt($ch, CURLOPT_VERBOSE, false);
    curl_setopt($ch, CURLOPT_PROXYUSERPWD, $loginpassw);
    curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);


    $data = curl_exec($ch);

    if(curl_errno($ch)){
             echo 'Curl error: ' . curl_error($ch);
    }

    print_r(curl_getinfo($ch));
    print_r(curl_error($ch));

    print_r($data);

    curl_close($ch);

    return $data;
}

它当前输出的只是:

卷曲错误:无法连接到 hostArray ( [url] => http://www.drkameleon.com [content_type] => [http_code] => 0 [header_size] => 0 [request_size] => 0 [filetime] => -1 [ssl_verify_result] => 0 [redirect_count] => 0 [total_time] => 0.007872 [namelookup_time] => 0.007537 [connect_time] => 0 [pretransfer_time] => 0 [size_upload] => 0 [size_download] = > 0 [speed_download] => 0 [speed_upload] => 0 [download_content_length] => -1 [upload_content_length] => -1 [starttransfer_time] => 0 [redirect_time] => 0 ) 无法连接到主机

那么,有什么想法吗?可能出了什么问题?

4

2 回答 2

2

在在线 PHP 平台上执行相同的脚本并查看结果。可能有几个问题

  1. SSL 验证问题。如果您正在向 HTTPS 网站发出请求,并且您的 curl 库未配置为信任证书,那么您将遇到问题。您可以下载其他网站的 CA 证书并将 curl 库指向该方向。

  2. 如果您在大学/办公室网络上,则可能是防火墙问题。

  3. 端口配置不正确。

在线运行相同的脚本并查看 [ssl_verify_result] 得到的结果。另请参阅它指向的 HTTP 代码。

于 2014-11-24T22:02:07.797 回答
2

您的网络服务器无法连接到代理

  • 网络服务器上的本地安全设置 - 你没有说这是在什么操作系统上运行
  • 网络服务器上的路由问题
  • 代理的防火墙策略

代理需要身份验证?(您应该从代理获得 4xx 响应 - 如果您有 CLI 访问权限,请尝试从命令行运行 curl)。

代理在查找时获得了 NXDomain 或未获得您期望的 IP 地址。

于 2013-07-31T12:38:35.003 回答