Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

paulo.chagas

Login com cURL

Recommended Posts

Boa tarde pessoal, estou tentando efetuar um login com curl, mas não funciona, eu precisaria ajustar algo no meu php por ser https? Ou é a mesma coisa que http nesse meu caso?

$postfields = array('username' => 'aaaaaaa','password' => 'bbbbbbb'); $pagina = 'https://apps.correios.com.br/cas/login'; $ch = curl_init();curl_setopt($ch, CURLOPT_URL, $pagina);curl_setopt($ch, CURLOPT_POST, 1);curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);$resultado = curl_exec($ch); echo $resultado; curl_close();

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara uma vez eu precisei fazer, faz muito tempo eu acabei conseguindo, mas não lembro exatamente o que foi, mas lembro que eu sempre pesquisava nesse blog aqui:

http://blog.thiagobelem.net/login-automatico-em-php-usando-curl

Abraço

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara uma vez eu precisei fazer, faz muito tempo eu acabei conseguindo, mas não lembro exatamente o que foi, mas lembro que eu sempre pesquisava nesse blog aqui:

http://blog.thiagobelem.net/login-automatico-em-php-usando-curl

Abraço

Valeu pela dica Marcello, mas mesmo assim não logou, estou pesquisando pra ver se há alguma diferença de http para https no curl...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não consegui nada ainda gente, tentei isso tbm e nada...alguém tem uma idéia? Acho que é por ser https que não gira a coisa

$content = http_build_query(array(    'username' => 'xxxx',    'password'   => 'zzzz',));  $context = stream_context_create(array(    'https' => array(        'method'  => 'POST',        'content' => $content,    )));  $result = file_get_contents('https://apps.correios.com.br/cas/login', null, $context);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho algo bem parecido.

Testa ai:

<?php


$ch = curl_init();
// Define a URL original (do formulário de login)
curl_setopt($ch, CURLOPT_URL, 'http://site.com.br/index.php?ToDo=processLogin'); //repare o GET Sendo passado....
// 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, 'username=josue&password=123456'); //Passamos alguns parametros via POST array(username => '', password => 123456)
// Imita o comportamento patrã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);
// Executa a requisição
$store = curl_exec ($ch);

// Define uma nova URL para ser chamada (após o login)
$id = 2;
curl_setopt($ch, CURLOPT_URL, "http://site.com.br/index.php?ToDo=editProduct&productId=$id");
// Executa a segunda requisição
$content = curl_exec ($ch);

// Encerra o cURL
curl_close ($ch);



// Create DOM from URL or file

$html = str_get_html($content);

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho algo bem parecido.

Testa ai:

<?php


$ch = curl_init();
// Define a URL original (do formulário de login)
curl_setopt($ch, CURLOPT_URL, 'http://site.com.br/index.php?ToDo=processLogin'); //repare o GET Sendo passado....
// 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, 'username=josue&password=123456'); //Passamos alguns parametros via POST array(username => '', password => 123456)
// Imita o comportamento patrã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);
// Executa a requisição
$store = curl_exec ($ch);

// Define uma nova URL para ser chamada (após o login)
$id = 2;
curl_setopt($ch, CURLOPT_URL, "http://site.com.br/index.php?ToDo=editProduct&productId=$id");
// Executa a segunda requisição
$content = curl_exec ($ch);

// Encerra o cURL
curl_close ($ch);



// Create DOM from URL or file

$html = str_get_html($content);

Pois tentei Gabriel, to achando que por set htpps, deve ser algo diferente que tem que ser feito

Compartilhar este post


Link para o post
Compartilhar em outros sites

Monitora a aba NetWork ( Google Chrome -> ' Ctrl + Shift + i , Aba NetWork)

E veja se é passado algum parametro 'secreto'.

O meu exemplo acima o sistema obrigava passar um Get (ToDo=processLogin), sem ele não funcionava.

Enfim da olhada como a requisição é enviada as vezes passou algo batido alem de login/senha (token por exemplo...)

Mas sobre ser HTTPS, tenta a resposta do meu chara.

Na propria documentação do php tem alguns exemplos nos comentarios utilizando Curl + SSL/HTTPS

http://www.php.net/manual/pt_BR/ref.curl.php

Boa sorte broo.

Ps: Se conseguir alguma coisa posta ai tmb a resposta fiquei curioso, vira e mexe faço uns spiderzin e nunca me deparei com problema em SSL.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Monitora a aba NetWork ( Google Chrome -> ' Ctrl + Shift + i , Aba NetWork)

E veja se é passado algum parametro 'secreto'.

O meu exemplo acima o sistema obrigava passar um Get (ToDo=processLogin), sem ele não funcionava.

Enfim da olhada como a requisição é enviada as vezes passou algo batido alem de login/senha (token por exemplo...)

Mas sobre ser HTTPS, tenta a resposta do meu chara.

Na propria documentação do php tem alguns exemplos nos comentarios utilizando Curl + SSL/HTTPS

http://www.php.net/manual/pt_BR/ref.curl.php

Boa sorte broo.

Ps: Se conseguir alguma coisa posta ai tmb a resposta fiquei curioso, vira e mexe faço uns spiderzin e nunca me deparei com problema em SSL.

Fala Gabriel, consegui logar sim...assim deu certo

$usuario = 'xxxx';
$senha = 'yyyy';


$url = 'https://apps.correios.com.br/cas/login'; 


$ch = curl_init();
curl_setopt($ch,CURLOPT_RETURNTRANSFER,true);
curl_setopt($ch,CURLOPT_URL,$url);
curl_setopt($ch,CURLOPT_SSL_VERIFYPEER,false);
curl_setopt($ch,CURLOPT_FOLLOWLOCATION,true);
curl_setopt($ch, CURLOPT_COOKIEFILE, 'cookie.txt');
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');


$html_form = curl_exec($ch);


if ($html_form) {
$documento = new DOMDocument;
$documento->loadHTML($html_form);
$inputs = $documento->getElementsByTagName('input');


foreach ($inputs as $input){
$post[$input->getAttribute('name')] = $input->getAttribute('value'); 
}
$post['username'] = $usuario;
$post['password'] = $senha;


curl_setopt($ch,CURLOPT_POST,true);
curl_setopt($ch,CURLOPT_POSTFIELDS,http_build_query($post));
$retorno = curl_exec($ch);
echo $retorno;


}else{
echo curl_error($ch);
}
curl_close($ch);


?>
Agora me deparei com outro problema, depois desse login efetuado, eu tenho que fazer outro post pra outra url...
Aí que o bicho pega, ele loga normalmente e quando tento fazer o post pra segunda url, da erro de usuário não autenticado, como se perdesse a sessão.
Estou pesquisando bastante sobre cookies do cURL, mas até agora sem sucesso...
Preciso então aprender como "manter a sessão" com cookie
Se você ou alguém souber como fazer, ajuda aí por favor =)

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.