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
?>
Tags: CURL, GALX, Google, login, PHP
This entry was posted on Tuesday, October 13th, 2009 at 16:24 and is filed under Informática. You can follow any responses to this entry through the RSS 2.0 feed. RSS 2.0. You can leave a response, or trackback from your own site.
October 13th, 2009 at 16:31
[...] http://www.irishsquare.com/blog/2009/10/13/como-logarse-a-una-cuenta-de-google-con-php-y-curl-ii/ [...]