Using proxy, using curl, working on localhost but not on server
I setup a proxy on one of my vps using squid, then i made this proxy script and it works fine on wamp, on localhost but when i upload it to my server its not working and I cannot seem to figure out why.
$proxy = "xx.xx.xxx.xx:3128";
$proxy = explode(':', $proxy);
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);开发者_运维百科
curl_setopt($ch, CURLOPT_PROXY, $proxy[0]);
curl_setopt($ch, CURLOPT_PROXYPORT, $proxy[1]);
curl_setopt($ch, CURLOPT_USERAGENT, 'Googlebot/1.0 (googlebot@googlebot.com http://googlebot.com/)');
curl_setopt($ch, CURLOPT_ENCODING, "UTF-8" );
curl_setopt($ch, CURLOPT_REFERER, "http://tamilwin.com/");
curl_setopt($ch, CURLOPT_AUTOREFERER, true);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
$result = curl_exec ($ch);
thanks in advance.
Update
the error i get on my server is cURL error number:7cURL error:couldn't connect to host
The proxy host may be not valid. try telnet xx.xx.xxx.xx 3128 (from your local PC) Can you connect to it successfully?
I'm having similar problems, works great on localhost but not on my server. I wrote a detection script which lets you know if it works or not.
<?php
//$url = 'https://www.google.com';
// to check your proxy
$url = 'http://whatismyipaddress.com/';
$proxy = 'x.x.x.x:3128';
// create curl resource
$ch = curl_init();
// set options
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true ); // read more about HTTPS http://stackoverflow.com/questions/31162706/how-to-scrape-a-ssl-or-https-url/31164409#31164409
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 2);
curl_setopt($ch, CURLOPT_CAINFO, file_exists('\cacert.pem'));
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, $proxy);
curl_setopt($ch, CURLOPT_USERAGENT,'Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.13) Gecko/20080311 Firefox/2.0.0.13');
// $output contains the output string
$output = curl_exec($ch);
// close curl resource to free up system resources
curl_close($ch);
//echo $output;
$check = stripos($output,'</html>');
// if there was a match in the stripos (string postion) function echo that the
//proxy got the data and works
if($check > 0)
{
echo $proxy." Works!
";
// or else echo it doesn't work
}else{
echo $proxy." Is Dead!
";
}
?>
精彩评论