Cómo superar el clic en Y. Direct y AdWords por 600 mil rublos al mes

En los últimos seis meses, hemos logrado derrotar el "clic" de nuestra publicidad contextual con un presupuesto de 1 millón de rublos por mes.

La clave para derrotar el fraude fue el monitoreo por minuto del tráfico con notificaciones de cambios anormales y la desactivación de anuncios problemáticos por API, y una serie de informes que reflejan la situación en tiempo real.


Figura 1. Gráfico del número de visitantes por palabras clave por decaminas

¿Cómo sabes que estás siendo atacado?


Una de las primeras señales de un "clic" de publicidad será un aumento en el porcentaje de reembolsos por fraude en Yandex.Direct y AdWords.
“En Yandex Direct, los gastos por fraude se devuelven automáticamente al saldo de la campaña publicitaria. El número de clics eliminados por el sistema antifraude se muestra en los informes "estadísticas diarias" "estadísticas generales" en la línea "clics no válidos para todo el período seleccionado".
- Ayuda J. Dirija "clics no válidos" .

En AdWords, se puede habilitar la visualización del nivel de "clics no válidos" en la pestaña "columnas":


Figura 2. Columnas personalizadas con un nivel de "clic no válido" en AdWords

En nuestro caso, con un nivel promedio de " clics no válidos " en Yandex. Directo ≈ 10%, Yandex de repente comenzó a devolver el 40% del presupuesto publicitario y, después de un mes, el 54%.

La siguiente señal de fraude es un aumento irrazonable en el número de transiciones y cambios fuertes en los indicadores de comportamiento para varios grupos de anuncios.

Notamos que, para varias palabras clave que nunca tuvieron más de 200 visitantes al día, aparecieron repentinamente picos de hasta 3.000 visitantes. De hecho, el presupuesto, en los días de tales actividades, podría destinarse a una campaña publicitaria si no se detenía a tiempo.


Figura 3. Crecimiento de tráfico irrazonable para un grupo de anuncios en particular en Direct

Yandex y Google no protegen contra el fraude


Es suficiente leer la discusión sobre el nivel de fraude en la publicidad contextual en el Direct Club oficial para asegurarse de que muchos anunciantes pierdan dinero debido al fraude.

Google reconoce oficialmente los errores de su sistema de seguridad y proporciona a los anunciantes "Reclamaciones de reembolso" (retorno del presupuesto). Según las estadísticas del servicio ClickSease, Google Ads devuelve un promedio del 12% del presupuesto publicitario.

Cómo reembolsar parte del dinero por un clic a través de AdWords
Debe enviar una queja sobre "clics no válidos" a Adwords, después de lo cual se le reembolsará con ≈ 12% del dinero gastado. Además, el servicio ClickSease envía automáticamente a Google solicitudes similares de reembolso cada 2 meses.

En nuestro caso, Google AdWords reconoció por primera vez el 18% de nuestro tráfico como " no válido " y devolvió el dinero por ellos, y cuando enviamos la queja de "reclamos de reembolso", Google reembolsó otro 13% del presupuesto.

Yandex no reconoce la vulnerabilidad de sus propios filtros de protección y las quejas sobre casos de fraude obvios, envía una respuesta de plantilla de que el problema radica en el anunciante y su sitio.

En nuestro caso, el porcentaje de "clics no válidos" en el informe de Y. Direct nunca aumentó por encima del codiciado 50% para ninguna de las campañas publicitarias, incluso en los días de los arrebatos más violentos, cuando el 80% del presupuesto "se fusionó" en el grupo de anuncios generalmente poco popular sin llamadas y aplicaciones.


Figura 4. El nivel de "clics no válidos" en una de las campañas en Direct

¿Qué nivel de ataque encontramos?


El tráfico fraudulento se dirigió a cuatro líneas comerciales en dos ciudades. Cuando se conectan nuevas campañas publicitarias o se inician campañas detenidas, en unas pocas horas también se les redistribuyó el "clic".

Click Fraud no estuvo vinculado al tiempo, y la redistribución del presupuesto, por ejemplo, por la noche, no tuvo ningún efecto: todavía obtuvimos nuestro volumen de tráfico restante. "Hacer clic" fue igualmente activo en el YAN, en la búsqueda de Yandex y en la Red de Display de Google.

En el sitio, los robots simularon el comportamiento del usuario, navegaron a través de secciones del sitio, seleccionaron el texto, naturalmente desplazaron y movieron el cursor.

¿Hay remedios ya hechos?


Todos los servicios de protección contra el fraude de clics tienen solo una herramienta de lucha directa: esto es bloquear direcciones IP sospechosas o sitios de ubicación en las campañas de Ya.Direct y AdWords.

En caso de que se usen IP dinámicas en su contra, cualquier servicio de control de fraude de clics siempre estará un paso por detrás de los estafadores para bloquearlos por IP: el bot ya hará varios clics en su anuncio cuando el servicio ponga en la lista negra esta IP y deja de mostrar anuncios en él. Además, después de que el software fraudulento no pueda ver sus anuncios, simplemente cambiará la dirección IP, el ID de hardware y continuará sus acciones.

Al atacar anuncios en la Red de Display de Google o en YAN, generalmente se utilizan varias ubicaciones, y los sistemas de protección automática no pueden detectar sitios sospechosos para el bloqueo.

Volvamos al bloqueo de IP: aquí llegamos a la parte más interesante: si AdWords le permite bloquear hasta 500 direcciones IP, entonces Yandex Direct puede bloquear solo 25 direcciones IP únicas por campaña publicitaria. Esta pequeña lista negra de direcciones IP ya no es relevante, ya que ahora puede comprar 500 direcciones IPv4 de forma segura por 10 mil rublos y eludir esta limitación.

Hay dos formas de protegerse de los "clics" de alto nivel:

  1. aprenda a no mostrar anuncios a usuarios o bots fraudulentos, para lo cual necesita encontrar ciertos "patrones" en su comportamiento y características;
  2. detener temporalmente grupos de anuncios específicos y palabras clave que se están orientando.

Cortar parte de la audiencia para salvar la mayor parte


Si aprende a no mostrar publicidad de clics a bots o usuarios fraudulentos, entonces no podrán dañar.

Siempre puede rastrear patrones similares de comportamiento y patrones, por ejemplo, que el fraude generalmente se ejecuta en Windows 7 de 5:00 a 9:00 en Moscú, y establecer un ajuste de la oferta de -100% para un público similar en todas las campañas publicitarias atacadas. La funcionalidad de los ajustes de la oferta en AdWords es bastante extensa, lo que no se puede decir sobre los ajustes en Yandex Direct .

Estamos buscando patrones de fraude a través de los servicios de seguridad.


Para tener una idea de cómo nos están atacando exactamente y rastrear manualmente patrones en tráfico fraudulento, conectamos el servicio antifraude ruso ClickFrog . El producto ha sido conocido por todos desde hace mucho tiempo, popular en el entorno de CPA, etc.

ClickFrog demostró rápidamente una discapacidad completa:

  1. por día asignado no más de 40 direcciones IP sospechosas, con tráfico de Direct a 3.000 mil clics por día e, incluso reconocido por Yandex, 1300 clics "izquierdos" por día;
  2. la herramienta principal para proteger el servicio es el bloqueo por dirección IP, cuyo comando se envía a través de API a J. Direct, sin embargo, tan pronto como se complete la lista negra de 25 direcciones IP, debe eliminar manualmente las últimas IP en cada campaña publicitaria y esperar a que se complete la siguiente lista, y Entonces en un círculo.

Luego, instalamos el código para ClickSease , un servicio estadounidense dirigido a AdWords y que aún no funciona con Yandex.Direct. El servicio, por cierto, tiene, a diferencia de ClickFrog, un período de prueba gratuito de 2 semanas.

ClickSease resultó ser más útil: comenzó a capturar 300-400 IP fraudulentas únicas por día. Para cada servicio de IP bloqueado da estadísticas:

  • Proveedor de servicios de internet
  • la plataforma desde la cual ocurrió la transición;
  • sistema operativo
  • ID de dispositivo único
  • tiempo de la primera y última transición;
  • región

Del informe ClickSease, pudimos identificar patrones en el fraude:
  • en el 81% de los casos, el dispositivo simula un sistema operativo móvil: Android o iOS;
  • En el 59% de los casos, la geolocalización de la dirección IP no se aplica a Moscú, con fraude dirigido a Moscú.

Buscando patrones en fraude manualmente


Sin embargo, incluso estos patrones obvios no fueron suficientes para reducir el daño causado por el fraude, y no quería desactivar los anuncios móviles. Los servicios generalmente solo pueden dar ideas para identificar patrones similares en fraude, y luego debe detectar el fraude en Metric (en caso de un ataque directo) y seleccionarlo en un segmento separado de Yandex Audience para su posterior análisis y bloqueo.


Figura 5. Un ejemplo de análisis de tráfico por grupos de edad en la métrica para buscar patrones de fraude

Tramos de tráfico para ayudar a identificar patrones de fraude:
  • dinámica de audiencia por grupos de edad;
  • dinámica de los intereses a largo plazo de los usuarios;
  • dispositivo y dinámica del sistema operativo.

En el caso de AdWords, la mecánica de la acción contraria es clara:

  1. definimos un segmento de audiencia "infectado" con fraude;
  2. Establecemos ajustes de la oferta de -100% para el segmento seleccionado;
  3. Monitoreamos los cambios en los indicadores: conversión, tiempo en el sitio, profundidad de visualización, tasa de rebote.

En Yandex Direct, la mecánica de la lucha es más compleja y se divide en dos opciones:

a) logró encontrar un patrón de fraude obvio relacionado con el género, la edad o la movilidad:

  1. establecemos un ajuste de la oferta de -50% o -100% para el segmento seleccionado;
  2. Monitoreamos el cambio en los indicadores clave.

b) no se encontraron patrones obvios:

  1. seleccionamos tráfico fraudulento en un segmento separado de Yandex.Audience (por ejemplo, sabía que del 1 de octubre al 20 de octubre no podía haber 5,000 clics en un grupo de anuncios, que siempre tenía no más de 30 visitas por día)
  2. A través de Yandex, creamos un segmento de usuarios similar a nuestro fraude;
  3. establecer un ajuste de la oferta de -100% para un segmento de audiencia creado manualmente;
  4. Probamos cuidadosamente la reducción en las tarifas publicitarias para los segmentos creados por Yandex.

Cree gráficos que muestren fraude


El fraude siempre genera focos y picos obvios , ya sea software abstruso con una imitación del comportamiento de un usuario real o de un grupo de autónomos que realizan la tarea técnica.


Figura 6. Gráfico del número de visitantes por palabras clave por decaminas

El fraude ocurre de manera desigual por varias razones:
  • Para "suavizar" el ataque, debe tener información confidencial y saber quién, cuándo y cuántos clics hacen sus anuncios;
  • el software actúa de manera brusca, y en el minuto, 10 minutos y, a veces, en el gráfico horario, sus acciones serán sorprendentes;
  • incluso si los "escolares" trabajan en su contra desde los tableros de anuncios, entonces actúan en una tarea específica con un algoritmo, y las anomalías generadas por ellos serán fáciles de rastrear.

Si aprende a encontrar y eliminar rápidamente los focos, puede reducir significativamente el daño del fraude. En nuestro caso, un signo obvio fue un aumento anormal en el número de clics en publicidad contextual en 10 minutos específicos o un minuto para algunas palabras clave.

Para la visualización, Google Data Studio es el más adecuado, ya que solo Analytics puede recopilar correctamente los datos desglosados ​​en el tiempo en 1 y 10 minutos, y Metrika, al generar informes sobre dekomints, proporciona indicadores incorrectos.

Cómo construir gráficos en 10 minutos, no por hora, en Google Data Studio
De forma predeterminada, en Analytics o Data Studio, no puede crear gráficos por minuto o durante 10 minutos, pero esto se puede hacer de la siguiente manera en Date Studio:

Paso 1. Edición de campo abierto



Paso 2. Cree copias de los siguientes campos: Año, Mes del año, Día del mes, Hora, Minuto y asígneles un nombre, por ejemplo, Año (día), Mes del año (día), etc. También en los campos copiados, debe cambiar el Tipo del formato de hora y fecha a "número" como se muestra en la figura.


Paso 2. Cambie el tipo del campo copiado de "fecha" a "número"

Paso 3. Cree un nuevo campo en el que escribamos la siguiente fórmula: Año (día) * 10000000 + Mes del año (día) * 100000 + Día del mes (día) * 1000 + Hora (día) * 10 + PISO (Minuto (día) / 10)


Paso 3. Cree un campo calculado "Tiempo para 10 minutos"

Paso 4. Guardamos el campo creado, luego volvemos a la lista de todos los campos y encontramos nuestro nuevo campo "Tiempo por 10 minutos (decamenut)". Es necesario cambiar su tipo de "Número" a "Fecha y hora" como se muestra en la figura, y luego asignar el tipo "Número" a este campo.


Paso 4. Cree un campo calculado "Tiempo para 10 minutos"

Paso 5. Cree un "Gráfico combinado" y configure nuestro nuevo campo "Tiempo para 10 minutos" como parámetro, como se muestra en la figura. Listo


Paso 5. Crea un "cuadro combinado"


Configurar notificaciones sobre los brotes de fraude


Para no seguir todos los casos de fraude manualmente, hice un informe en Google Sheets, que actualiza los datos cada minuto y notifica el inicio del fraude.

Hojas de cálculo de Google admite la API de informes principales , a la que se puede acceder a través del Editor de secuencias de comandos en Hojas de cálculo.

Paso 1. Vaya al editor de script para acceder a Analytics


Figura 7. Editor de scripts para acceder a la API de informes de Analytics Core a través de Google Tables

Paso 2. Escribimos una solicitud de API a Analytics para recibir datos sobre los indicadores necesarios (por ejemplo, el número de usuarios que hicieron clic en publicidad paga en cada minuto del día, como en nuestro caso).

Código de Google Script para solicitar datos de Analytics en Hojas de cálculo de Google
function runDemo() { try { var firstProfile = getFirstProfile(); var results = getReportDataForProfile(firstProfile); outputToSpreadsheet(results); } catch(error) { Browser.msgBox(error.message); } } function getFirstProfile() { var accounts = Analytics.Management.Accounts.list(); if (accounts.getItems()) { var firstAccountId = accounts.getItems()[0].getId(); var webProperties = Analytics.Management.Webproperties.list(firstAccountId); if (webProperties.getItems()) { var firstWebPropertyId = webProperties.getItems()[0].getId(); var profiles = Analytics.Management.Profiles.list(firstAccountId, firstWebPropertyId); if (profiles.getItems()) { var firstProfile = profiles.getItems()[0]; return firstProfile; } else { throw new Error('No views (profiles) found.'); } } else { throw new Error('No webproperties found.'); } } else { throw new Error('No accounts found.'); } } function getReportDataForProfile(firstProfile) { var profileId = firstProfile.getId(); var tableId = 'ga:' + profileId; var startDate = "today"; // getLastNdays(14)  2 weeks (a fortnight) ago. var endDate = "today"; //getLastNdays(0)  Today. var optArgs = { 'dimensions': 'ga:date,ga:hour,ga:minute,ga:sourceMedium', // Comma separated list of dimensions. 'sort': 'ga:date,ga:hour,ga:minute', // Sort by sessions descending, then keyword. //'segment': 'dynamic::ga:isMobile==Yes', // Process only mobile traffic. 'filters': 'ga:sourceMedium==yandex / cpc', 'start-index': '1', 'max-results': '10000' // Display the first 250 results. }; // Make a request to the API. var results = Analytics.Data.Ga.get( tableId, // Table id (format ga:xxxxxx). startDate, // Start-date (format yyyy-MM-dd). endDate, // End-date (format yyyy-MM-dd). 'ga:users', // Comma seperated list of metrics. optArgs); if (results.getRows()) { return results; } else { throw new Error('No views (profiles) found'); } } function getLastNdays(nDaysAgo) { var today = new Date(); var before = new Date(); before.setDate(today.getDate() - nDaysAgo); return Utilities.formatDate(before, 'GMT', 'yyyy-MM-dd'); } function outputToSpreadsheet(results) { var sheets = SpreadsheetApp.getActiveSpreadsheet(); var sheet = sheets.getSheetByName("coeff1"); var range = sheet.getRange('A:E'); range.clear(); // Print the headers. var headerNames = []; for (var i = 0, header; header = results.getColumnHeaders()[i]; ++i) { headerNames.push(header.getName()); } sheet.getRange(1, 1, 1, headerNames.length) .setValues([headerNames]); // Print the rows of data. sheet.getRange(2, 1, results.getRows().length, headerNames.length) .setValues(results.getRows()); } 



Paso 3. Configuramos el disparador para actualizar los datos cada minuto:


Figura 8. Solicitamos nuevos datos cada minuto para una respuesta rápida al fraude

Paso 4. Creamos una tabla dinámica a partir de la hoja actualizada con los datos necesarios una vez por minuto, y analizamos estos indicadores para configurar disparadores para notificaciones por correo electrónico o deshabilitar grupos de anuncios utilizando la API Yandex.Direct o AdWords.

imagen Figura 9. Un ejemplo de configuración de fórmulas para notificaciones de anomalías

Un ejemplo de mi código de Google Script para enviar notificaciones por correo electrónico
 function myFunction() { var ss = SpreadsheetApp.getActiveSpreadsheet(); var sheet = ss.getSheetByName("notification"); var range = sheet.getRange("D2:E4"); // The row and column here are relative to the range // getCell(1,1) in this code returns the cell at B2, B2 var cell = range.getCell(1, 2); Logger.log(cell.getValue()); if (cell.getValue() !== "no") { MailApp.sendEmail("your_email@yandex.ru", "Fraud notification "+cell.getValue(), "Check me "+range.getCell(1, 1).getValue()); } else { } var cell2 = range.getCell(2, 2); Logger.log(cell2.getValue()); if (cell2.getValue() !== "no") { MailApp.sendEmail("your_email@yandex.ru", "Fraud notification "+cell2.getValue(), "Check me "+range.getCell(2, 1).getValue()); } else { } var cell3 = range.getCell(3, 2); Logger.log(cell3.getValue()); if (cell3.getValue() !== "no") { MailApp.sendEmail("your_email@yandex.ru", "Fraud notification "+cell3.getValue(), "Check me "+range.getCell(3, 1).getValue()); } else { } } 


En pocas palabras: cómo vencer el clic


La lucha contra el fraude de clics se puede dividir en tres grupos:

a) Acciones proactivas:
  • cierre de "sitios contaminados";
  • Deshabilitar la publicidad para una audiencia con señales de fraude para usted, por ejemplo, para personas que usan tabletas de San Petersburgo (se pueden usar parámetros más complejos para el bloqueo a través de listas de AdWords y segmentos métricos);
  • ajuste de la oferta para segmentos de audiencia similares a los segmentos de fraude (los segmentos "similares" se crean en Y. Audiencias y listas de Google);
  • bloquee el fraude por las máscaras de red IP (disponible solo en AdWords).

b) Acciones preventivas:
  • Informar reembolsos de presupuesto a AdWords y Direct
  • la investigación de "quién ordenó el ataque contra usted";
  • agrupación de grupos de anuncios sospechosos y frecuentemente atacados en una sola campaña publicitaria;
  • Las "trampas" para los bots más simples, es decir, los botones ocultos en el sitio que solo son visibles para el bot y cuando se hace clic, se incluyen en la lista.

c) Acciones "Post factum":
  • bloqueo por direcciones IP;
  • desconexión rápida de los centros de clics: palabras clave, grupos de anuncios, campañas publicitarias, segmentos de audiencia.

imagen
Figura 10. Protección contra el fraude de clics

Enlaces utiles:


Cómo averiguar quién ordenó el ataque a su anuncio
Cualquier competidor adecuado minimizará su daño al atacar a otros:

  1. en primer lugar, el atacante intentará no mostrar su anuncio en las direcciones en que se está llevando a cabo el ataque en este momento, para no fusionar su CTR y aumentar su CPC;
  2. en segundo lugar, un competidor sin escrúpulos seleccionará tales palabras clave para el ataque, según el cual puede dejar de mostrar sus anuncios sin causar mucho daño a sí mismo.

En nuestro caso, el competidor también comenzó a hacer clic en fraude en 4 direcciones en dos ciudades, por lo que no fue difícil calcularlo.

Para facilitar el análisis de los competidores con los que se cruza, puede ver todos los anuncios de competidores incluidos para cada palabra clave en la interfaz Yandex.Direct:


Figura 9. Todos los anuncios de la competencia por palabra clave


Quien también se enfrentó al clic publicitario contextual: escriba en los comentarios, ¡trataremos de ayudarnos mutuamente!

Source: https://habr.com/ru/post/es423335/


All Articles