Seis trámites y un dado
Entra en la sede de la DGT, acepta las cookies, mira unos cuantos trámites y vuelve a la portada: ahí están, en un recuadro, como un historial. La página está programada para que, cuando ya hay seis, cada trámite nuevo borre uno. No el más antiguo: tira un dado para decidir cuál. La cuenta se lleva en las 788 páginas que guardamos de la sede; el recuadro donde se enseña existe en 6.
- Dominio
- sede.dgt.gob.es
- Guardado
- 31 AGO 2026
- Comprobado en vivo
- 15 SEP 2026
- Citas
- 10 en 4 ficheros guardados
- Lectura
- unos 4 min
Una cookie es una nota que una web le pide al navegador que guarde, y que el navegador le devuelve entera en cada petición que haga a esa web: cada página, cada imagen, cada hoja de estilo. Esta dura treinta días y cabe en ella una lista de seis trámites con su dirección, su título y la ruta de su dibujo, unos ochocientos caracteres. La lista de lo que usted ha mirado en la sede de Tráfico, si aceptó las cookies, está guardada en su ordenador. Y viajando.

- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 149,0 kB
- sha256
- a1d6d6cc4da2…
| 2453 | translate(); |
| 2454 | |
| 2455 | |
| 2456 | |
| 2457 | $(document). |
| 2458 | |
| 2459 | checkHistory(" |
| 2460 | |
| 2461 | function checkHistory(targetId) { |
| 2462 | |
| 2463 | var history = Cookies.get("history"); |
| 2464 | var htmlContent = ''; |
| 2465 | |
| 2466 | ///es/multas/index.html |
| 2467 | |
| 2468 | var imagen = '/. |
| 2469 | var titulo = 'Multas'; |
| 2470 | //var url = window. |
| 2471 | var url = window. |
| 2472 | |
| 2473 | if (history !== undefined && history != "") |
| 2474 | { |
El título y el dibujo de cada trámite no se leen de la página en la que están. Van escritos a mano, uno por uno, dentro del programa que lleva cada una de las 788 páginas. Son 170 títulos distintos, tecleados por alguien. Uno de ellos, el de la página donde se dice quién iba al volante cuando llegó la multa, se escribió sin tildes. Sin tildes se guardará en la nota y sin tildes se enseñará: «Identificacion del conductor de tu vehiculo».
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 149,0 kB
- sha256
- a1d6d6cc4da2…
| 2459 | checkHistory(" |
| 2460 | |
| 2461 | function checkHistory(targetId) { |
| 2462 | |
| 2463 | var history = Cookies.get("history"); |
| 2464 | var htmlContent = ''; |
| 2465 | |
| 2466 | ///es/multas/index.html |
| 2467 | |
| 2468 | var imagen = '/. |
| 2469 | var titulo = 'Multas'; |
| 2470 | //var url = window. |
| 2471 | var url = window. |
| 2472 | |
| 2473 | if (history !== undefined && history != "") |
| 2474 | { |
| 2475 | |
| 2476 | |
| 2477 | $('. |
| 2478 | |
| 2479 | |
| 2480 | var insert = true; |
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 136,2 kB
- sha256
- b2b25a60b3a3…
| 2106 | checkHistory(" |
| 2107 | |
| 2108 | function checkHistory(targetId) { |
| 2109 | |
| 2110 | var history = Cookies.get("history"); |
| 2111 | var htmlContent = ''; |
| 2112 | |
| 2113 | /// |
| 2114 | |
| 2115 | var imagen = '/. |
| 2116 | var titulo = 'Identificacion del conductor de tu vehiculo'; |
| 2117 | //var url = window. |
| 2118 | var url = window. |
| 2119 | |
| 2120 | if (history !== undefined && history != "") |
| 2121 | { |
| 2122 | |
| 2123 | |
| 2124 | $('. |
| 2125 | |
| 2126 | |
| 2127 | var insert = true; |
La parte delicada está pensada, y hay que decirlo, porque este museo no está para repartir collejas. Si la dirección contiene /mi_dgt/, el área a la que se entra identificado, la de los expedientes de uno y los puntos, la página no se apunta en la nota. Quien escribió esto se paró a pensar qué no debía quedar escrito en el navegador de nadie, y lo resolvió en tres líneas.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 149,0 kB
- sha256
- a1d6d6cc4da2…
| 2471 | var url = window. |
| 2472 | |
| 2473 | if (history !== undefined && history != "") |
| 2474 | { |
| 2475 | |
| 2476 | |
| 2477 | $('. |
| 2478 | |
| 2479 | |
| 2480 | var insert = true; |
| 2481 | |
| 2482 | if(url.indexOf('/mi_dgt/') > 0) { |
| 2483 | insert = false; |
| 2484 | } |
| 2485 | |
| 2486 | |
| 2487 | |
| 2488 | var sp = JSON. |
| 2489 | |
| 2490 | for ( var i = sp.length - 1; i >= 0; i--) |
| 2491 | { |
| 2492 | if (sp[i].url == url) |
| 2493 | { |
Y llega el dado. Si en la lista hay hueco, el trámite nuevo se añade al final, como en cualquier historial del mundo. Si ya hay seis, el programa saca un número al azar entre cero y cinco y sustituye esa posición entera: dirección, título y dibujo. No se va el más antiguo ni el menos visitado. Se va el que salga. En el código, esa tirada se llama rdom, y ocupa una línea a la que se le olvidó el punto y coma.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 149,0 kB
- sha256
- a1d6d6cc4da2…
| 2511 | '<div class="d-md-none col-9 m-0 bg-white d-flex banner_te_interesa">'+ |
| 2512 | '<a class="text-uppercase fw-bold" href="'+ sp[i].url +'">'+ sp[i].titulo +'</a>'+ |
| 2513 | '</div>'+ |
| 2514 | '</div>'+ |
| 2515 | '</div>'; |
| 2516 | document. |
| 2517 | } |
| 2518 | } |
| 2519 | if (insert) { |
| 2520 | if(sp.length>=6){ |
| 2521 | console.log("SLL - script end - url: " + url); |
| 2522 | var rdom = Math.floor(Math.random() * 6) |
| 2523 | sp[rdom].url = url; |
| 2524 | sp[rdom].titulo = titulo; |
| 2525 | sp[rdom].imagen = imagen; |
| 2526 | }else{ |
| 2527 | sp.push({"url": url , "titulo": titulo, "imagen": imagen}); |
| 2528 | } |
| 2529 | } |
| 2530 | Cookies.set( 'history' ,JSON.stringify(sp), { expires: 30 }); |
| 2531 | } else { |
| 2532 | var stack = [ { 'url' : url , 'titulo' : titulo , 'imagen' : imagen }, ]; |
| 2533 | Cookies.set('history', JSON.stringify(stack), { expires: 30 }); |
Así que ese recuadro parece un historial y es una tómbola de por dónde ha pasado usted, en la que puede sobrevivir un trámite de hace tres semanas y borrarse el de hace un minuto. Como la lista se reescribe entera después de cada visita, la mezcla cambia cada vez. Si vuelve buscando aquello que consultó ayer y no lo encuentra, su memoria está bien.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 149,0 kB
- sha256
- a1d6d6cc4da2…
| 2519 | if (insert) { |
| 2520 | if(sp.length>=6){ |
| 2521 | console.log("SLL - script end - url: " + url); |
| 2522 | var rdom = Math.floor(Math.random() * 6) |
| 2523 | sp[rdom].url = url; |
| 2524 | sp[rdom].titulo = titulo; |
| 2525 | sp[rdom].imagen = imagen; |
| 2526 | }else{ |
| 2527 | sp.push({"url": url , "titulo": titulo, "imagen": imagen}); |
| 2528 | } |
| 2529 | } |
| 2530 | Cookies.set( 'history' ,JSON.stringify(sp), { expires: 30 }); |
| 2531 | } else { |
| 2532 | var stack = [ { 'url' : url , 'titulo' : titulo , 'imagen' : imagen }, ]; |
| 2533 | Cookies.set('history', JSON.stringify(stack), { expires: 30 }); |
| 2534 | } |
| 2535 | } |
| 2536 | }); |
| 2537 | |
| 2538 | </script> |
| 2539 | </html> |
Justo antes de tirar el dado, la página escribe un mensaje en la consola del navegador, esa ventana que casi nadie abre, con unas siglas y la dirección de la página. El mensaje anuncia el final del programa, aunque después queden treinta líneas por ejecutar. Es gritar “ya está” desde la mitad de la escalera. Y solo aparece cuando la lista está llena, que es justo cuando algo va a desaparecer.
El recuadro se pinta pegando texto: un trozo de HTML, un campo de la nota, otro trozo de HTML. La dirección, el título y el dibujo entran en la cadena tal como estén guardados, y el resultado se le entrega al navegador para que lo interprete como si viniera del servidor. La cookie la escribe la propia sede. El navegador que la guarda también puede escribirla.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 149,0 kB
- sha256
- a1d6d6cc4da2…
| 2490 | for ( var i = sp.length - 1; i >= 0; i--) |
| 2491 | { |
| 2492 | if (sp[i].url == url) |
| 2493 | { |
| 2494 | insert = false; |
| 2495 | } |
| 2496 | if ($('#'+targetId).length) |
| 2497 | { |
| 2498 | htmlContent += '<div class="col-xl-2 col-lg-2 col-md-4 col-sm-12 col-12 p-md-3">'+ |
| 2499 | '<div class="d-none d-md-block p-md-2 m-md-0 mb-2 fondobanner text-center">'+ |
| 2500 | '<div class="imagenmasvista bg-white d-none d-md-block">'+ |
| 2501 | '<img src="'+ sp[i].imagen +'" class="img-fluid cruzada-image" alt="'+ sp[i].titulo +'" title="'+ sp[i].titulo +'">'+ |
| 2502 | '</div>'+ |
| 2503 | '<div class="d-md-table d-none fondo_gris_oscuro m-0 banner_te_interesa">'+ |
| 2504 | '<a class="text-uppercase fw-bold" href="'+ sp[i].url +'">'+ sp[i].titulo +'</a>'+ |
| 2505 | '</div>'+ |
| 2506 | '</div>'+ |
| 2507 | '<div class="d-flex d-md-none p-md-2 m-md-0 py-2 text-center border-bottom">'+ |
| 2508 | '<div class="imagenmasvista text-start bg-white col-3 d-md-none">'+ |
| 2509 | '<img src="'+ sp[i].imagen +'" class="img-fluid cruzada-image" alt="'+ sp[i].titulo +'" title="'+ sp[i].titulo +'">'+ |
| 2510 | '</div>'+ |
| 2511 | '<div class="d-md-none col-9 m-0 bg-white d-flex banner_te_interesa">'+ |
| 2512 | '<a class="text-uppercase fw-bold" href="'+ sp[i].url +'">'+ sp[i].titulo +'</a>'+ |
Pero antes de pintar, el programa comprueba que exista el hueco donde pintar. De las 788 páginas que capturamos, el hueco, una sección vacía llamada recentPageViews, solo existe en seis, que son las seis portadas, una por idioma. En las otras 782 el programa se ejecuta entero, lee la nota, la recorre, monta el HTML del recuadro, tira el dado si toca, reescribe la cookie con treinta días más de vida y no encuentra dónde enseñar nada. El 15 de septiembre de 2026 pedimos otra vez la portada. El programa sigue ahí, con su hueco, su cookie, su exclusión del área privada y su dado.
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 149,0 kB
- sha256
- a1d6d6cc4da2…
| 2488 | var sp = JSON. |
| 2489 | |
| 2490 | for ( var i = sp.length - 1; i >= 0; i--) |
| 2491 | { |
| 2492 | if (sp[i].url == url) |
| 2493 | { |
| 2494 | insert = false; |
| 2495 | } |
| 2496 | if ($('#'+targetId).length) |
| 2497 | { |
| 2498 | htmlContent += '<div class="col-xl-2 col-lg-2 col-md-4 col-sm-12 col-12 p-md-3">'+ |
| 2499 | '<div class="d-none d-md-block p-md-2 m-md-0 mb-2 fondobanner text-center">'+ |
| 2500 | '<div class="imagenmasvista bg-white d-none d-md-block">'+ |
| 2501 | '<img src="'+ sp[i].imagen +'" class="img-fluid cruzada-image" alt="'+ sp[i].titulo +'" title="'+ sp[i].titulo +'">'+ |
| 2502 | '</div>'+ |
| 2503 | '<div class="d-md-table d-none fondo_gris_oscuro m-0 banner_te_interesa">'+ |
| 2504 | '<a class="text-uppercase fw-bold" href="'+ sp[i].url +'">'+ sp[i].titulo +'</a>'+ |
| 2505 | '</div>'+ |
| 2506 | '</div>'+ |
| 2507 | '<div class="d-flex d-md-none p-md-2 m-md-0 py-2 text-center border-bottom">'+ |
- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 122,0 kB
- sha256
- f2f72d9b3c2b…
| 1556 | </div> |
| 1557 | |
| 1558 | <div class="d-flex d-md-none p-md-2 m-md-0 py-2 text-center border-bottom"> |
| 1559 | <div class="imagenmasvista text-start bg-white col-3 d-md-none"> |
| 1560 | <img src="/ |
| 1561 | <div class="d-md-none col-9 m-0 bg-white d-flex banner_te_interesa"> |
| 1562 | <a href="/ |
| 1563 | </div> |
| 1564 | </div> |
| 1565 | </div> |
| 1566 | |
| 1567 | </div><section id="recentPageViews" class="row cruzada-container justify-content-center"> |
| 1568 | |
| 1569 | </section> |
| 1570 | |
| 1571 | </div> |
| 1572 | |
| 1573 | |
| 1574 | |
| 1575 | |
| 1576 | </div></div> |
Falta una condición, y cambia lo que ve cada cual: la nota solo se escribe si el visitante acepta las cookies. La sede tiene un gestor de consentimiento que declara history en su categoría «varias», con su explicación: «Almacena las últimas páginas visitadas para ofrecerte una mayor comodidad de navegación». Hasta que se pulsa el botón de aceptar, ese gestor intercepta la escritura de cookies y tira esa. El aviso dice otra cosa: «Al continuar navegando por la web aceptas nuestra política de cookies». El 23 de septiembre de 2026 recorrimos seis trámites sin pulsarlo y el recuadro siguió vacío; aceptando, se llenó.

- Copia
- archivo
- Guardado
- 31 ago 2026
- Peso
- 6,7 kB
- sha256
- c587b839cb69…
| 131 | search: 'DPCKUIE', |
| 132 | language: { |
| 133 | locale: { |
| 134 | es: { |
| 135 | name: 'DPCKUIE: DP', |
| 136 | } |
| 137 | } |
| 138 | } |
| 139 | }, |
| 140 | history: { |
| 141 | category: 'varias', |
| 142 | type: 'localcookie', // dynamic-script, script-tag, wrapped, localcookie |
| 143 | search: 'history', |
| 144 | language: { |
| 145 | locale: { |
| 146 | es: { |
| 147 | name: 'history: Almacena las últimas páginas visitadas para ofrecerte una mayor comodidad de navegación.', |
| 148 | } |
| 149 | } |
| 150 | } |
| 151 | }, |
| 152 | |
| 153 | analytics: { |
Una tómbola que va y vuelve con cada clic y decide a cara o cruz qué olvida. El resultado se enseña en 6 páginas de 788.
- En las 788 páginas capturadas de sede.dgt.gob.es, el mismo programa guarda en una cookie llamada history hasta seis trámites visitados (dirección, título e imagen), con treinta días de caducidad.
- Cuando ya hay seis, elige una de las seis posiciones con Math.random y la sustituye.
- Las páginas bajo /mi_dgt/ no se apuntan.
- El título y el dibujo de cada trámite están escritos a mano en cada página: 170 distintos, uno de ellos sin tildes.
- El elemento donde se pinta la lista,
recentPageViews, solo está en las seis portadas de idioma. - La cookie solo se escribe si el visitante acepta las cookies: el gestor de consentimiento de la sede la declara en su categoría «varias» y bloquea su escritura hasta que se pulsa aceptar.
- Comprobado el 23 de septiembre de 2026: sin aceptar, el recuadro sigue vacío tras seis trámites; aceptando, se llena con los visitados.
- No decimos que la cookie salga del dominio de la DGT: es una cookie de la propia sede y vuelve a la propia sede.
- No decimos que sirva para seguir a nadie: no lleva identificador de persona y el área privada queda fuera.
- No hemos tocado esa cookie ni hemos probado qué ocurre si se cambia su contenido, y no vamos a hacerlo.
- No sabemos qué significan las siglas del mensaje de consola.
- Y no decimos que el recuadro no se vea nunca: se ve en las seis portadas, a quien acepta las cookies. Para verlo lleno las aceptamos en un navegador de pruebas que se borra al terminar.
De dónde sale cada cita
Cada trozo de código de esta ficha está en un fichero guardado tal como lo entregó el servidor, con su huella (sha256) y su hora. Las citas entre «» se comprueban por programa contra ese fichero antes de publicar.
- https://sede.dgt.gob.es/es/multas/index.html31 de agosto de 2026, 16:22archivosha256 a1d6d6cc4da293285bb35c57a27cd494073c87ebd4e7521b3d02d3b0b284d481
- https://sede.dgt.gob.es/es/multas/index.html15 de septiembre de 2026, 02:20en vivo · distinto · las 7 citas siguensha256 c93ccc64600260d20a58ea8842a6495b5f31cafaa6a8a8544463053088db0e24
- https://sede.dgt.gob.es/es/multas/identificacion-del-conductor-de-tu-vehiculo/index.html31 de agosto de 2026, 16:22archivosha256 b2b25a60b3a336201d529f5b05d07305f1a69ebc034fc4e707255a05383ce47e
- https://sede.dgt.gob.es/es/index.html31 de agosto de 2026, 16:22archivosha256 f2f72d9b3c2b7f673d71dd09cc2da28ac15686ffcfb3ab698a683fa97af23000
- https://sede.dgt.gob.es/export/system/modules/es.trafico.dgt.sedeV5/resources/js/cookieconsent_init.js31 de agosto de 2026, 16:10archivosha256 c587b839cb692dc5d8721aa20420e2167b00d6aa4d426502282c84d074a29da9