Como vencer o clique em Y. Direct e AdWords por 600 mil rublos por mês

Nos últimos seis meses, conseguimos derrotar o "clique" de nossa publicidade contextual com um orçamento de 1 milhão de rublos por mês.

A chave para derrotar a fraude foi o monitoramento por minuto do tráfego, com notificações de alterações anormais e desativação de anúncios problemáticos pela API, além de vários relatórios que refletem a situação em tempo real.


Figura 1. Gráfico do número de visitantes por palavras-chave por decaminas

Como você sabe que está sendo atacado?


Um dos primeiros sinais de um "clique" de publicidade será um aumento na porcentagem de reembolsos por fraude no Yandex.Direct e no AdWords.
“No Yandex Direct, as despesas de fraude são automaticamente devolvidas ao saldo da campanha publicitária. O número de cliques eliminados pelo sistema antifraude é exibido nos relatórios "estatísticas diárias" "estatísticas gerais" na linha "cliques inválidos para todo o período selecionado".
- Ajuda J. Dirija "cliques inválidos" .

No Google AdWords, a exibição do nível de "cliques inválidos" pode ser ativada na guia "colunas":


Figura 2. Colunas personalizadas com um nível de "clique inválido" no AdWords

No nosso caso, com um nível médio de " cliques inválidos " no Yandex.Direto ≈ 10%, o Yandex repentinamente começou a devolver 40% do orçamento de publicidade e, após um mês, 54%.

O próximo sinal de uma fraude é um aumento não razoável no número de transições e fortes mudanças nos indicadores comportamentais para vários grupos de anúncios.

Observamos que, para várias palavras-chave que nunca tiveram mais de 200 visitantes por dia, surgiram repentinamente picos de até 3.000 visitantes. De fato, o orçamento, nos dias de tais atividades, poderia ir para uma campanha publicitária se não fosse interrompido a tempo.


Figura 3. Crescimento irracional do tráfego para um grupo de anúncios específico no Direct

Yandex e Google não protegem contra fraudes


Basta ler a discussão sobre o nível de fraude na publicidade contextual no Direct Club oficial para garantir que muitos anunciantes percam dinheiro por causa de fraude.

O Google reconhece oficialmente os erros de seu sistema de segurança e fornece aos anunciantes "Reivindicações de reembolso" (retorno do orçamento). Segundo as estatísticas do serviço ClickSease, o Google Ads retorna uma média de 12% do orçamento de publicidade.

Como reembolsar parte do dinheiro por um clique no Google AdWords
Você deve enviar uma reclamação sobre "cliques inválidos" ao Google AdWords, após o qual será reembolsado com ≈ 12% do dinheiro gasto. Além disso, o serviço ClickSease envia automaticamente solicitações semelhantes de reembolso a cada 2 meses ao Google.

No nosso caso, o Google AdWords primeiro reconheceu 18% do tráfego como " inválido " e devolveu o dinheiro por eles. Quando enviamos a reclamação de "solicitações de reembolso", o Google reembolsou outros 13% do orçamento.

O Yandex não reconhece a vulnerabilidade de seus próprios filtros de proteção e reclamações sobre casos óbvios de fraude, envia uma resposta de modelo de que o problema está no anunciante e em seu site.

No nosso caso, a porcentagem de "cliques inválidos" no relatório da Y. Direct nunca subiu acima dos 50% cobiçados por qualquer uma das campanhas de publicidade, mesmo nos dias das explosões mais violentas, quando 80% do orçamento "se fundiram" no grupo de anúncios geralmente pouco popular sem chamadas e aplicações.


Figura 4. O nível de "cliques inválidos" em uma das campanhas no Direct

Que nível de ataque encontramos?


O tráfego de fraudes foi direcionado para quatro linhas de negócios em duas cidades. Ao conectar novas campanhas de publicidade ou iniciar campanhas há muito tempo, em poucas horas o "clique" também foi redistribuído.

A fraude de cliques não estava vinculada ao tempo e a redistribuição do orçamento, por exemplo, à noite, não teve efeito: ainda recebemos nosso volume de tráfego restante. "Clicar" estava igualmente ativo na YAN, na pesquisa Yandex e na Rede de Display do Google.

No site, os bots simulavam o comportamento do usuário, navegavam pelas seções do site, selecionavam o texto, rolavam naturalmente e moviam o cursor.

Existem remédios prontos?


Todos os serviços de proteção contra fraudes por clique têm apenas uma ferramenta de luta direta - isso está bloqueando endereços IP ou sites de posicionamento suspeitos nas campanhas Ya.Direct e AdWords.

Caso IPs dinâmicos sejam usados ​​contra você, qualquer serviço de controle de fraude de cliques estará sempre um passo atrás dos golpistas ao bloqueá-los por IP: o bot já fará vários cliques no seu anúncio quando o serviço colocar na lista negra esse IP e pare de exibir anúncios nele. Além disso, depois que um software fraudulento não conseguir ver seus anúncios, ele simplesmente mudará o endereço IP, ID do hardware e continuará suas ações.

Ao atacar anúncios na GDN ou YAN, geralmente são usados ​​vários canais, e os sistemas de proteção automática não conseguem detectar sites suspeitos de bloqueio.

Vamos voltar ao bloqueio de IP - aqui chegamos à parte mais interessante: se o AdWords permitir bloquear até 500 endereços IP, o Yandex Direct poderá bloquear apenas 25 endereços IP exclusivos por campanha publicitária! Uma lista negra tão pequena de endereços IP não é mais relevante, pois agora você pode comprar com segurança 500 endereços IPv4 por 10 mil rublos e contornar essa limitação.

Existem duas maneiras de se proteger de "cliques" de alto nível:

  1. aprenda a não exibir anúncios para usuários ou bots fraudulentos, para os quais você precisa encontrar certos "padrões" em seu comportamento e características;
  2. interrompa temporariamente grupos de anúncios e palavras-chave específicos que estão sendo segmentados.

Corte parte da audiência para economizar a maior parte


Se você aprender a não exibir publicidade de clique para bots ou usuários fraudulentos, eles não poderão prejudicar.

Você sempre pode rastrear padrões semelhantes de comportamento e padrões, por exemplo, que a fraude geralmente é executada no Windows 7 das 5:00 às 9:00 em Moscou e define o ajuste de lance para -100% para um público semelhante em todas as campanhas publicitárias atacadas. A funcionalidade dos ajustes de lance no Google AdWords é bastante extensa, o que não pode ser dito sobre ajustes no Yandex Direct .

Estamos à procura de padrões de fraude através de serviços de segurança


Para ter uma idéia de como exatamente eles estão nos atacando e rastrear manualmente padrões em tráfego fraudulento, conectamos o serviço antifraude russo ClickFrog . O produto é conhecido por todos há muito tempo, popular no ambiente de CPA e assim por diante.

O ClickFrog provou rapidamente uma completa incapacidade:

  1. por dia alocou não mais de 40 endereços IP suspeitos, com tráfego do Direct a 3.000 mil cliques por dia e, mesmo reconhecido pela Yandex, 1300 cliques "deixados" por dia;
  2. a principal ferramenta para proteger o serviço é o bloqueio pelo endereço IP, cujo comando é enviado via API para J. Direct, no entanto, assim que a lista negra de 25 endereços IP é preenchida, é necessário excluir manualmente os últimos IPs em cada campanha de publicidade e aguardar o preenchimento da próxima lista. então em um círculo.

Em seguida, instalamos o código do ClickSease , um serviço americano voltado para o AdWords e que ainda não trabalha com o Yandex.Direct. A propósito, o serviço tem, diferentemente do ClickFrog, um período de teste gratuito de 2 semanas.

O ClickSease acabou sendo mais útil: começou a capturar 300-400 IPs fraudulentos exclusivos por dia. Para cada serviço IP bloqueado, fornece estatísticas:

  • Fornecedor de Serviços Internet
  • a plataforma a partir da qual a transição ocorreu;
  • sistema operacional
  • ID do dispositivo exclusivo
  • hora da primeira e da última transição;
  • região.

No relatório ClickSease, conseguimos identificar padrões na fraude:
  • em 81% dos casos, o dispositivo simula um sistema operacional móvel: Android ou iOS;
  • em 59% dos casos, a localização geográfica do endereço IP não se aplica a Moscou, com a fraude direcionada a Moscou.

Procurando padrões manualmente em fraudes


No entanto, mesmo esses padrões óbvios não foram suficientes para reduzir os danos causados ​​por fraudes, e eu não queria desativar os anúncios para celular. Geralmente, os serviços são capazes de fornecer idéias para identificar padrões semelhantes de fraude e, então, você precisa detectar a fraude no Metric (no caso de um ataque ao Direct) e selecioná-la em um segmento separado do Yandex Audience para análise e bloqueio adicionais.


Figura 5. Um exemplo de análise de tráfego por faixas etárias no Metric para pesquisar padrões de fraude

Fatias de tráfego para ajudar a identificar padrões de fraude:
  • dinâmica do público-alvo por faixas etárias;
  • dinâmica de interesses de longo prazo dos usuários;
  • dinâmica de dispositivos e sistemas operacionais.

No caso do Google AdWords, a contramedida é clara:

  1. definimos um segmento de público "infectado" por fraude;
  2. Definimos ajustes de lance de -100% para o segmento selecionado;
  3. Monitoramos mudanças nos indicadores: conversão, tempo no site, profundidade de visualização, taxa de rejeição.

No Yandex Direct, a mecânica da luta é mais complexa e dividida em duas opções:

a) você conseguiu encontrar um padrão óbvio de fraude relacionado a sexo, idade ou mobilidade:

  1. definimos um ajuste de lance de -50% ou -100% para o segmento selecionado;
  2. Monitoramos a mudança nos principais indicadores.

b) não foram encontrados padrões óbvios:

  1. selecionamos o tráfego de fraude em um segmento Yandex.Audience separado (por exemplo, você sabia que de 1 a 20 de outubro não poderia haver 5.000 cliques em um grupo de anúncios, que sempre tinha mais de 30 visitas por dia)
  2. por meio do Yandex, criamos um segmento de usuários semelhante à nossa fraude;
  3. defina um ajuste de lance de -100% para um segmento de público-alvo criado manualmente;
  4. Testamos cuidadosamente a redução nas taxas de publicidade para segmentos criados pela Yandex.

Crie gráficos que mostrem fraudes


A fraude sempre gera focos e picos óbvios , seja um software obscuro com uma imitação do comportamento de um usuário real ou de um grupo de freelancers que executam a tarefa técnica.


Figura 6. Gráfico do número de visitantes por palavras-chave por decaminas

A fraude ocorre de maneira desigual por vários motivos:
  • Para facilitar o ataque, você precisa ter informações confidenciais e saber quem, quando e quantos cliques seus anúncios fazem;
  • o software age em movimentos bruscos e, no minuto, 10 minutos e, às vezes, no gráfico horário, suas ações serão impressionantes;
  • mesmo que “crianças em idade escolar” trabalhem contra você em quadros de avisos, eles agem em uma tarefa específica com um algoritmo, e as anomalias geradas por eles serão fáceis de rastrear.

Se você aprender a encontrar e eliminar rapidamente os focos, poderá reduzir significativamente os danos causados ​​pela fraude. No nosso caso, um sinal óbvio foi um aumento anormal no número de cliques na publicidade contextual em 10 minutos específicos ou em um minuto para algumas palavras-chave.

Para visualização, o Google Data Studio é mais adequado, pois apenas o Analytics consegue coletar dados detalhados no tempo por 1 e 10 minutos, e o Metrika, ao criar relatórios sobre dekomints, fornece indicadores incorretos.

Como criar gráficos em 10 minutos, e não de hora em hora, no Google Data Studio
Por padrão, no Analytics ou no Data Studio, você não pode criar gráficos por minuto ou por 10 minutos, mas isso pode ser feito da seguinte maneira no Date Studio:

Etapa 1. Abra a edição do campo



Etapa 2. Crie cópias dos seguintes campos: Ano, Mês do ano, Dia do mês, Hora, Minuto e nomeie-os, por exemplo, Ano (dia), Mês do ano (dia) e assim por diante. Também nos campos copiados, você deve alterar o Tipo do formato de data e hora para "número", conforme mostrado na figura.


Etapa 2. Altere o tipo do campo copiado de "data" para "número"

Etapa 3. Crie um novo campo no qual escrevemos a seguinte fórmula: Ano (dia) * 10000000 + Mês do ano (dia) * 100000 + Dia do mês (dia) * 1000 + Hora (dia) * 10 + PISO (Minuto (dia) / 10)


Etapa 3. Crie um campo calculado "Tempo por 10 minutos"

Etapa 4. Salvamos o campo criado, retornamos à lista de todos os campos e encontramos nosso novo campo "Tempo por 10 minutos (decamenut)". É necessário alterar seu tipo de "Número" para "Data e hora", como mostrado na figura, e depois atribuir o tipo "Número" de volta a este campo.


Etapa 4. Crie um campo calculado "Tempo por 10 minutos"

Etapa 5. Crie um "Gráfico combinado" e defina nosso novo campo "Tempo por 10 minutos" como parâmetro, conforme mostrado na figura. Feito.


Etapa 5. Crie um "gráfico de combinação"


Configurar notificações nos surtos de fraude


Para não acompanhar todos os casos de fraude manualmente, fiz um relatório no Planilhas Google, que atualiza os dados a cada minuto e notifica o início da fraude.

O Planilhas Google suporta a API de relatórios principais , que pode ser acessada através do Editor de scripts no Planilhas.

Etapa 1. Acesse o editor de scripts para acessar o Analytics


Figura 7. Editor de scripts para acessar a API de relatórios principais do Analytics via Google Tables

Etapa 2. Escrevemos uma solicitação de API ao Analytics para receber dados sobre os indicadores necessários (por exemplo, o número de usuários que clicaram em publicidade paga a cada minuto do dia, como no nosso caso).

Código do Script do Google para solicitar dados do Analytics no Planilhas 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()); } 



Etapa 3. Definimos o gatilho para atualizar dados a cada minuto:


Figura 8. Solicitamos novos dados a cada minuto para uma resposta rápida a fraudes

Etapa 4. Criamos uma tabela dinâmica a partir da planilha atualizada com os dados necessários uma vez por minuto e analisamos esses indicadores para configurar gatilhos para notificações por email ou desativar grupos de anúncios usando a API Yandex.Direct ou o AdWords.

imagem Figura 9. Um exemplo de configuração de fórmulas para notificações de anomalia

Um exemplo do meu código do Google Script para enviar notificações por email
 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 { } } 


Bottom line: como vencer o clique


A luta contra a fraude por clique pode ser dividida em três grupos:

a) Ações proativas:
  • desligamento de "sites poluídos";
  • Desativar publicidade para um público com sinais de fraude para você, por exemplo, para pessoas em tablets de São Petersburgo (parâmetros mais complexos de bloqueio podem ser usados ​​nas listas do AdWords e nos segmentos Métricos);
  • ajuste de lance para segmentos de público-alvo semelhantes a segmentos de fraude (segmentos "parecidos" são criados nas listas Y. Audiências e Google);
  • bloquear fraudes por máscaras de rede IP (disponível apenas no Google AdWords).

b) Ações preventivas:
  • Relatórios de reembolsos de orçamento para o AdWords e o Direct
  • a investigação de "quem ordenou o ataque contra você";
  • agrupamento de grupos de anúncios suspeitos e frequentemente atacados em uma única campanha publicitária;
  • "Armadilhas" para os bots mais simples, como botões ocultos no site que são visíveis apenas para o bot e, quando clicados, entram na lista.

c) Ações “post factum”:
  • bloqueio por endereços IP;
  • desconexão rápida de centros de cliques: palavras-chave, grupos de anúncios, campanhas publicitárias, segmentos de público-alvo.

imagem
Figura 10. Proteção contra clique fraudulento

Links úteis:


Como descobrir quem ordenou o ataque ao seu anúncio
Qualquer competidor adequado minimizará seus danos ao atacar outros:

  1. primeiro, o atacante tentará não mostrar seu anúncio nas direções em que o ataque está acontecendo no momento, para não mesclar sua CTR e aumentar seu CPC;
  2. segundo, um concorrente inescrupuloso selecionará essas palavras-chave para o ataque, segundo as quais ele pode parar de exibir seus anúncios sem causar muitos danos a si mesmo.

No nosso caso, o concorrente também começou a clicar em fraudes em quatro direções em duas cidades, por isso não foi difícil calculá-las.

Para facilitar a análise dos concorrentes com os quais você interage, você pode ver todos os anúncios concorrentes incluídos para cada palavra-chave na interface Yandex.Direct:


Figura 9. Todos os anúncios concorrentes por palavra-chave


Quem também enfrentou o clique de publicidade contextual - escreva nos comentários, tentaremos ajudar um ao outro!

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


All Articles