Do not speak Spanish? Read this post in English.

Miércoles, 24 d junio d 2015.

Soluciones para eliminar el tráfico Referral Spam de Google Analytics

El Spam en Analytics está de moda, cada vez se apuntan más piratillas al carro y muchas webs (sobretodo aquellas con poco tráfico) estan sufriendo verdaderas incomodidades para luchar contra estos datos.

Google por su parte sigue sin hacer nada con este tema. La liaron abriendo y simplificando el Measurement Protocol de Universal Analytics y ahora que tienen un problema gordo, como en realidad no afecta a las grandes empresas no dicen nada. Al menos esa es la sensación que se respira desde fuera... este es un tema simple, nadie duda que lo solucionarán, pero ¿por qué estan tardando tanto?

De momento, lo que nos queda es limpiar este tráfico a nosotros mismos y perder algunas horas por proyecto hasta que vengan a salvarnos, así que vamos a trabajar...

pirate-spam

¿Qué es y cómo se produce el Spam-Referral en analytics

Este Spam no es más que una serie de visitas falsas, provocadas por robots (programas que recorren internet) y adulteran nuestro análisis de datos.

Para funcionar lo que hacen es atacar directamente al Measurement Protocol de las cuentas Universal Analytics (a día de hoy todas las cuentas son Universal, pues e migraron hace unos meses) para provocar visitas falsas en nuestras cuentas.

Con el measurement protocol un programador tan solo necesita conocer el UA de una propiedad de analytics para enviarle páginas vistas y visitas virtuales. Este fue un gran avance que nos trajo Universal Analytics pero también esta siendo un colador con el que meter visitas a todo el mundo.

¿Quiere probarlo? Tan solo corta y pega la siguiente URL en tu navegador, cambiando el UA por el de una de tus cuentas. Ve a los informes de Realtime y verás como acabas de provocar visitas nuevas sin pasar por tu web. Eso es lo que usan los piratas para crearte estas visitas falsas.

¿Qué podemos hacer?

Dado que el problema no está realmente en nuestro site hay poco que podamos hacer en el mismo para evitar estos problemas. De hecho, se dice que los piratas ni siquiera saben a que webs están atacando sino que van probando a enviar a UAs al azar asi que meten visitas a la gente sin saber a quien se las meten.

Así que tengamoslo claro: lo único que podemos hacer es actuar sobre los datos capturados y soluciones en nuestro servidor no harán nada. No podemos prohibirles acceso a nuestras páginas pues simplemente la mayoría en realidad no pasan por ellas.

Lo unico que sabemos de ellos son los datos que nos dejan. Por lo general hay 2 patrones de datos: Páginas vistas sueltas que se etiquetan como Tráfico de referencia y que indican un dominio en la misma que en realidad es publicidad. O eventos sueltos que entre sus valores de categoría, acción y etiqueta también nos meten publicidad. Es posible que haya más comportamientos pero de momento esto es lo que hemos encontrado.

Si que es cierto que con este sismtema no nos costaría nada llenar de visitas falsas organicas un site, pero eso no tienen mucho sentido para los piratas, solo tendría sentido si realmente estamos intentando fastidiar las métricas de la competencia. Puede hacerse, ya os lo digo bien claro, el black hat de la analítica no está extendido pero existe.

Solución 1: La limpieza a mano

Es lo que hace la mayoría de la gente. A medida que te vas encontrando un nuevo referral vas creando nuevos filtros en Google Analytics que eliminen ese tráfico. Es una solución y si trabajamos con pocas cuentas no tiene mucho misterio. Le vamos sumando filtros y a vivir...

Esta configuración es tan simple como:

1) Entramos a nuestros informes de referencias: Adquisición > Todo el tráfico > Referencias.

2) Detectamos ahi nuestros referrals piratas. Los veremos porque las webs realmente no existen y porque por lo general suelen tener una sola página por visita y ser rebote.

3) Vamos al administrador y creamos filtros que eliminen esas referencias:

  • Filtro: Personalizado
  • Tipo: Excluir
  • Campo: Referencia
  • Valor: El referral a eliminar

Bien, ya tenemos una vía sencilla aunque pesada para hacerlo.

Solución 2: Limpieza global

Se trata de filtrar por todo lo que sabemos de estos spammers y cargándonoslos a todos a la vez.

Aquí tenemos varias acciones a realizar:

1) Vamos a marcar en nuestras cuentas la opción de eliminar robots: Administrador > Seleccionamos una vista > Configuración de la vista > Excluye las visitas de robots y arañas conocidos.
Esto nos quitará cierto tráfico.

2) Limpiemos por host. Una técnica que me dijo hace muy poco Estela Franco @guaca (un blog y un twitter a seguir) y que básicamente se basa en la apreciación de que muchos de estos spammers no se molestan en poner de que dominio vine el tráfico por lo que no coincide con el tuyo.

Aquí hay 2 opciones: O creamos un filtro que solo incluya el trafico de nuestros dominios o creamos uno que elimine el trafico que tenga por dominio = "(not set)"

Yo soy más amigo del segundo método pues todos sabemos que recibimos visitas de dominios que no son el nuestro (por ejemplo de google translate y otros parsers de webs) que si usamos el primer filtro no veríamos.

Sea como sea los filtros serían asi:

Filtrar para que GA solo coja trafico de tu dominio:

  • Filtro: Personalizado
  • Tipo: Incluir
  • Campo: Nombre de Host
  • Valor: tudominio.com

Filtrar para que GA no coja el trafico de dominios (not set):

  • Filtro: Personalizado
  • Tipo: Excluir
  • Campo: Nombre de Host
  • Valor: (not set)

Cualquiera de los dos bajará tu spam-referral en un volumen muy importante aunque aun quedarán algunos spammers sueltos por ahí que si que se preocupan en averiguar tu dominio y meterlo en el hit que hacen hacia GA.

3) Crear filtros para todos los referrals que se han detectado hasta la fecha, es decir, no esperar a tener trafico y filtrarlo todo.

Para esto hay varias listas por internet. Yo estaba pensando en crear una propia y resulta que ya existen. Felipe García @DUQUEredes (otro blog y twitter a seguir) me comentó de la existencia de la lista de PiWik (herramienta de analítica open source) en un GIT público.

La lista es bastante completa y muy fácil de copiar.

Bien, el tema con estas listas es que debemos transformarlas en expresiones regulares para incorporarlas a Google Analytics y por desgracia Google Analytics solo admite 255 caracteres en sus filtros... Así que no caben.

Para ayudar a crear estos filtros he creado una pequeña herramienta a la que le cargas un listado y te lo divide en el mínimo numero de filtros a crear en tu Google Analytics.

Aplicando la lista de Piwik que decía nos salen unos 13 filtros, es bastante trabajo, pero mucho menos que añadirlos uno a uno.

Con estas 3 acciones ya tenemos otro tipo de panorama. Ya prácticamente todo el Spam habrá desaparecido, pero por desgracia los piratas evolucionan y vamos a tener que ir añadiendo más y más dominios a las listas para limpiarlos y hacer un control semanal o mensual de estos.

Solución 3: Crear reglas por las que no aceptar el tráfico

Este método, el más técnico de todos pasa por crear ciertos datos en nuestra cuenta sin los cuales no aceptemos el dato en GA. Vendría a ser como una contraseña que como los piratas no la conocen no podrán usar nunca.

Para usarlo tenemos que tocar el codigo de nuestra web y hacer en todas las páginas vistas, eventos y hits de ecommerce una manipulación de los datos que solo nosotros conozcamos y que usaremos para filtrar en Google Analytics.

Os propongo 2 escenarios: uno más simple usando dimensiones personalizadas y otro más complejo con URLs.

Usando dimensiones personalizadas

Lo que haríamos es simplemente enviar una dimensión personalizada con la clave correcta en cada hit de datos enviados.

Luego en GA, creamos un filtro que elimine todo el trafico que no contenga esa clave en esa dimensión personalizada.

Ejemplo código en la web:

ga('create', 'UA-123456-78' , 'auto');
ga('set', 'dimension1' , 'NO PUEDES PASAR!');
ga('send', 'pageview');

En Google Tag Manager, bastaría con editar todos los hits que hemos creado (todas las paginas vistas, eventos y tracks de ecommerce) y añadir en más opciones la dimensión personalizada con el valor adecuado (incluso podemos crearlo como variable para modificarlo en el tiempo).

Luego en Google Analytics daríamos 2 pasos:

1) Creamos la dimension persoalizada. Por ejemplo con el nombre "password-for-spammers"

2) Crearíamos el siguiente filtro:

Filtrar para que GA solo coja datos cuando la dimensión 1 tenga X valor:

  • Filtro: Personalizado
  • Tipo: Incluir
  • Campo: password-for-spammers!
  • Valor: "NO PUEDES PASAR!"

Y ya esta, solo el tráfico con esa dimensión se guardará y por lo tanto los piratas no nos llenaran la cuenta de basura.

Una variante de este metodo sería usar las dimensiones personalizadas que ya usamos y solo permitir en ellas los valores conocidos. Si por ejemplo usamos una dimension llamada "pageSection" y en ella sabemos que solo existen los valores "catalog", "blog" y "home", podriamos crear el filtro con la regex "(catalog|blog|home)" de forma que si la dimensión no viene dada las paginas no se capturen.

Usando Variaciones de las URLs

Más complejo técnicamente pero evitando el uso de dimensiones personalizadas sería manipular las URLs para que todas empiecen por una serie de caracteres especiales que actuan como password de los datos.

Por ejemplo yo podría empezar todas las URLs por ":::" y asi si un dato no llega con una url que empiece por ":::" no lo guardaría en GA. Luego además podre limpiar ese prefijo para no verlo en mis datos.

Pasos a dar:

1) Primero tengo que cambiar mi código de GA o de Google Tag Manager para meter ese prefijo en mis urls.

En GA directo el código sería algo así:

ga('create', 'UA-123456-78' , 'auto');
ga('set', 'page', ":::"+location.pathname );
ga('send', 'pageview');

En Google Tag manager bastaría con que en todos mis hits de página vista, evento y transacción de ecommerce le indique que la URL está modificada.

En ella indicaría como valor ":::{{Page Path}}" para que se añada nuestra contraseña delante.

Otra forma más automática de hacer lo mismo en GTM es crear una variable constante con el valor desdeado (en este caso: ":::{{Page Path}}" -sin las comillas) y usar esa constante para el campo de página. Asi si más adelante queremos modificar la URL en todas las páginas, eventos, transacciones, etc, bastará con editar la variable de GTM.

2) Creamos un filtro que solo permita el tráfico de esas urls:

Filtrar para que GA solo coja datos con la clave en la URL:

  • Filtro: Personalizado
  • Tipo: Incluir
  • Campo: URI de la solicitud
  • Valor: ":::"

Ahora ya solo tenemos el trafico que empiece por la clave en nuestro GA, ya hemos echado a los piratas pero nuestros datos están sucios.

3) Creamos un filtro que limpie la clave:

Borrar la clave las Urls para que no moleste

  • Filtro: Personalizado
  • Tipo: Buscar y Reemplazar
  • Cadena de búsqueda: > /:::/
  • Reemplazar Cadena: /
  • Distinción maysucylas y Minúsculas: Irrelevante

De esta forma limpiaremos las URLs de la clave. Y páginas que estamos enviando como: "/:::/mi-pagina" pasaran a ser de nuevo "/mi-pagina" en GA.

NOTA IMPORTANTE: Tanto el filtro de URLs como el de dimensiones, implica solo aceptar los hits que vengan con los datos que vamos a filtrar. Eso significa que si por ejemplo enviamos eventos o transacciones sin la dimensión o sin manipularles la URL el filtro hará que no se acepten. Así que hay que ser metódico si queremos usar esta solución.

NOTA MUCHO MENOS IMPORTANTE: El patrón o valor de dimensión que usemos es totalmetne independiente. Si por ejemplo quisiesemos añadir a las URLs el valor "/:ikaue:/" y luego usar ese mismo texto en buscar y reemplazar tambien valdría. De la misma forma cambiar el "NO PUEDES PASAR!" por lo que quieras también esta permitido.

Conclusión

Como decía al principio, Google Debería hacer algo... Esta claro que la solución es posible. Si nosotros, "humildes mortales" podemos perfectamente eliminar el tráfico referral, ellos podría hacerlo mucho más aún... Ya lo harán, es solo cuestión de tiempo.

Mientras tanto, ahí tenéis varias soluciones, de más sencillas a más avanzadas. Usad la que queráis. Eso si, comentadlo un poco, ya sea por aquí o por Twitter y así me entero 😉

Temas Relacionados: analitica web

Autor:

14 Comentarios para “Soluciones para eliminar el tráfico Referral Spam de Google Analytics”

  1. Laura dice:

    Hola Iñaki,
    Me encanta tu post, ya había estado leyendo por ahí como cortar las visitas de los robots, pero este es el más completo que he visto.

    Te dejo este comentario porque yo ya he empezado a ver robots del tipo 100dolar-seo.com que lanzan la llamada al UA con tu propio nombre del host, así que directamente esa araña ya no se puede frenar con el filtro hostpropio.

    Yo hasta ahora los estoy frenando asi a todos, pero este que te indico ya se ha hecho más listo. Voy a empezar a probar las otras técnicas que propones.

    De nuevo gracias por tu post. Saludos!

    Laura

    • ikhuerta dice:

      Todos los dominios de semalt en general ya van con host propio... Lo mejor para mi es la tercera opción aunque claro, hay que meterse con código para aplicarla pero te da mucha más seguridad.

  2. Rodrigo dice:

    Iñaki, tradúcelo al inglés, anda y pedimos a nuestros amigos internacionales que te lo muevan...

  3. Laura dice:

    ¡Alucinante el artículo, Iñaki! ¡Cómo te lo has currado! Con opciones para los super pro, y los que no controlamos mucho código. ¡Muchas gracias!

  4. Alfredo dice:

    Muchas muchas muchas gracias por ayudar. Laura (19/7/15) tiene razón: yo que soy un VERDADERO principiante elegí una opción a mi medida.
    Nuevamente Gracias!

  5. Mariana dice:

    Hola Iñaki

    Gracias por tu artículo. Súper útil. Una pregunta, ¿has quitado la herramienta para crear los filtros? El link no está funcionando bien y no puedo acceder a ella.

    Gracias!

  6. Laila dice:

    Hola!

    Gracias a tu entrada puedo ir limpiando los datos de mi web, pero veo que sigue sin poder ver el link con la herramienta que te has trabajado y que, sin duda, ayudará a tener el tráfico más limpio.
    Has conseguido recuperarla? sería fantástico poder implementarla 😉

    Gracias de nuevo!

  7. Jon dice:

    Hola!

    Gran artículo. La solución 3 que propones (con dimensiones personalizadas) creo que es la mejor. Pero las visitas "reales" de crawlers seguirían registrándose, no es así? Habría que combinarla con un filtro a nivel de Htaccess.

    Por cierto, hay una herramienta que crea los filtros automáticamente en base a datos de otros usuarios y los tuyos mismos.

    http://referrer-spam.help/

    Gracias por el artículo!

    • inaki dice:

      Buen apunte! Gracias a ti Jon por ponerlo.

      Por otro lado tengo que actualizar el articulo, GA añadió hace un tiempo una dimensión nueva llamada "source data" y que para este tipo de filtros funciona aun mejor que una dimensión extra. a ver si saco tiempo y lo documento.

  8. Iria dice:

    He llegado a tu web buscando en google como demonios podía hacer que google no "oculte" el origen de las personas que compran en mi web cuando pagan con tarjeta o paypal (que siempre indica referral redsys o paypal... El último "origen" antes de finalizar el pago, aunque vinieran por orgánico, directo...etc.).
    He estado leyendo con detenimiento toda tu entrada y me he quedado gratamente sorprendida. Desconocía la mayoría de métodos y si que es cierto que los spamers a veces me descabalan las estadísticas... La idea de identificarlas por la tasa de rebote me ha parecido una maravilla.
    Aunque no he encontrado respuesta a mi consulta inicial la verdad es que he aprendido un montonazo, asi que mil gracias por compartir!
    Por tu experiencia, ocultarías los orígenes de la pasarela de pago y paypal para ver realmente el origen de los clientes restantes? O se te ocurre algún modo de ocultar el último origen (pasarela de pago, que cuando se completa redirige a la web) para saber el origen real de la visita?
    Muchisimísimas gracias por todo!

    • inaki dice:

      Hola iria.

      Cuidado que lo que dices es un tema bastante comun y no tiene nada que ver con el spam.

      Lo que te sucede es que analytics entiende como nueva visita cualquier pagina vista en la que llegue un referral de otro site.

      Asi que cuando alguien va a la pasarela de pago y vuelve a tu web despues de pagar el lo entiende como nueva visita. Asi que un solo usuario te lo cuenta como 2: uno que tiene toda la actividad y las camapañas bien informadas pero le falta la venta y otro que solo tiene la venta y la asigna a un referral de esas plataformas.

      Solucionarlo es muy facil. Solo tienes que ir a admin > propiedad > seguimiento > ignorar referrals y poner ahi los dominios de los bancos para que no rompan visitas.

  9. susana dice:

    Hola, llego a tu web, a través de un amigo informático para quitarme del medio un robot que me la ha liado en los porcentajes. Me ha encantado todo, me ha aclarado un montón de dudas, a ver si ahora con mi nivel de usuario medio jjjj soy capaz de borrar el spam.
    Lo mio no ha sido por publicidad, lo mio ha sido, porque en un concurso de SEO, uno quiso fastidiar a otro y con el mismo trabajo que el spam, creó un nuevo nombre para las urls con el mismo dominio, de un montón de blogs como el mio, que no teníamos ni idea de lo que pasaba, hasta que hoy me he metido a analytics y me encuentro con un 95% de nuevos visitantes, 0 segundos de permanencia y mis entradas duplicadas unas con mí título y otras con el nombre y nick del concursante al que supuestamente querían fastidiar.
    Y según el concursante afectado, da igual todo, porque google no hace nada, pero que tampoco me puedo quejar, porque él con esas cosas ha subido un montón las visitas.
    En fin, que muchas gracias.

Anímate y deja tu comentario

Esto son experimentos, no preguntes ;) prueba metadescription Prueba title