【问题标题】:PHP cURL Received HTTP code 407 from proxy after CONNECTPHP cURL 在 CONNECT 后从代理收到 HTTP 代码 407
【发布时间】:2021-08-21 18:33:52
【问题描述】:

我有一个 php curl 代理问题。

下面是我的代码:

<?php
$proxylist = file('proxy.txt');
$random_proxy = $proxylist[mt_rand(0,count($proxylist)-1)];
$pinfos = explode(':', $random_proxy);
$proxyipport = $pinfos[0].':'.$pinfos[1];
$proxyuserpwd = $pinfos[2].':'.$pinfos[3];

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,'https://google.com');
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXY, $proxyipport);
curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyuserpwd);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if (curl_errno($ch)) {
    echo 'Error: ' . curl_error($ch).'<br/>';
}
curl_close($ch);
echo $result;
?>

proxy.txt 中的代理格式为ip:port:user:pass,并且所有代理都在工作。

问题是当我在CURLOPT_PROXYCURLOPT_USERPWD中使用$proxyipport$proxyuserpwd时,curl结果抛出了错误Received HTTP code 407 from proxy after CONNECT。但是,当我用实际的ip:portuser:pass 替换这些变量时,它正常工作。我还做了一个echo$proxyipport$proxyuserpwd,它向我展示了准确的ip:portuser:pass

谁能告诉我我做错了什么以及如何解决这个问题? 提前致谢!

【问题讨论】:

    标签: php curl proxy


    【解决方案1】:

    很可能是换行符\n,所以试试:

    $proxylist = file('proxy.txt', FILE_IGNORE_NEW_LINES);
    

    如果是其他隐藏字符或 Windows 格式文件,则可以使用 \r 尝试:

    $pinfos = explode(':', $random_proxy);
    $pinfos = array_map('trim', $pinfos);
    

    【讨论】:

    • 谢谢!列表中每个代理的末尾都有一个隐藏字符(空格?),trim() 函数解决了这个问题。
    猜你喜欢
    • 2017-08-04
    • 2017-06-25
    • 2015-10-13
    • 1970-01-01
    • 1970-01-01
    • 2014-09-14
    • 1970-01-01
    • 1970-01-01
    • 2014-10-10
    相关资源
    最近更新 更多