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

¿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?

     




    Posts anteriores en Cómo usar JavaScript AJAX


    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
    • 2015-07-03 00:00:00

    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
    • 0000-00-00 00:00:00

    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
    • 0000-00-00 00:00:00

    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
    • 0000-00-00 00:00:00

    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
    • 0000-00-00 00:00:00

    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
    • 0000-00-00 00:00:00

    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


    Lino Urunuela

    probando https
    Post: Consultor SEO en Donosti

    Lino Uruñuela

    ll
    Post: ¿Cómo ejecuta, interpreta e indexa Google el contenido cargado mediante javascript?

    Javier

    Bueenas Lino! Gracias por tu respuesta! Efectivamente, cogiendo texto de una página hecha con javascript y poniéndolo en Google entre comi
    Post: Meta Robots Noindex

    Lino Uruñuela

    Hola @Javier repondiendo a tu pregunta "¿significa eso que google no está viendo el contenido en texto y no lo posicionará?" con el mismo
    Post: Meta Robots Noindex

    Lino Uruñuela

    @Alex R , lo primero graciias por a ti por participar :) Sobre tu prebunta ¿Dentro de un mismo artículo o entrada podemos hacer que no s
    Post: Meta Robots Noindex

    Javier

    Buenas Lino Mecagoenlos! (vaya apellido tienes...) Tu artículo me ha dado mucho que pensar... acaban de hacerme una web en una agencia y
    Post: Meta Robots Noindex

    Alex R

    Hola Lino! Te leo desde hace algún tiempo (genial el cambio de look) y casualmente he venido aquí con una duda sobre indexación. Lo
    Post: Meta Robots Noindex

    Lino Uruñuela

    @javier Lorente Aupa Javi, en algún proyecto en el que he aplicado el noindex y que podía analizar los accesos del bot (tenina cierto p
    Post: Meta Robots Noindex

    Javier Lorente

    Kaixo Lino! Habría que ver si baja la frecuencia de rastreo en otras urls que no fuesen la home, muy difícil de medir por cierto. Po
    Post: Meta Robots Noindex

    pSeo

    va como un tiro con el onready!!!
    Post: Cómo cargar css y js y no bloquear la carga de contenido

    Contacta

    Lánzate y pregunta!

    Nos gustan los robots, pero no tanto
    7 + 3