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

Hola, me llamo Jesús y soy googlecohólico

Ayer por la mañana Google dejó de funcionar, bueno, mejor dicho, dejó de funcionar correctamente. Y es que, como explican en el blog oficial de Google, un error humano hizo que todos los resultados de la búsqueda fueran catalogados de “peligrosos” y no se podía acceder a ellos con un simple click.

Pues durante esa hora estuve completamente bloqueado, es tal mi dependencia que ni siquiera pensé en usar otro buscador como Live Search o Yahoo.

Y lo cierto es que esto ya me lo tenía que haber olido cuando hace tiempo que dejé de meter las urls en la barra de direcciones, directamente meto el nombre de la web en el buscador de Google. Ya ni siquiera me preocupo de escribir las palabras bien en inglés, dejo que Google me las corrija (terrible error por mi parte) y lo primero que hago cuando reinstalo por completo un ordenador es instalar la barra de herramientas de Google …y así un larguísimo etcétera …

Si os interesa hacer terapias de grupo ya sabéis donde encontrarme :P

  • 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