«Hola, me llamo Javier Tobal y he comprado un billete en la web de Renfe». Esto no debería ser noticia, pero esta vez me fijé en un detalle que me había pasado desapercibido anteriormente o, tal vez, sea una «mejora» introducida recientemente.
¿a quién coño se le ocurre poner un auto-completar en los campos nombre,apellido? La web de RENFE a la vanguardia. pic.twitter.com/HcV4TAlhqq
— Javier Tobal (@JaviTobal) May 29, 2014
La cuestión es que Renfe ha implementado un mecanismo de autocompletar para algunos campos: población, calle y, también y sorprendentemente, para los campos nombre y apellidos!!! Esto me dejó anonadado, desconcertado y, como se puede ver en mi tuit, contrariado.
Las principales «pegas» que le pongo a esta funcionalidad:
- El nombre es un valor único, personal. ¿qué sentido tiene que una aplicación informática me dé a elegir el nombre entre una lista de posibles nombres?
- Todo el mundo sabe escribir su nombre. Hasta mi hijo de 3 años lo hace.
- No hay nombres más importantes que otros. Me imagino al señor «Rodrigues» preguntando «¿por qué me debería apellidar «Rodríguez»?
- La web de Renfe reconoce mi apellido (sorprendente) pero me lo cambia por «Tobalina» cuando pulso el tabulador. Esto pasa porque el autocompletar está ordenado por frecuencia del nombre y selecciona el primero de la lista.
Pero lo que al principio parecía peor, o al menos más heterodoxo, es que los datos (nombres o apellidos) parecían extraerse de la base de datos de clientes. Sólo así se explicaría que aparecieran apellidos aparentemente raros y no aparecieran otros más populares. En mi caso, tengo un nombre muy común (300.000 en España) y un apellido relativamente raro (500 en España) pero Renfe conoce ambos. Hice unas pruebas manuales buscando un caso que confirmara mi teoría.
Y como así no conseguí nada concluyente, busqué la manera de automatizar esta investigación. Al final, la web usa un método en el servidor llamado «nombresManagerAjax.getNombresFrecuentes.dwr» que devuelve la lista de elementos para el autocompletar.
Remote Address:213.144.49.57:443
Request URL:https://venta.renfe.com/vol/dwr/call/plaincall/nombresManagerAjax.getNombresFrecuentes.dwr
Request Method:POST
Status Code:200 OKRequest Headers
Accept:*/*
Accept-Encoding:gzip,deflate,sdch
Accept-Language:es,en-US;q=0.8,en;q=0.6
Connection:keep-alive
Content-Length:270
Content-Type:text/plain
Cookie:tipoUsuario=N; url_logout=/vol/index.do; tipoUsuario=N; org.springframework.web.servlet.i18n.CookieLocaleResolver.LOCALE=es_ES; __g_u=202999812043209_0; JSESSIONID=0000C560QoOyAIi2PyCr_modONr:16dv7ekdi; __g_c=a%3A1%7Cb%3A3; s_cc=true; s_sq=%5B%5BB%5D%5D; s_fid=38BB206B580BA00C-03798198EB657DDB; s_nr=1401562262384-Repeat; gpv_p6=Venta%3ARegistro%20Cliente
Host:venta.renfe.com
Origin:https://venta.renfe.com
Referer:https://venta.renfe.com/vol/datosComprador.do
User-Agent:Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/35.0.1916.114 Safari/537.36Request Payload
callCount=1
page=/vol/datosComprador.do
httpSessionId=0000C560QoOyAIi2PyCr_modONr:16dv7ekdi
scriptSessionId=C93936BC746559589B085F596EBEA0E1804
c0-scriptName=nombresManagerAjax
c0-methodName=getNombresFrecuentes
c0-id=0
c0-param0=string:EIL
c0-param1=string:
batchId=75Response
Connection:Keep-Alive
Content-Language:es-ES
Content-Length:131
Content-Type:text/javascript;charset=ISO-8859-1
Date:Sat, 31 May 2014 18:53:18 GMT
Keep-Alive:timeout=10, max=98
throw ‘allowScriptTagRemoting is false.’;
//#DWR-INSERT
//#DWR-REPLY
dwr.engine._remoteHandleCallback(’75’,’0′,[«EILEEN»,»EILA»]);
Una vez descubierto cómo se hace la consulta, se podría «machacar» este método para obtener todos los nombres que devuelve el método «getNombresFrecuentes.dwr».
Pero no hizo falta desarrollar ningún script, en seguida se comprueba que lo que apuntaba Alejandro Ramos (@aramosf) en Twitter era la solución. Los programadores de la web de Renfe han cargado las estadísticas del INE de nombres y apellidos más frecuentes en España. En concreto han cogido los nombres y apellidos que tienen una frecuencia superior a 500.
@JaviTobal @sha0coder @secbydefault @alionka todos los apellidos están en el INE. A mi me parece usabilidad, como que complete un pais.
— Alejandro Ramos (@aramosf) May 29, 2014
En resumen, aunque no me gusta esta funcionalidad se puede comprobar que los nombres y apellidos no salen de la base de datos de clientes, sino de las estadísticas públicas del INE.
<Hola, me llamo Javier Tobal y he comprado un billete en la web de Renfe />