如何通过代理使用CURL?
我正在设置curl以使用代理服务器。该网址是由html表单提供的,这并不是问题。没有代理,它工作正常。我在这个网站和其他网站上找到了代码,但它们不起作用。任何帮助找到正确的解决方案将不胜感激。我觉得波纹管很接近,但我错过了一些东西。谢谢。如何通过代理使用CURL?
波纹管代码我适应从这里http://www.webmasterworld.com/forum88/10572.htm但它在线返回有关失踪T_VARIABLE的错误消息12
<?
$url = '$_POST[1]';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1)
curl_exec ($ch);
$curl_info = curl_getinfo($ch);
curl_close($ch);
echo '<br />';
print_r($curl_info);
?>
波纹管是从curl through proxy returns no content
<?
$proxy = "66.96.200.39:80";
$proxy = explode(':', $proxy);
$url = "$_POST[1]";
$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_HEADER, 1);
$exec = curl_exec($ch);
echo curl_error($ch);
print_r(curl_getinfo($ch));
echo $exec;
?>
目前住在鹈鹕-cement.com,但也不起作用。
更新: 感谢您的帮助,我做了上述变更。现在它只返回一个空白屏幕。
<?
$url = $_POST['1'];
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, 0);
curl_setopt($ch, CURLOPT_PROXY, '66.96.200.39:80');
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0);
curl_setopt($ch, CURLOPT_CUSTOMREQUEST,'GET');
curl_setopt ($ch, CURLOPT_HEADER, 1);
curl_exec ($ch);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
echo $curl_scraped_page;
?>
这是一个工作版本,您的错误被删除。
$url = 'http://dynupdate.no-ip.com/ip.php';
$proxy = '127.0.0.1:8888';
//$proxyauth = 'user:password';
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL,$url);
curl_setopt($ch, CURLOPT_PROXY, $proxy);
//curl_setopt($ch, CURLOPT_PROXYUSERPWD, $proxyauth);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_HEADER, 1);
$curl_scraped_page = curl_exec($ch);
curl_close($ch);
echo $curl_scraped_page;
我已经加入CURLOPT_PROXYUSERPWD
在任何情况下,你的代理需要用户名和密码。 我把CURLOPT_RETURNTRANSFER
设为1,这样数据将会返回到$curl_scraped_page
变量。
我删除了第二个额外的curl_exec($ch);
这将停止返回的变量。 我将您的代理IP和端口合并为一个设置。
我也删除了CURLOPT_HTTPPROXYTUNNEL
和CURLOPT_CUSTOMREQUEST
,因为它是默认值。
如果您不想返回标题,请注释掉CURLOPT_HEADER
。
要禁用代理,只需将其设置为空。
curl_setopt($ch, CURLOPT_PROXY, null);
任何问题随时问,我每天与cURL
一起工作。
很高兴知道您每天使用CURL。我尝试设置一个袜子代理,它在我的本地机器上工作,但不能在我的Linux专用服务器上工作。任何想法 ? – 2013-01-31 09:44:20
@coding_idiot出于安全原因,大多数网络主机都阻止不是80或443的端口。 – sousdev 2013-09-27 14:39:15
虽然我已经解决了。我相信其他人会从中受益。 – 2013-09-27 19:03:27
这里是一个很好的测试功能,我用我的项目有详细的自我解释的意见
有些时候不是80端口是由服务器防火墙阻挡,似乎工作的代码多次罚款本地主机,但不在服务器上
function get_page($url){
global $proxy;
$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $url);
//curl_setopt($ch, CURLOPT_PROXY, $proxy);
curl_setopt($ch, CURLOPT_HEADER, 0); // return headers 0 no 1 yes
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); // return page 1:yes
curl_setopt($ch, CURLOPT_TIMEOUT, 200); // http request timeout 20 seconds
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, true); // Follow redirects, need this if the url changes
curl_setopt($ch, CURLOPT_MAXREDIRS, 2); //if http server gives redirection responce
curl_setopt($ch, CURLOPT_USERAGENT,
"Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.7) Gecko/20070914 Firefox/2.0.0.7");
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookies.txt"); // cookies storage/here the changes have been made
curl_setopt($ch, CURLOPT_COOKIEFILE, "cookies.txt");
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false); // false for https
curl_setopt($ch, CURLOPT_ENCODING, "gzip"); // the page encoding
$data = curl_exec($ch); // execute the http request
curl_close($ch); // close the connection
return $data;
}
这帮了我:curl_setopt($ ch,CURLOPT_SSL_VERIFYPEER,false); // https为 – villamejia 2016-12-22 22:11:17
你缺少第12行 – 2011-03-06 16:56:30
还,您需要更改$网址分号= '$ _ POST [1]' 到$ URL = $ _ POST [1] - 否则,$ URL将是一个字符串,而不是你想要的网址 – yoavmatchulsky 2011-03-06 17:06:21
此外,$ _POST数组中的键是一个字符串,不是一个整数,所以你希望它说'$ _POST ['1']' – fiiv 2011-03-06 17:20:24