Iniciar sesión con cURL

  • Autor Usuario eliminado 44716
  • Fecha de inicio
U

Usuario eliminado 44716

Hola a todos, me gustaría saber como puedo llegar a hacer un inicio de sesión con cURL ya que lo necesito hacer para el admin de Prestashop y no consigo hacerlo, no veo ninguna guía decente si alguien pudiera decirme los curl_setopt que debo poner se lo agradecería mucho. Esto es lo que había puesto:

Insertar CODE, HTML o PHP:
	$input = array();
	$input['email'] = "";
	$input['passwd'] = "";

	$handler = curl_init(''); 
	
	curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($handler, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($handler, CURLOPT_COOKIESESSION, true);
	curl_setopt($handler, CURLOPT_POST, true);
	curl_setopt($handler, CURLOPT_POSTFIELDS, $input);

	$response = curl_exec($handler);
	curl_close($handler);

Gracias por leerme y saludos!
 

Cicklow

Admin
Dseda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
1.101
Hola a todos, me gustaría saber como puedo llegar a hacer un inicio de sesión con cURL ya que lo necesito hacer para el admin de Prestashop y no consigo hacerlo, no veo ninguna guía decente si alguien pudiera decirme los curl_setopt que debo poner se lo agradecería mucho. Esto es lo que había puesto:

Insertar CODE, HTML o PHP:
	$input = array();
	$input['email'] = "";
	$input['passwd'] = "";

	$handler = curl_init(''); 
	
	curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($handler, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($handler, CURLOPT_COOKIESESSION, true);
	curl_setopt($handler, CURLOPT_POST, true);
	curl_setopt($handler, CURLOPT_POSTFIELDS, $input);

	$response = curl_exec($handler);
	curl_close($handler);

Gracias por leerme y saludos!
Faltan las cookies:
PHP:
		curl_setopt($handler, CURLOPT_COOKIEFILE, "cokkie.txt");
		curl_setopt($handler, CURLOPT_COOKIEJAR, "cokkie.txt");

Tmb podrias indicar el referer, el user agent... te recomiendo usar charles proxy y ver todos los datos que se envian
 

misterpirata

Delta
Verificación en dos pasos activada
Verificado por Whatsapp
Desde
9 Dic 2011
Mensajes
514
mira este codigo lo hise yo para hacer un login a una cierta pagina lo que hise fue averiguar las variables post detras de la user y la pass como la miras? solo abre el codigo fuente y miras la form la variables de esa web en los name="" eran usuari y contrasenia y la que lo enviaba era accion logueo
PHP:
$cookie_file = "/tmp/".time();
	   $useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8"; 
    $c = curl_init("http://xxxxxx/registro"); 

    curl_setopt($c, CURLOPT_USERAGENT, $useragent); 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($c, CURLOPT_POST,true);
        curl_setopt($c, CURLOPT_POSTFIELDS, "usuari=cccccc&contrasenya=111111&accion=logueo");
	
curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_file);
		 
    $load1 = curl_exec($c); 
   curl_close ($c);
 

Cicklow

Admin
Dseda
Verificado
Verificación en dos pasos activada
Verificado por Whatsapp
¡Ha verificado su Paypal!
Suscripción a IA
Desde
30 May 2011
Mensajes
1.101
mira este codigo lo hise yo para hacer un login a una cierta pagina lo que hise fue averiguar las variables post detras de la user y la pass como la miras? solo abre el codigo fuente y miras la form la variables de esa web en los name="" eran usuari y contrasenia y la que lo enviaba era accion logueo
PHP:
$cookie_file = "/tmp/".time();
	   $useragent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; es-ES; rv:1.9.2.8) Gecko/20100722 Firefox/3.6.8"; 
    $c = curl_init("http://xxxxxx/registro"); 

    curl_setopt($c, CURLOPT_USERAGENT, $useragent); 
    curl_setopt($c, CURLOPT_RETURNTRANSFER, 1); 
     curl_setopt($c, CURLOPT_POST,true);
        curl_setopt($c, CURLOPT_POSTFIELDS, "usuari=cccccc&contrasenya=111111&accion=logueo");
	
curl_setopt($c, CURLOPT_COOKIEFILE, $cookie_file);
curl_setopt($c, CURLOPT_COOKIEJAR, $cookie_file);
		 
    $load1 = curl_exec($c); 
   curl_close ($c);

por eso te digo... usa charles proxy y mira que envia el navegador... o algun plugin para ver que envia el navegador...
 
U

Usuario eliminado 44716

Hola, siguiendo un post que está más o menos bien sobre como iniciar sesión me queda así:

PHP:
	$input = array("email" => "", "passwd" => "");
	$url = ""

	foreach($input as $name=>$value){
		$elements[] = "{$name}=".urlencode($value);
	}

	$handler = curl_init(); 

	curl_setopt($handler, CURLOPT_URL, $url)
	curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($handler, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($handler, CURLOPT_COOKIESESSION, true);
	curl_setopt($handler, CURLOPT_POST, true);
	curl_setopt($handler, CURLOPT_FRESH_CONNECT, true);
	curl_setopt($handler, CURLOPT_POSTFIELDS, $elements);
	curl_setopt($handler, CURLOPT_COOKIEJAR,"cookie.txt");
	curl_setopt($handler, CURLOPT_COOKIEFILE,"cookie.txt");

	$response = curl_exec($handler);
	curl_close($handler);

	print $response;

Pero me manda este error al lanzarlo:

Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in C:\xampp\htdocs\login.php on line 7

Muchas gracias por atenderme.


EDITO:


El error ese era por un punto y coma ahora me da este:

Parse error: syntax error, unexpected 'curl_setopt' (T_STRING) in C:\xampp\htdocs\login.php on line 14

Refiriendose al 2º curl_setopt

EDITO 2:

El otro setopt tampoco tenía ";" xD, ahora simplemente no hace login igual que al principio.

---------- Post agregado el 29-jun-2013 hora: 00:27 ----------

Mi problema es que no puedo incluir el useragent (CREO), ya que este script se ejecuta con un cron job entonces cual sería el useragent (?)
 
Última edición por un moderador:

Alan98

Beta
Social Media
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
12 Dic 2012
Mensajes
118
Hola, siguiendo un post que está más o menos bien sobre como iniciar sesión me queda así:

PHP:
	$input = array("email" => "", "passwd" => "");
	$url = ""

	foreach($input as $name=>$value){
		$elements[] = "{$name}=".urlencode($value);
	}

	$handler = curl_init(); 

	curl_setopt($handler, CURLOPT_URL, $url)
	curl_setopt($handler, CURLOPT_RETURNTRANSFER, true);
	curl_setopt($handler, CURLOPT_FOLLOWLOCATION, true);
	curl_setopt($handler, CURLOPT_COOKIESESSION, true);
	curl_setopt($handler, CURLOPT_POST, true);
	curl_setopt($handler, CURLOPT_FRESH_CONNECT, true);
	curl_setopt($handler, CURLOPT_POSTFIELDS, $elements);
	curl_setopt($handler, CURLOPT_COOKIEJAR,"cookie.txt");
	curl_setopt($handler, CURLOPT_COOKIEFILE,"cookie.txt");

	$response = curl_exec($handler);
	curl_close($handler);

	print $response;

Pero me manda este error al lanzarlo:

Parse error: syntax error, unexpected 'foreach' (T_FOREACH) in C:\xampp\htdocs\login.php on line 7

Muchas gracias por atenderme.


EDITO:


El error ese era por un punto y coma ahora me da este:

Parse error: syntax error, unexpected 'curl_setopt' (T_STRING) in C:\xampp\htdocs\login.php on line 14

Refiriendose al 2º curl_setopt

EDITO 2:

El otro setopt tampoco tenía ";" xD, ahora simplemente no hace login igual que al principio.

---------- Post agregado el 29-jun-2013 hora: 00:27 ----------

Mi problema es que no puedo incluir el useragent (CREO), ya que este script se ejecuta con un cron job entonces cual sería el useragent (?)

No influye en nada que se ejecute como cron job, ya que el uagent lo estás especificando tú, no se toma automáticamente. Yo uso este:
PHP:
curl_setopt($handler, CURLOPT_USERAGENT, 'Mozilla/5.0 (Windows NT 6.1; WOW64; rv:21.0) Gecko/20100101 Firefox/21.0');
Si quieres puedes poner el tuyo. Para averiguarlo pon un echo $_SERVER['HTTP_USER_AGENT']; o tómalo de aquí: Your user agent » Información básica
Saludos
 

Roodaka

Beta
Programador
¡Usuario con pocos negocios! ¡Utiliza siempre saldo de Forobeta!
Desde
8 Feb 2013
Mensajes
121
Por favor, ten en cuenta 📝 que si deseas hacer un trato 🤝 con este usuario, está baneado 🔒.
Buenas, paso a dejar una recomendación; utilicen curl_setopt_array(), al tratarse de un Cronjob necesitarán optimizar (ésto hace que se llame a una sóla función con una sola variable, un arreglo bidimensional, en vez de todo ese choclo innecesario)

Insertar CODE, HTML o PHP:
$handler = curl_init(); 
curl_setopt_array($handler, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true,
CURLOPT_FOLLOWLOCATION => true,
CURLOPT_COOKIESESSION => true,
CURLOPT_POST => true,
CURLOPT_FRESH_CONNECT => true,
CURLOPT_POSTFIELDS => $elements,
CURLOPT_COOKIEJAR => "cookie.txt",
CURLOPT_COOKIEFILE => "cookie.txt"));
$response = curl_exec($handler);

les dejo el link a la función en php.net

Un saludo.
 
Arriba