Un naúfrago en una isla


Como logarse a una cuenta de Google con PHP y cURL (II)

Hace ya varios meses que posteé una forma de logarse a una cuenta de Google usando cURL. Yo particularmente lo usaba para obtener ciertos datos de Google Analytics y procesarlos. Pero hace algunos días este script dejó misteriosamente de funcionar y, tras una ardua búsqueda en Internet, descubrí que el problema estaba en un nuevo parámetro que hay que enviar por POST a la hora de logarse. El parámetro se llama GALX y el problema está en que su valor no es estático sino que se genera dinámicamente cada vez que se accede a la página de login.

Pero “a grandes males, grandes remedios”. Así que la solución está en extraer el valor de GALX (que se almacena en un input type hidden) del formulario de login y enviarlo como parametro a través de cURL. Como una imagen valen más que mil palabras os dejo el script tal y como debería quedar para logarse sin problemas

<?
//authentication

$churl ="https://www.google.com/accounts/ServiceLoginBoxAuth";
$ch = curl_init();
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.25 Safari/532.0");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, 'cookie.txt');
curl_setopt($ch, CURLOPT_URL, $churl);
$response=curl_exec ($ch);

$pattern = '/name="GALX"\s+value="(.+)"/';
preg_match($pattern, $response, $matches);
$GALX=$matches[1];

$churl ="https://www.google.com/accounts/ServiceLoginBoxAuth";
$username=urlencode('usuario@dominio.com'); //por lo general será usuario@gmail.com
$password="tupassword";
$postdata="GALX=$GALX&Email=$username&Passwd=$password";

curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_URL, $churl);
curl_exec ($ch);

//end authentication
?>
  • Share/Bookmark

Como logarse a una cuenta de Google con PHP y Curl

NOTA: Este script ha dejado de funcionar. En la siguiente dirección encontrarás el script modificado para que funcione correctamente

http://www.irishsquare.com/blog/2009/10/13/como-logarse-a-una-cuenta-de-google-con-php-y-curl-ii/

Esta sería la parte para logarse:

<?
//authentication
$churl ="https://www.google.com/accounts/ServiceLoginBoxAuth";
$username=urlencode('usuario@dominio.com'); //por lo general será usuario@gmail.com
$password="tupassword";
$postdata="Email=$username&Passwd=$password";

$ch = curl_init();
curl_setopt($ch, CURLOPT_URL, $churl);
curl_setopt ($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($ch, CURLOPT_POST, TRUE);
curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata);
curl_setopt($ch, CURLOPT_HEADER, FALSE);
curl_setopt($ch, CURLOPT_USERAGENT, "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US) AppleWebKit/532.0 (KHTML, like Gecko) Chrome/3.0.195.25 Safari/532.0");
curl_setopt ($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_COOKIEJAR, "cookie.txt");
curl_exec ($ch);
//end authentication
?>

Después ya tan sólo tendríamos que conectarnos a través de Curl a la página de Google que deseásemos: Gmail, Google analytics…. Así de sencillo :)

  • Share/Bookmark