Foros del Web » Programando para Internet » PHP »

PHP curl login desde el navegador

Estas en el tema de PHP curl login desde el navegador en el foro de PHP en Foros del Web. Hola, Soy nuevo en curl, y he conseguido el siguiente código que se conecta a facebook i inicia sesion con un usuario y contraseña, hasta ...
  #1 (permalink)  
Antiguo 20/11/2011, 06:38
 
Fecha de Ingreso: noviembre-2011
Mensajes: 4
Antigüedad: 12 años, 4 meses
Puntos: 0
PHP curl login desde el navegador

Hola,

Soy nuevo en curl, y he conseguido el siguiente código que se conecta a facebook i inicia sesion con un usuario y contraseña, hasta aquí bien.

El problema es que una vez en la pagina principal, si intento navegar por facebook me pide que inicie session. Es posible iniciar sesión usando CURL y después navegar usando el navegador web?? Puede que deba pasar la cookie de session al navegador?

Grácias por la ayuda!

<?php

/* EDIT EMAIL AND PASSWORD */
$EMAIL = "xxxx";
$PASSWORD = "xxxx";
$cookie="";

$a = cURL("https://login.facebook.com/login.php?login_attempt=1",true,null,"email=$EMAIL &pass=$PASSWORD");
preg_match('%Set-Cookie: ([^;]+);%',$a,$b);
$c = cURL("https://login.facebook.com/login.php?login_attempt=1",true,$b[1],"email=$EMAIL&pass=$PASSWORD");
preg_match_all('%Set-Cookie: ([^;]+);%',$c,$d);

for($i=0;$i<count($d[0]);$i++)
$cookie.=$d[1][$i].";";

/*
NOW TO JUST OPEN ANOTHER URL EDIT THE FIRST ARGUMENT OF THE FOLLOWING FUNCTION.
TO SEND SOME DATA EDIT THE LAST ARGUMENT.
*/
echo cURL("http://www.facebook.com/",null,$cookie,null);

function cURL($url, $header=NULL, $cookie=NULL, $p=NULL)
{
$ch = curl_init();
curl_setopt($ch, CURLOPT_HEADER, $header);
curl_setopt($ch, CURLOPT_NOBODY, $header);
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_COOKIE, $cookie);
curl_setopt($ch, CURLOPT_USERAGENT, $_SERVER['HTTP_USER_AGENT']);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);

if ($p) {
curl_setopt($ch, CURLOPT_CUSTOMREQUEST, "POST");
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $p);
}
$result = curl_exec($ch);

if ($result) {
return $result;
} else {
return curl_error($ch);
}
curl_close($ch);
}

?>
  #2 (permalink)  
Antiguo 20/11/2011, 07:54
Avatar de chwc  
Fecha de Ingreso: julio-2008
Ubicación: Buenos Aires ! :D
Mensajes: 814
Antigüedad: 15 años, 7 meses
Puntos: 103
Respuesta: PHP curl login desde el navegador

mira, seguramente facebook tiene muchos controles anti-bot, y habras caido en uno, te recomendaria que envies un user agent de un telefono celular, asi te devuelve la pagina movil que es mucho menos pesada y tiene un acceso mas facil a la informacion si es eso lo que quieres
Saludos
  #3 (permalink)  
Antiguo 21/11/2011, 07:56
Avatar de abimaelrc
Colaborador
 
Fecha de Ingreso: mayo-2009
Ubicación: En el planeta de Puerto Rico
Mensajes: 14.734
Antigüedad: 14 años, 10 meses
Puntos: 1517
Respuesta: PHP curl login desde el navegador

Debes entender mejor el proceso que hace PHP para que entiendas que es lo que debes hacer.

Lo primero que debes acordarte es que PHP corre en el servidor (específicamente servidor web), cURL hace una petición del lado del servidor como si fuera una persona que lo ha hecho. Las cookies no se graban en el navegador del usuario porque el proceso se hizo del lado del servidor y si trataras de user setcookies lo que va a hacer es grabar las cookies usando el nombre y dominio de donde estás usando el código de PHP. Por lo que no se puede hacer lo que estás planteando de hacer la petición con cURL y luego continuar el proceso en el navegador. Es más los enlaces, las imagenes y los archivos javascript no deben funcionar correctamente ya que cURL muestra como si estuvieras navegando en el servidor web que estés usando al momento (claro está si es que la página no ha usado url completas, incluyendo su nombre y dominio). La razón es que PHP solo toma los datos de autenticación y hace la petición con los mismos pero los datos del cookie solo van a estar disponibles durante esa petición. Una forma de hacer que PHP pueda continuar es almacenar los datos del cookie en un archivo plano. ¿Cómo hacerlo? Puedes pasar por el área de aportes de este foro, hay un tema que da muchos detalles de lo que puedes lograr y con muchos ejemplos.
__________________
Verifica antes de preguntar.
Los verdaderos amigos se hieren con la verdad, para no perderlos con la mentira. - Eugenio Maria de Hostos

Etiquetas: curl, browsers
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 14:27.