【问题标题】:Getting timeout when using proxies with PHP cURL使用 PHP cURL 代理时超时
【发布时间】:2016-03-08 19:17:26
【问题描述】:

这里是有问题的代码:

$ch = curl_init();
curl_setopt(CURLOPT_URL, 'https://api.ipify.org?format=json');
curl_setopt(CURLOPT_PROXY, 'ip:port');
curl_setopt(CURLOPT_PROXYUSERPWD, 'user:pass');
$result = curl_exec($ch);
echo curl_error($ch);

我使用的代理和 proxyauth 绝对有效。实际上,我已经尝试过使用和不使用身份验证的各种来源的多个代理,但每次连接到代理时都会出现连接超时。

是否有阻止使用代理或我不知道的配置设置?在这里的任何帮助将不胜感激。

【问题讨论】:

  • 尝试添加curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
  • 感谢您的建议。我添加了该选项,但我仍然遇到同样的超时问题。
  • 尝试通过cli运行curl,而不是php,看看是服务器连接代理的问题,还是php内部的问题。
  • 刚刚通过命令行运行命令,仍然得到超时。所以它绝对不是特定于 PHP 的.. 在这种情况下,我将与服务器的支持团队聊天。感谢您帮助我调试问题。

标签: php


【解决方案1】:

您需要对 https url 使用 CONNECT 方法:

curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 1);

但有些代理不支持此功能。

【讨论】:

    【解决方案2】:

    对我来说听起来像是 HTTPS 问题。试试:

    curl_setopt($ch,CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch,CURLOPT_SSL_VERIFYHOST, false);
    

    它也可能只是一个缓慢的 URL,所以请尝试:

    curl_setopt($ch, CURLOPT_CONNECTTIMEOUT ,0); 
    curl_setopt($ch, CURLOPT_TIMEOUT, 400);//max seconds to allow cURL functions to run
    

    如果涉及重定向,您也可以尝试:

    curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
    

    如果这不起作用,请尝试测试更多 URL,看看您尝试的每个站点是否都存在 https 问题,以及您是否可以使用 http 重新创建相同的问题。还要检查确保您启用了 PHP 的错误报告,并查看您是否收到任何错误或警告。尝试故意让 PHP 产生错误或警告,看看错误报告是否正常工作。

    【讨论】:

      【解决方案3】:

      我解决了这个问题,只是想更新这个问题。

      问题出在服务器配置上。仅启用了最常见的出站端口,并且我在整个频谱中使用具有随机端口的代理。启用我需要的端口(您可以完全禁用限制)解决了这个问题。

      因此,如果您在尝试连接代理时遇到同样的问题,请联系您的支持人员并询问对出站端口的任何限制。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-11-27
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-11-19
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多