Como utilizar a CURL através de um procurador?
Estou à procura de definir o enrolar para usar um servidor proxy. A url é fornecida por um formulário html, o que não tem sido um problema. Sem o proxy, funciona bem. Encontrei código neste e noutros sites, mas eles não funcionam. Qualquer ajuda para encontrar a solução correcta seria muito apreciada. Sinto que o fole está perto, mas que me está a faltar algo. Obrigado.
O código abaixo adaptei a partir daqui http://www.webmasterworld.com/forum88/10572.htm mas devolve uma mensagem de erro sobre um T_VARIABLE em falta na linha 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);
?>
O abaixo indicado é de https://stackoverflow.com/questions/4802816/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;
?>
está actualmente a viver em pelican-cement.com mas também não funciona.
ACTUALIZAR: Obrigado por toda a vossa ajuda, fiz as alterações acima referidas. Agora só devolve um ecrã em branco.
<?
$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;
?>
Aqui está uma versão funcional com os seus bugs removidos.
Adicionei
CURLOPT_PROXYUSERPWD
no caso de qualquer um dos vossos procuradores requerer um nome de utilizador e uma palavra-passe. DefiniCURLOPT_RETURNTRANSFER
para 1, para que os dados sejam devolvidos à variável$curl_scraped_page
.Removi um segundo extra
curl_exec($ch);
que impediria que a variável fosse devolvida. Consolidei o seu IP de procuração e a porta numa só configuração.Também removi
CURLOPT_HTTPPROXYTUNNEL
eCURLOPT_CUSTOMREQUEST
como era o padrão.Se não'não quer que os cabeçalhos sejam devolvidos, comente
CURLOPT_HEADER
.Para desactivar o procurador, basta que o coloque a zero.
Qualquer pergunta pode ser feita, eu trabalho diariamente com a 'cURL'.
Expliquei a utilização de várias opções CURL necessárias para CURL PROXY.
Aqui está uma função bem testada que utilizei para os meus projectos com comentários auto-explicativos detalhados
Há muitas vezes em que as portas além das 80 são bloqueadas pela firewall do servidor, pelo que o código parece estar a funcionar bem no localhost, mas não no servidor