首页 > 解决方案 > PHP cURL 在 CONNECT 后从代理收到 HTTP 代码 407

问题描述

我有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.txtip:port:user:pass并且所有代理都在工作。

问题是当我在 and 中使用$proxyipportand时,curl 结果抛出了错误。但是,当我用实际,替换这些变量时,它正常工作。我也做了一个of and它向我展示了准确和预期的结果。$proxyuserpwdCURLOPT_PROXYCURLOPT_USERPWDReceived HTTP code 407 from proxy after CONNECTip:portuser:passecho$proxyipport$proxyuserpwdip:portuser:pass

有人可以告诉我做错了什么以及如何解决吗?提前致谢!

标签: phpcurlproxy

解决方案


很可能是 newline \n,所以尝试:

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

如果它是另一个隐藏字符或 Windows 格式文件,那么\r您可以尝试:

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

推荐阅读