Link desde Gmail

Publicado por Lino Uruñuela el 23 de julio del 2018


Desde hace ya unos años venimos viendo cómo Google es capaz de cargar e indexar ciertos contenidos via javascript, en este blog hemos hecho muchos experimentos sobre  cómo Google rastrea e indexa el contenido cargado mediante JavaScript.

Los últimos experimentos sobre Google e indexación de javascript fueron encaminados a intentar saber si Google era capaz de ejecutar funciones javascript "complejas" y si era capaz de acceder e indexar el contenido cargado mediante llamadas Ajax y hemos comprobado cómo Google accedía e indexaba estos contenidos por muy ofuscados que hiciéramos esas llamadas JavaScript, siempre y cuándo este código se ejecutara en el onLoad o en el onReady.


Definiciones previas

Lo primero vamos a definir un par de términos para poder referirnos más adelante a ellos:

  1. URL de origen:
    Es la url que escribimos o vemos en el navegador. En este artículo la url de origen es

        /Posicionamiento/interpreta-google-el-javascript.php

    que es la url del anterior experimento.

  2. URLs cargadas via JavaScript:
    URLs llamadas desde JavaScript para cargar contenido, en este artículo son las siguientes urls, y cada una carga un contenido diferente:

    • /metodos-javascript-cargaContenido .php
    • /metodos-javascript-cargaContenido .php?opcion=conMiniEspera
    • /metodos-javascript-cargaContenido .php?opcion=conEspera
    • /metodos-javascript-cargaContenido .php?opcion=conEspera10
  3. URLs de recursos
    URLs de las hojas de estilo y ficheros js que se requieren para el renderizado completo del DOM. Por ejemplo:

    • /includes/script_el-valor-de-los .js
    • /Posicionamiento/assets/pages/css/components .css
    • /Posicionamiento/assets/corporate/css/style .css
    • /Posicionamiento/assets/corporate/css/custom .min.css
    • /menu/css/component .css

Breve resumen sobre el experimento anterior

  1. Google es capaz de interpretar y ejecutar el javascript que se ejecuta de manera automática (siempre que no necesite de la interacción del usuario para ejecutarse), por ejemplo código en el onReady u onLoad.
  2. Por consiguiente, Google accede a todas las urls que cargan contenido mediante JavaScript si este código no necesita de la interacción del usuario para ejecutarse y obtener este contenido externo (en otra url). Por ejemplo contenido cargado con el evento onready o el evento onLoad.
  3. Google esperará, hasta más de 10 segundos (por lo menos) para cargar ese contenido y lo indexará. Por lo que podríámos eliminar el mito de que debe cargarse antes de 5 segundos... aunque aquí hay que hacer más pruebas para estar al 100% seguro, pero por lo que voy viendo así es.
  4. Google accede tanto a la url de origen (llamemos url de origen a la url que pone el usuario en la barra de direcciones del navegador) como a las url que son cargadas via JavaScript en esa url de origen.
  5. Google también accede a los recursos requeridos por un "navegador normal" como css, js, etc. No siempre carga todos los recursos que el DOM solicita, habrá que investigar si coincide con el tiempo de caché para ese tipo de recursos
  6. Google no accede a ninguna url que cargue contenido mediante eventos que lanza el usuario, por ejemplo onClick, onScroll, etc 
  7. Google solo indexará el HTML FINAL, por lo que si un contenido es sustituido por otro mediante javascript Google indexará solamente el contenido final y no indexará el contenido que desaparece.

Los resultados y las conclusiones de este experimento los podéis ver con más detalle en este post sobre cómo ejecuta, rastrea e indexa el contenido cargado mediante javascript.


Analizando cuándo y qué urls renderiza Google

Cuando analizamos los logs del servidor generados por Google podemos observar algo muy importante, y que a todos se nos había pasado por alto, cuándo Google carga recursos como ficheros javaScript, hojas de estilo css o urls de contenido cargadas mediante ajax en todos estos casos lleva en el campo referer la url de origen, y esta es la url que está siendo renderizada!.

En este ejemplo podemos ver en el campo "URL" la URL de origen, con fondo verde, /Posicionamiento/interpreta-google-el-javascript.php, y en rojo las urls de contenido cargadas por javascript como por ejemplo /metodos-javascript-cargaContenido.php y también urls de hojas de estilos css o urls de recursos js. 


Segunda oleada Google

 

No me había dado cuenta de la importancia de esto hasta que escuché la famosa presentación que Tom Greenaway y John Mueller dieron en el Google I/O de este 2018, dónde explicó cómo Google procesa los contenidos cargados mediante javascript.

Resumiendo podemos decir que Google procesa el contenido de una url en dos procesos / fases / oleadas. En una primera oleada Google funciona cómo siempre lo hemos entendido.

Primera oleada

  1. Accede a la url que tiene en su lista de urls a rastrear.
  2. Obtiene el HTML de esa url, sin ejecutar JavaScript. Es lo que vemos cuándo le damos al botón dercho del ratón y seleccionamos "Ver código fuente de la página").
  3. Evalua en base a multitud de variables ese HTML obtenido y decide si la indexa y qué imporancia da al contenido de esa url.

Pero John Mueller nos aclaró un tema muy importante, si en la url a la que accede Googlebot se carga contenido mediante javascript, Google volverá a acceder a esa url cuándo tenga recursos disponibles, y esta vez renderizando el DOM y ejecutando JavaScript, concretamente el navegador Chrome41, a esto lo ha denominado "la segunda oleada".

En esta segunda oleada Google realizará los siguientes pasos

Segunda oleada

  1. Accede a la url que tiene en su "lista de espera" por renderizar
  2. Obtiene el HTML de esa url.
  3. Evalua en base a multitud de variables el HTML de la url de origen renderizado, es decir evaluará el contenido y recursos cargados en la rederización

Esta gran pista me sirvió de inspiración... ¡eureka!, me di cuenta de que muchos de los resultados que estábamos viendo en los experimentos con JavaScript antes mencionados se podrían explicar perfectamente si tenemos en cuanta esta nueva información sobre este renderizado que hace Googlebot en la segunda oleada de indexación.

Cuándo dije que "Google indexa lo que permanece", era cierto! y ahora sabemos el por qué. Google en una segunda oleada, entrará en la url del experimento y  obtendrá el HTML, pero renderizará el DOM y ejecutará JavaScript, por lo que cargará el contenido de cada uno de los diferentes escenarios planteados en el experimento, recordamos cuáles eran:

  1. Carga de contenido tras pasar entre uno y cinco segundos
  2. Carga de otro contenido tras pasar entre 5 y 10 segundos
  3. Carga de otro contenido diferente al trasnscurrir al menos 10 segundos).

Ahora podemos entender mejor por qué Google solo indexaba el contenido cargado tras más de 10 segundos, porque es el HTML resultado del renderiazado completo del DOM. El HTML renderizado es lo que vemos cuando hacemos click en botón derecho del navegador y seleccionamos "Inspeccionar elemento". Este código HTML generado tras la renderización es el HTML final que Google valorará en esta segunda oleada.


Resumiendo podemos decir que una vez renderizado el documento por parte de Googlebot, el contenido que en él haya será el contenido que se indexe, y aquel contenido que no esté, no se indexará.


¿Cómo podemos saber que urls esta renderizando?

Un tema muy importante es saber qué urls está renderizando Google y cada cuánto tiempo lo hace. Esto se convierte en algo crítico para el SEO en aquellas páginas webs basadas en JavaScript, sobretodo si no se realiza un prerenderizado desde el servidor para dárselo a Googlebot en la primera oleada.

En el SEO para webs en JavaScript conocer a qué contenido es capaz de acceder Google es indispensable para saber si está teniendo problemas a la hora de cargar ese contenido, también para saber cada cuánto renderiza las urls, y cuánto tiempo tarda desde que accede en la primera oleada hasta que lo hace en la segunda ya que durante ese intervalo de tiempo Google solo indexará el contenido obtenido sin renderizar durante la primera oleada.

Analizando los logs del servidor podemos sacar algunos puntos que se dan en  todos los casos;

  1. Cuando Google accede a la url de origen, lo hace con el campo referer vacío.



  2. Los recursos cargados desde esa url de origen por parte del navegador, ya sean urls de contenido ajax, hojas de estilo o ficheros js llevan todas en el campo referer la url de origen.



  3. Los accesos a la url de origen y a las urls o recusos cargados en el renderizado se dan en un pequeño periodo de tiempo, podemos decir casi al 100% que en un periodo de tiempo menor a  un minuto.



  4. El User Agent con el que accede contiene "Googlebot", tanto para la url de origen como para las urls javascript o recursos cargados.

Y de forma menos general, pero que se suele dar cuándo Google renderiza una url

  1. Google a veces espera el tiempo definido en el setTimeout de JavaScript, pero a veces se salta ese tiempo de espera y ejecuta el javascript casi inmediantemanete.
  2. No siempre que accede a una url de origen la renderiza, la mayoría de las veces accede a la url pero no hay un renderizado posterior. 
  3. No siempre carga todos los recursos o urls de contenido, a veces carga solo un css, a veces carga todos los recursos, a veces solo una url de contenido... deberemos investigar mejor este comportamiento y saber que no siempre carga todo ni siempre lo mismo.

Ejemplo SQL para saber las urls que Google renderiza

Si tenemos los logs en una base de datos con los siguientes campos, Fecha, path, Status, Referer, User Agent podriamos obtener las urls que han sido renderizadas obteniendo el valor del campo referer de las urls que cumplen estas dos condiciones;

  1. El User Agent contiene "Googlebot", por supuesto debemos comprobar que realmente sea Google, esto se puede hacer con un reverse DNS.
  2. El campo referer no está vacío, esto querrá decir que la url de este log ha sido cargada desde la url que aparece en e campo referer. En nuesto caso el valor de este campo es https://www.mecagoenlos.com/Posicionamiento/interpreta-google-el-javascript.php

Representando esto en SQL sería:

SELECT 
fecha, 
referer
FROM Logs 
WHERE (UA LIKE '%Googlebot%') AND ((fecha >= '2018-03-01') 
AND (fecha <= '2018-07-01')) AND (referer != '-')
GROUP BY 
fecha, 
referer

Y nos devolvería los siguientes resultados, dónde el campo "Referer" es la url de origen.


Segunda oleada Google referr


Con esto ya podemos saber qué y cuántas urls están siendo renederizadas diariamente  por Google, y añadirlo así a nuestro dashboard.

Si quieremos ir un poco más allá y saber cuántas y qué urls están siendo cargadas desde cada url de origen también podemos conocerlo.

Hay un dato que TODAVÍA no he sido capaz de sacar y es cuántas veces ha sido renderizada una url. Este problema me lo planteó Iñaki Huerta, e ideó un método que podría ser el más cercano a este número, pero esto dejo que lo explique él.



 




Posts anteriores en Links y experimentos


  • Sábado 23 de Enero del 2010

Publicado el 23 de enero del 2010 Hace un tiempo hice un experimento de PR sculpting usando JavaScript, cosa que debería funcionar perfectamente. Pero cometí un error más que nada por dejadez ya que me di cuenta del error y no lo solucioné... Ahora lo he hecho, y es

Seguir leyendo
  • Jueves 10 de Diciembre del 2015
Space Needle
Publicado el 10 de diciembre del 2015, por Lino Uruñuela Hola de nuevo! Después de más de un mes sin escribir nada voy a realizar el que puede ser el último experimento SEO de este año 2015. Es fácil y sencillo!! ObjetivoSaber si Google valora los

Seguir leyendo
  • Jueves 24 de Septiembre del 2015
Space Needle
Publicado por Lino Uruñuela el 24 de septiembre del 2015 Hoy escribo este post desde la humildad, desde la humildad de saber que no sabes nada seguro, desde la humildad que debemos adoptar lleves lo que lleves en este sector porque nadie lo sabe todo y aunque sepas mucho, lo que sabes hoy pu

Seguir leyendo
Space Needle
Publicado por Lino Uruñuela el lunes 20 de julio del 2015 Una de las mejores soluciones cuando se modifican urls son las redirecciones 301, que como bien sabemos traspasan el valor que tenía la antigua URL a la nueva. Por ejemplo en PHP las redirecciones 301 se crean con un simpl

Seguir leyendo
Space Needle
Publicado por Lino Uruñuela el viernes 23 de enero del 2015 Normalmente desde Mecagoenlos.com creamos experimentos para intentar comprobar alguna teoría o hipótesis, podríamos decir que lo hacemos siguiendo el método científico, es decir, a partir de un

Seguir leyendo
  • Viernes 05 de Diciembre del 2014
Space Needle
Publicado el lunes 15 de diciembre del 2014 por Lino Uruñuela El otro día a Javier Ortiz le asaltó una  duda sobre cómo tiene en cuenta Google los enlaces hacia, urls con redirección y a urls con canonical, ¿qué valor otorga Google a cada uno

Seguir leyendo
Space Needle
Publicado el miércoles 17 de septiembre del 2014 por Lino Uruñuela En diversas ocasiones hemos comprobado como valora Google los links que hay dentro de una url, así pudimos comprobar que Google sólo tiene en cuenta el primer link que encuentra hacia una URL, ignorando

Seguir leyendo
Space Needle
Publicado el 12 de noviembre del 2012 por Lino Uruñuela El propósito es saber cómo valora Google los links "desactivados" con su nueva herramienta. Para evitar un SEO negativo (que una persona intente penalizar una web a base de enlaces malos) Google habilitó

Seguir leyendo
  • Miercoles 24 de Octubre del 2012
Space Needle
Publicado el 24 de octubre del 2012, by Lino Uruñuela Dicen que a la tercera va la vencida... a ver si es verdad!! pero tambien dicen que no hay mal que por bien no venga. Y esto sí que se ha cumplido. Hemos visto como antes me confundía al hacer el test (lo que tiene el hace

Seguir leyendo
Space Needle
Publicado el 24 de octubre del 2012  ACTUALIZACION: Con este experimento estoy gafado! ahora gracias a Montse que me avisó, me doy cuenta que hay dos metas Title, un fallo de programación al meterlo "a pelo". Pero curioso que posiciona l

Seguir leyendo
  • Miercoles 10 de Octubre del 2012
Space Needle
Publicado el 10 de octubre del 2012, by Lino Uruñuela Desde hace bastante tiempo tengo una duda sobre cómo valora Google los distintos tipos de documentos, HTML, PDF, Flash, txt. Con los documentos PDF ya he realizado alguna prueba, no sacando nada concluyente en cuanto

Seguir leyendo
  • Domingo 22 de Abril del 2012

Publicado el 22 de abril del 2012, by Lino Uruñuela Estoy que me salgo, dos post en un día!! que no sirva de precedente :D Este experimento es fácil y sencillo, quiero comprobar si Google guarda caché y valora los links que hay en URLs que tienen un meta canonical

Seguir leyendo
  • Domingo 22 de Abril del 2012
Space Needle
Publicado el 22 de abril del 2012, by Lino Uruñuela El otro día intentamos ver de que manera Google podría valorar el meta canonical, y de momento podemos pensar en las siguientes conclusiones: Google traspasa el valor de los links que apuntaban a una página co

Seguir leyendo
  • Miercoles 18 de Abril del 2012

Publicado el 18 de abril del 2012 El otro día hicimos un experimento para ver cómo trataba Google el meta canonical, y los resultados son, como diría Iker Jimenez, cuanto menos inquietantes... A los pocos días de hacer el test, podíamos buscar una de las KW

Seguir leyendo
Space Needle
Publicado por Lino Uruñuela el lunes 20 de julio del 2015 Una de las mejores soluciones cuando se modifican urls son las redirecciones 301, que como bien sabemos traspasan el valor que tenía la antigua URL a la nueva. Por ejemplo en PHP las redirecciones 301 se crean con un simpl

Seguir leyendo
  • Lunes 30 de Noviembre del -0001

Publicado el 2 de febrero del 2012, By Lino Uruñuela ¿Valorará Google el title de una página en los enlaces que hay en ella? Leyendo en WMW un hilo sobre como Google podría haber cambiado la forma en que Google trata los enlaces vamos a hacer una serie de p

Seguir leyendo
  • Jueves 03 de Noviembre del 2011

function ejecutaCodigo(){ if (window.XMLHttpRequest){ http_request = false; if (window.XMLHttpRequest) { // Mozilla, Safari,... http_request = new XMLHttpRequest(); } else if (window.ActiveXObject) { // IE try {

Seguir leyendo
  • Lunes 10 de Octubre del 2011

Publicado el 10 de octubre del 2011, by Errioxa Pues parece ser que Google no se traga las estrellitas ★★★★☆ en el title :( Voy a intentar meterlo en el código fuente de para esta URL sin poner el código unicode, a ver si funciona aunque me da que Go

Seguir leyendo
  • Lunes 10 de Octubre del 2011

Publicado el 10 de octubre del 2011, by Errioxa El anterior experimento salió bastante bien, así que vamos a seguir probando con otros símbolos. Lo ideal es llamar la atención del usuario, y que además le de confianza, debemos poner símbolos claros ya

Seguir leyendo

Últimos posts

Últimos comentarios


Marinette

Gracias por la información!
Post: Nuevo Google Search Console ¿qué información nos ofrecerá?

Adolfo

Parece que a todo el mundo le ha gustado este artículo sexista y lleno de situaciones de agresión sexual y violencia de género, ya tendr
Post: Tipos de marketing

FDM

Hola, Lino: Genial el post, como siempre. Es genial contar con personas tan curiosas y que investigan al detalle el funcionamiento de Goo
Post: La segunda ola de indexación y cómo saber qué renderiza Google

Lino Uruñuela

@Cesar saltarse alguna orden del código es un falta de respeto!, que para algo lo hice :D No se les da muy bien esperar, su tiempo es or
Post: La segunda ola de indexación y cómo saber qué renderiza Google

César Aparicio

Hola Lino, Nos conocemos de películas como: Los de Google son muy frikis o Pasodobles y SEO. Mi cuestión es la siguiente: entiendo
Post: La segunda ola de indexación y cómo saber qué renderiza Google

Nostram

Porque será que no me extraña. No he visto un producto que funcione peor que "OK Google" lamentable.
Post: ¿Grave fallo de privacidad de Google Assistant?

Carlos

Parece mas un fallo de la aerolinea, que parece que en un mismo número de reserva (WXI99I) ha metido mas pasajeros, y google assistant ha d
Post: ¿Grave fallo de privacidad de Google Assistant?

Lino Uruñuela

@David Es capaz de renderizar e interpretar el JavaScript siempre que no haga falta la interacción del usuario. Me explico, si pones una fu
Post: Ofuscando enlaces para mejorar Link Juice

David

Hablando sobre la ofuscación de enlaces, tras las últimas noticias de Google y su segunda oleada de indexación tras la renderización de
Post: Ofuscando enlaces para mejorar Link Juice

Javier Galán

Este post es una auténtica genialidad. Muy útil.
Post: Medir cuántos usuarios hacen click para ampliar la imagen en Google Imágenes, aunque no entren en nuestra web

Contacta

Lánzate y pregunta!


He leído y acepto la política de privacidad

Mecagoenlos.com te informa que los datos de carácter personal que nos proporciones rellenando el presente formulario serán tratados por Lino Uruñuela. como responsable de esta web.

La finalidad de la recogida y tratamiento de los datos personales que te solicitamos es para enviar un correo con los datos que introduzcas, sin guardarse en ninguna base de datos.

Legitimación: Al marcar la casilla de aceptación, estás dando tu legítimo consentimiento para que tus datos sean tratados conforme a las finalidades de este formulario descritas en la política de privacidad.

Como usuario e interesado te informamos que los datos que nos facilitas estarán ubicados en los servidores de Linode.com (proveedor de hosting de Mecagoenlos.com) cumpliendo la ley de protección de datos. Ver política de privacidad de Linode.com.

Podrás ejercer tus derechos de acceso, rectificación, limitación y suprimir los datos en info@mecagoenlos.com, así como el derecho a presentar una reclamación ante una autoridad de control. Más información aquí.