如何通过代理使用CURL? [英] How to use CURL via a proxy?

查看:105
本文介绍了如何通过代理使用CURL?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想设置curl使用代理服务器。 url是由html表单提供的,这并不是一个问题。没有代理它工作正常。我在这个和其他网站上找到了代码,但他们不工作。任何帮助,找到正确的解决方案将不胜感激。我觉得波纹管很近,但我失去了一些东西。非常感谢。



我从这里改编的波纹代码 http:/ /www.webmasterworld.com/forum88/10572.htm ,但它返回第12行上缺少T_VARIABLE的错误消息。

 < ;? 

$ 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通过代理返回没有内容

 <? 

$ 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;
?>

目前已在pelican-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_pa​​ge = curl_exec($ ch);
curl_close($ ch);

echo $ curl_scraped_pa​​ge;
?>


解决方案

这是一个工作版本, / p>

  $ 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_pa​​ge = curl_exec($ ch);
curl_close($ ch);

echo $ curl_scraped_pa​​ge;

我已添加 CURLOPT_PROXYUSERPWD 您的代理需要用户名和密码。
我将 CURLOPT_RETURNTRANSFER 设置为1,以便数据将返回到 $ curl_scraped_pa​​ge 变量。 p>

我删除了第二个额外的 curl_exec($ ch); ,它会停止返回的变量。
我将您的代理IP和端口合并为一个设置。



我也删除了 CURLOPT_HTTPPROXYTUNNEL



如果你不想返回头文件,可以注释 CURLOPT_CUSTOMREQUEST > CURLOPT_HEADER 。



要禁用代理,只需将其设置为null。

  curl_setopt($ ch,CURLOPT_PROXY,null); 

任何问题都可以问,我使用 cURL 每天。


I am looking to set curl to use a proxy server. The url is provided by an html form, which has not been a problem. Without the proxy it works fine. I have found code on this and other sites, but they do not work. Any help in finding the correct solution would be much appreciated. I feel that the bellow are close, but that I am missing something. Thank You.

The bellow code I adapted from here http://www.webmasterworld.com/forum88/10572.htm but it returns an error message about a missing T_VARIABLE on line 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);
?>

The bellow is from 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;
?>

is currently live on pelican-cement.com but also does not work.

UPDATE: Thank you for all your help, I made the above changes. Now it only returns a blank screen.

<?

$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;
?> 

解决方案

Here is a working version with your bugs removed.

$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;

I have added CURLOPT_PROXYUSERPWD in case any of your proxies require a user name and password. I set CURLOPT_RETURNTRANSFER to 1, so that the data will be returned to $curl_scraped_page variable.

I removed a second extra curl_exec($ch); which would stop the variable being returned. I consolidated your proxy IP and port into one setting.

I also removed CURLOPT_HTTPPROXYTUNNEL and CURLOPT_CUSTOMREQUEST as it was the default.

If you don't want the headers returned, comment out CURLOPT_HEADER.

To disable the proxy simply set it to null.

curl_setopt($ch, CURLOPT_PROXY, null);

Any questions feel free to ask, I work with cURL every day.

这篇关于如何通过代理使用CURL?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆