发布日期:2018-03-26
如何通过代理服务器使用CURL工具?+ 查看更多
如何通过代理服务器使用CURL工具?
+ 查看更多
发布日期:2018-03-10 16:38
分类:PHP
浏览次数:340
我正在想通过设置curl使用代理服务器,网址是一个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 ' '; 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_page = curl_exec($ch); curl_close($ch); echo $curl_scraped_page; ?>
回答
这是去掉你代码里的那些bug以后的一个正确版本:$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的设置注释掉。
如果你不想用代理了,只要把它设置为null就行了。
你可以问我任何问题,因为我天天和cURL打交道。