【发布时间】:2011-07-09 20:57:12
【问题描述】:
我希望将 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 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;
?>
目前在 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;
?>
【问题讨论】:
-
第 12 行缺少分号
-
另外,您需要将 $url = '$_POST[1]' 更改为 $url = $_POST[1] - 否则,$url 将是一个字符串,而不是您想要的 URL跨度>
-
另外,$_POST 数组中的键是一个字符串而不是整数,所以你希望它写成
$_POST['1'] -
pelican-cement.com 上的表单有名为“firstname”和“lastname”的输入,但没有一个名为“1”的输入。
-
@user586011:请将您的解决方案添加为下面的答案并接受它。不要把解决方案放在问题中,那样效果不好。