I have a php curl
with proxy problem.
Below is my code:
JavaScript
x
<?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;
?>
The format of proxies in proxy.txt
is ip:port:user:pass
and all proxies are working.
The problem is when I used $proxyipport
and $proxyuserpwd
in CURLOPT_PROXY
and CURLOPT_USERPWD
, the curl result threw the error Received HTTP code 407 from proxy after CONNECT
. However, when I replaced those variables with actual ip:port
, user:pass
, it worked as normal. I also did an echo
of $proxyipport
and $proxyuserpwd
and it showed me the exact ip:port
and user:pass
as expected.
Can someone please tell what I did wrong and how to fix that? Thanks in advance!
Advertisement
Answer
Most likely it is the newline n
, so try:
JavaScript
$proxylist = file('proxy.txt', FILE_IGNORE_NEW_LINES);
If it is another hidden character(s) or a Windows format file then with r
you can try:
JavaScript
$pinfos = explode(':', $random_proxy);
$pinfos = array_map('trim', $pinfos);