cURL + Proxy [AJUDA]

326 views
Skip to first unread message

Jeovane Reges

unread,
Oct 10, 2010, 10:42:44 PM10/10/10
to PHP Avançado
Bom galera eu gostaria de saber como que eu faço para se conectar em
meu servidor usando cURL + Proxy.

Somente com cURL eu consigo me logar sem nenhum problema, mais eu
gostaria de me logar com Proxy e dessa forma fazer com que apareça
apenas o IP do servidor.

Somente com cURL uso o seguinte código abaixo:

----------------------------------------------------------------------------------------
// Inicia o cURL
$ch = curl_init();

// Define a URL original (do formulário de login)
curl_setopt($ch, CURLOPT_URL, 'http://www.meusite.com.br/login.php');

// Cookie Session
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);

// Habilita o protocolo POST
curl_setopt ($ch, CURLOPT_POST, 1);

// Define os parâmetros que serão enviados (usuário e senha por
exemplo)
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'email='.$login.'&senha='.
$passwd.'');

// Imita o comportamento padrão dos navegadores: manipular cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

// Define o tipo de transferência (Padrão: 1)
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

//tempo limite de conexao
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);

// Executa a requisição
$store = curl_exec ($ch);

// Define uma nova URL para ser chamada (após o login)
curl_setopt($ch, CURLOPT_URL, "www.meusite.com.br/adm.php");

// Executa a segunda requisição
$content = curl_exec ($ch);
// Finaliza Curl
curl_close($ch);
----------------------------------------------------------------------------------------

Como que eu faria para adaptar esse código e me conectar via proxy ?!

Desde de já obrigado pela ajuda de todos.

Émerson Eng.

unread,
Oct 11, 2010, 8:04:21 AM10/11/10
to phpav...@googlegroups.com
            curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
            curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
            curl_setopt($ch, CURLOPT_PROXY, 'host:porta');
            curl_setopt($ch, CURLOPT_PROXYUSERPWD,'usuario:senha');


--
Você recebeu esta mensagem porque está inscrito no Google Groups "PHP Avançado".
Para postar nesse grupo, envie e-mail  phpav...@googlegroups.com
Para cancelar a sua inscrição neste grupo, envie um e-mail para phpavancado...@googlegroups.com
Para mais opções, visitem este grupo em http://groups.google.com.br/group/phpavancado
Tudo sobre php: http://www.phpavancado.net/
Documentação PHP: www.php.net

Jeovane Reges

unread,
Oct 11, 2010, 8:59:02 AM10/11/10
to PHP Avançado
Olá Émerson Eng.

Em que parte do meu código eu iria colocar isso ?! Tinha como você me
indicar ?!

Desde de já obrigado pela ajuda.

Émerson Eng.

unread,
Oct 11, 2010, 9:16:05 AM10/11/10
to phpav...@googlegroups.com
Tem de ser entre o curl_init() e curl_exec();


O teu código ficaria assim:


// Inicia o cURL
$ch = curl_init();

// Define a URL original (do formulário de login)
curl_setopt($ch, CURLOPT_URL, 'http://www.meusite.com.br/login.php');

// Cookie Session
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);

// Habilita o protocolo POST
curl_setopt ($ch, CURLOPT_POST, 1);

// Define os parâmetros que serão enviados (usuário e senha por
exemplo)
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'email='.$login.'&senha='.
$passwd.'');

// Imita o comportamento padrão dos navegadores: manipular cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

// Define o tipo de transferência (Padrão: 1)
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

//tempo limite de conexao
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);


curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXY, 'host:porta');
curl_setopt($ch, CURLOPT_PROXYUSERPWD,'usuario:senha'); /* só use essa linha se houver autentificação no proxy que usarás*/



// Executa a requisição
$store = curl_exec ($ch);

// Define uma nova URL para ser chamada (após o login)
curl_setopt($ch, CURLOPT_URL, "www.meusite.com.br/adm.php");

// Executa a segunda requisição
$content = curl_exec ($ch);
// Finaliza Curl
curl_close($ch);


Adaptando o que voc


--

Jeovane Reges

unread,
Oct 11, 2010, 9:26:41 AM10/11/10
to PHP Avançado
Olá Émerson Eng.

Só não entendi uma coisa, ou não sei se foi erro de digitação, a parte
abaixo fica duas vezes a URL ?! Sendo a segunda com o final login.php
%27

// Define a URL original (do formulário de login)
curl_setopt($ch, CURLOPT_URL, 'http://www.meusite.com.br/
login.php'<http://www.meusite.com.br/login.php%27>);

Obrigado pela ajuda.

Émerson Eng.

unread,
Oct 11, 2010, 9:31:38 AM10/11/10
to phpav...@googlegroups.com
É apenas uma curl_setopt($ch, CURLOPT_URL,...

Mas vc tinha mandado errado antes. Apenas copiei seu codigo e adicionei o exemplo.


Obrigado pela ajuda.

Jeovane Reges

unread,
Oct 11, 2010, 9:58:55 AM10/11/10
to PHP Avançado
Olá Émerson Eng., só mais uma dúvida.

Por exemplo:

Meu servidor proxy tem IP 11.22.333.444:8080

Então independente do local que eu acesse queria saber se na hora de
fazer autenticação o meu IP para o servidor iria aparecer
11.22.333.444:8080 e não o IP de onde eu estivesse acessando.

Essas linhas de comando fazem isso ?!

Émerson Eng.

unread,
Oct 11, 2010, 10:05:03 AM10/11/10
to phpav...@googlegroups.com
Sim, fazem isso.

Jeovane Reges

unread,
Oct 11, 2010, 1:17:06 PM10/11/10
to PHP Avançado
Olá Émerson Eng.

Tentei fazer da forma que você disse, mais o meu IP passou batido, não
pegou o da proxy.

Meu código está da seguinte forma abaixo

// Inicia o cURL
$ch = curl_init();

// Define a URL original (do formulário de login)
curl_setopt($ch, CURLOPT_URL, 'http://www.meusite.com.br/login.php');

// Cookie Session
curl_setopt($ch, CURLOPT_COOKIESESSION, 1);

// Habilita o protocolo POST
curl_setopt ($ch, CURLOPT_POST, 1);

// Define os parâmetros que serão enviados (usuário e senha por
exemplo)
curl_setopt ($ch, CURLOPT_POSTFIELDS, 'email='.$login.'&senha='.
$passwd.'');

// Imita o comportamento padrão dos navegadores: manipular cookies
curl_setopt ($ch, CURLOPT_COOKIEJAR, 'cookie.txt');

// Define o tipo de transferência (Padrão: 1)
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, 1);

//tempo limite de conexao
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 60);
curl_setopt($ch, CURLOPT_TIMEOUT, 60);

curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXY, $meuProxy);

Émerson Eng.

unread,
Oct 11, 2010, 1:20:37 PM10/11/10
to phpav...@googlegroups.com
O codigo a seguir é certo que funciona:

$ch = curl_init($url);

curl_setopt($ch, CURLOPT_PROXYAUTH, CURLAUTH_BASIC);
curl_setopt($ch, CURLOPT_PROXYTYPE, CURLPROXY_HTTP);
curl_setopt($ch, CURLOPT_PROXY, 'host:porta');
curl_setopt($ch, CURLOPT_PROXYUSERPWD,'usuario:senha');
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/4.0");
curl_setopt($ch, CURLOPT_HTTPPROXYTUNNEL, false);
curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 0);
curl_setopt($ch, CURLOPT_LOW_SPEED_TIME, 3);
$data = curl_exec($ch);
if(curl_errno($ch)){
$error = 'curl_error: '.curl_error($ch).'<br>curl_getinfo: '.print_r(curl_getinfo($ch),1).'<br>';
}
curl_close($ch);



Reply all
Reply to author
Forward
0 new messages