¿Interpreta Google cualquier JavaScript que esté en el onready?

Publicado el 29 de mayo del 2017 por Lino Uruñuela

Aunque hemos visto en otras ocasiones cómo podría tratar Google el contenido cargado mediante JavaScript (usando Ajax con jQuery u otros métodos) ultimamente estoy con la duda de si está cambiando algo, ya que veo cosas que antes no veía o al menos de las que no me di cuenta.



Tabla que contiene el texto de prueba (seguir leyendo para entender por qué está aquí)

  • haz click para cargar contenido 1.
  • haz click para cargar contenido 2.



  • Este texto va a ser sustituido por el contenido en Ajax


    Fin de la tabla




    En un determinado site queremos cargar determinado contenido mediante javascript para que Google no lo valore, ya que es contenido de anunciantes que está hiper duplicado, es muy poco texto y aparece en casi todos los listados de la web.

    Esto no sería un problema si este anunciante no haya comprado la publicidad para casi todos los listados del site, y no solo una posición en el listado sino bastantes, lo que hace que a ojos de Google el 75% del contenido de cada listado del site sea el mismo texto.

    Lo ideal sería que ese contenido fuese algo trabajado para que realmente aporte valor, pero no es el caso, el anunciante nunca lo hará ni aceptará cambiarlo. Otra solución sería no mostrar ese contenido en todos los listados, pero el negocio manda.... Además, para más complicaciones el contenido es dinámico saliendo unos u otros valores dependiendo del listado en el que esté el usuario. A priori podría parecer que al ser dinámico no deberíamos tener problemas de duplicidad de texto entre distintos listados, pero la realidad dice que omitiendo el precio y algún que otro campo el resto será siempre igual, de aquí mi énfasis por dar con la mejor solución en cuanto a SEO.

    Dicho esto, vamos a crear el enésimo experimento para saber cómo trata Google el contenido cargado mediante Ajax y a la vez intentar averiguar hasta qué punto Google está ejecutando el código JavaScript, si es solo las funciones en el onready o si también es capaz de hacer "saltar" otras funciones que se ejecutan en base a acciones del usuario.

    Para ello hemos creado un fichero que contiene el contenido de todas las pruebas para este experimento, y que devolverá un texto u otro en base a qué parámetro se le pase. Tanto la url del fichero desde el que se carga el contenido como sus parámetros están ofuscados con base64, como vimos en otro post, en cuál comentamos una manera de camuflar los links para que Google no los tenga en cuenta como links y no diluya nuestro Link Juice.

    Ese método funciona para tal caso, Google no contará como link esos enlaces camuflados, pero no nos soluciona el cómo cargar determinado contenido sin que lo indexe y/o asocie a la url desde dónde se le llame sin ninguna acción por parte del usuario.

    Para este experimento SEO hemos preparado estas opciones
    1. Carga de contenido mediante Ajax con una función en el onready (por defecto)
    2. Carga de contenido mediante Ajax con una función en el onready tras haber pasado entre 1 y 5 segundos desde su carga.
    3. Carga de contenido mediante Ajax con una función en el onready tras haber pasado entre 5 y 10 segundos desde su carga.
    4. Carga de contenido mediante Ajax con una función en el onready tras haber pasado entre 11 y 14 segundos desde su carga.
    5. Carga de contenido mediante Ajax con una función al hacer scroll por parte del usuario.
    6. Carga de contenido mediante Ajax con una función al hacer click en un elemento del HTML, elemento 1,
    7. Carga de contenido mediante Ajax con una función al hacer click en un elemento del HTML, elemento 2,

     

    El contenido que se cargará por defecto será el de la opción 1, que se ejecuta tras el onready. Seguidamente, tras transcurrir entre 1 y 5 segundos desde que el html del documento esté listo, se cargará el contenido de la opción 2 (pasados entre 1 y 5 segundos). Continuará después cargando el contenido de la opción 3 (entre 5 y 10 segundos), y por último el contenido de la opción 4, tras haber pasado más de 11 segundos.

    Es decir, sin la acción del usuario (que serían las opciones 5,6 y 7) vamos a cargar cuatro contenidos distintos en base al tiempo que transcurra tras la completa carga del html (que no de sus elementos). Para ello usaremos el evento onready como lanzador de nuestra función, y así veremos también como Google si es capaz de ejecutar perfectamente casi cualquier javascript siempre y cuando se realice al cargar el documento/página.

    El texto de la tabla punteada de arriba está cargado mediante javascript, y la url del fichero desde dónde se extrae el contenido está encriptada en base64 para que Google no la crawlee solo por ser una cadena con patrón de url, sino que para cargar ese contenido Google ha tenido que ejecutar correctamente el código JavaScript.

    Podríamos resumir en estos los pasos necesarios para obtener el contenido externo:

    1. Ejecutar el código en las funciones ready del documento (seguramente el onload funcione igual)
    2. Decodificar esa url en base64 por medio de una función JavaScript
    3. Hacer la petición al fichero externo mediante Ajax
    4. Introducir el texto obtenido en la tabla

     

    Veremos como nada más cargar este post aparecerá un texto, cómo transcurridos entre 1 y 5 segundos hay otro texto y cómo transcurridos más de 5 segundos hay un tercer texto diferente. Además, también se cambiará el texto al hacer scroll (de ahí que esté en la zona superior del post), para poder verlo sin hacer scroll ya que cambiaría el texto

     

    Google al menos lanza una de las funciones

    Al explorar cómo Google a través de Google Search Console vemos que Google, al menos, ejecuta la función al cabo de 2 segundos que le damos en el on ready, (línea subrayada en al código de abajo).


    Google JavaScript

    <script language="javascript">
    
    var inicio;
    
    function cargarDivCodificadoCuando(div,url)
    		{
    				fin=new Date(); 
    				fin=fin.getTime(); 
    				tiempo=(fin-inicio)/1000;
    			  $(div).load(decodeURIComponent(b64_to_utf82(url)));
    			  window.document.getElementById("divTiempo").innerHTML="<br><br>Segundos transcurridos:<b>"+tiempo+"</b><br><sup>*(así podremos saber si Google siempre tarda lo mismo o no)</sup>";
    			  
    		}
    
    $(document).ready(function(){
    	inicio=new Date(); 
    	inicio=inicio.getTime(); 
    	cargarDivCodificadoCuando("#contenido","aHR0cDovL3d3dy5tZWNhZ29lbmxvcy5jb20vbWV0b2Rvcy1qYXZhc2NyaXB0LWNhcmdhQ29udGVuaWRvLnBocA==");
    	 setTimeout ( cargarDivCodificadoCuando , Math.floor(Math.random()*(5000-1000+1)+1000),"#contenido","aHR0cDovL3d3dy5tZWNhZ29lbmxvcy5jb20vbWV0b2Rvcy1qYXZhc2NyaXB0LWNhcmdhQ29udGVuaWRvLnBocD9vcGNpb249Y29uTWluaUVzcGVyYQ==");
    	 setTimeout ( cargarDivCodificadoCuando , Math.floor(Math.random()*(10000-5000+1)+5000),"#contenido","aHR0cDovL3d3dy5tZWNhZ29lbmxvcy5jb20vbWV0b2Rvcy1qYXZhc2NyaXB0LWNhcmdhQ29udGVuaWRvLnBocD9vcGNpb249Y29uRXNwZXJh");
    	 setTimeout ( cargarDivCodificadoCuando , Math.floor(Math.random()*(14000-11000+1)+11000),"#contenido","aHR0cDovL3d3dy5tZWNhZ29lbmxvcy5jb20vbWV0b2Rvcy1qYXZhc2NyaXB0LWNhcmdhQ29udGVuaWRvLnBocD9vcGNpb249Y29uRXNwZXJhMTA=");
    	 window.document.getElementById("Thun_imagen2").src ="https://www.mecagoenlos.com/fotos/onready-contenido.png&w="+Math.round(0.85*window.document.getElementsByClassName("descripcion")["0"].offsetWidth);
    });
    
    
    var hasBeenTrigged = false;
    
    
    $(window).scroll(function() {
      
         if ($(this).scrollTop() >= 100 && !hasBeenTrigged) { 
               cargarDivCodificadoCuando("#contenido","aHR0cDovL3d3dy5tZWNhZ29lbmxvcy5jb20vbWV0b2Rvcy1qYXZhc2NyaXB0LWNhcmdhQ29udGVuaWRvLnBocD9vcGNpb249Y29uU2Nyb2xs");
                hasBeenTrigged = true;
            }
        });
    
    </script>
    

    Habrá que esperar para saber cómo asocia este contenido extraído mediante javascript desde otra url y si es capaz de asociarlo a la url del post.

    Sería bueno saber si el tiempo que espera para ejecutar la función dentro del onready es más o menos el mismo o no

    También será interesante saber si Google indexa y/o asocia el contenido en el resto de los casos aquí expuestos. ¿Ejecutará la función tras 12 segundos? ¿emulará los clicks de los usuarios como en los links de arriba? ¿verá el contenido al que solo se accede mediante scroll?

     



    Space Needle
    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

    Seguir leyendo
    Space Needle
    Publicado el 14 de agosto del 2017 by Lino Uruñuela, SEO El otro día realizamos un test de lo más interesante, ¿Interpreta Google cualquier JavaScript que esté en el onready?, para intentar entender cómo Google rastrea, renderiza e indexa el contenido car

    Seguir leyendo
    • Viernes 03 de Julio del 2015

    Publicado por Lino Uruñuela el 3 de julio del 2015 Una de las cosas que más curiosidad me provoca Google es saber hasta que punto rastrea JavaScript, y hasta que punto es capaz de interpretar lo que con JavaScript haces en el site. Desde hace tiempo se ha pensado que Google

    Seguir leyendo
    • Lunes 30 de Noviembre del -0001

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

    Seguir leyendo
    • Lunes 07 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
    • Miercoles 04 de Julio del 2007

    Como sabemos Google y los demás buscadores no son capaces de interpretar JavaScript, ni flash y por tanto no es muy recomendable abusar de estas dos opciones si queremos tener una página web optimizada para el posicionamiento en buscadores. Hay cosas que no se pueden realizar co

    Seguir leyendo
    • Jueves 14 de Mayo del 2009

    Publicado el 14 de mayo del 2009 var nueva = "http://www.clavesde.com/experimento24.html"; alert("Esta es la URL que debería cachear si sigue las URLs en cualquier parte del código: http://www.clavesde.com/experimento24.html"); Hoy quiero comprobar si Google sigue las URLs que est&aacut

    Seguir leyendo
    • Viernes 08 de Febrero del 2008

    Publicado el 8 de febrero del 2008 ¿Qué ocurriría si a Google le da por mostrar sus resultados usando Ajax? Imagina que cuando tú buscas algo en Google la URL siempre fuese la misma, mostrando sus resultados utilizando Ajax. Para el usuario todo sería aparant

    Seguir leyendo
    • Lunes 30 de Noviembre del -0001

    Google nos dice cómo debemos usar Ajax para que su buscador pueda acceder también a esos contenidos. Era lógico y ya lo dijimos. Por jemplo: <a href="paginadestino.php" onClick="funcionAjax(parametros);return false">enlace</a> Así dec

    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í.