Comment battre le clic dans Y. Direct et AdWords pour 600 mille roubles par mois

Au cours des six derniers mois, nous avons réussi à vaincre le «clic» de notre publicité contextuelle avec un budget de 1 million de roubles par mois.

La clé pour vaincre la fraude était la surveillance par minute du trafic avec des notifications de changements anormaux et la désactivation des annonces problématiques par API, et un certain nombre de rapports qui reflètent la situation en temps réel.


Figure 1. Graphique du nombre de visiteurs par mots-clés par décamines

Comment savez-vous que vous êtes attaqué?


L'un des premiers signes d'un "clic" de la publicité sera une augmentation du pourcentage de remboursements pour fraude dans Yandex.Direct et AdWords.
«Dans Yandex Direct, les frais de fraude sont automatiquement reversés au solde de la campagne publicitaire. Le nombre de clics éliminés par le système anti-fraude est affiché dans les rapports "statistiques quotidiennes" "statistiques générales" sur la ligne "clics invalides pour toute la période sélectionnée".
- Aidez J. à diriger les "clics invalides" .

Dans AdWords, l'affichage du niveau des "clics incorrects" peut être activé dans l'onglet "Colonnes":


Figure 2. Colonnes personnalisées avec un niveau de "clic non valide" dans AdWords

Dans notre cas, avec un niveau moyen de « clics invalides » dans Yandex.Direct ≈ 10%, Yandex a soudainement commencé à reverser 40% du budget publicitaire, et après un mois, 54% du tout.

Le prochain signe de fraude est une augmentation déraisonnable du nombre de transitions et de forts changements dans les indicateurs de comportement pour un certain nombre de groupes d'annonces.

Nous avons remarqué que pour un certain nombre de mots clés qui n'ont jamais eu plus de 200 visiteurs par jour, des pointes pouvant atteindre 3 000 visiteurs sont soudainement apparues. En fait, le budget, à l'époque de ces activités, pouvait aller à une seule campagne de publicité s'il n'était pas arrêté à temps.


Figure 3. Croissance déraisonnable du trafic pour un groupe d'annonces particulier dans Direct

Yandex et Google ne protègent pas contre la fraude


Il suffit de lire la discussion sur le niveau de fraude dans la publicité contextuelle dans le Direct Club officiel pour s'assurer que de nombreux annonceurs perdent de l'argent à cause de la fraude.

Google reconnaît officiellement les erreurs de son système de sécurité et fournit aux annonceurs des «Demandes de remboursement» (retour sur budget). Selon les statistiques du service ClickSease, Google Ads retourne en moyenne 12% du budget publicitaire.

Comment rembourser une partie de l'argent pour un clic via AdWords
Vous devez envoyer une réclamation concernant les "clics incorrects" à Adwords, après quoi vous serez remboursé de ≈ 12% de l'argent dépensé. De plus, le service ClickSease envoie automatiquement des demandes de remboursement similaires tous les 2 mois à Google.

Dans notre cas, Google AdWords a d'abord reconnu 18% de notre trafic comme " non valide " et a renvoyé l'argent pour eux, et lorsque nous avons envoyé la réclamation "demandes de remboursement", Google a remboursé 13% supplémentaires du budget.

Yandex ne reconnaît pas la vulnérabilité de ses propres filtres de protection et les plaintes concernant les cas de fraude évidents, envoie un modèle de réponse indiquant que le problème réside avec l'annonceur et son site.

Dans notre cas, le pourcentage de «clics incorrects» dans le rapport de Y. Direct n'a jamais dépassé les 50% convoités pour aucune des campagnes publicitaires, même au moment des explosions les plus violentes, lorsque 80% du budget «a fusionné» dans le groupe d'annonces généralement peu populaire sans appels. et applications.


Figure 4. Niveau de "clics incorrects" dans l'une des campagnes de Direct

Quel niveau d'attaque avons-nous rencontré?


Le trafic de fraude a été dirigé vers quatre secteurs d'activité dans deux villes. Lors de la connexion de nouvelles campagnes publicitaires ou du lancement de campagnes interrompues depuis longtemps, le «clic» leur a également été redistribué en quelques heures.

La fraude aux clics n'était pas liée au temps, et la redistribution du budget, par exemple la nuit, n'a eu aucun effet: nous avons toujours notre volume de trafic restant. Le "clic" était également actif dans le YAN, sur la recherche Yandex et sur le Réseau Display de Google.

Sur le site, les robots simulaient le comportement des utilisateurs, parcouraient les sections du site, sélectionnaient le texte, faisaient défiler et déplaçaient naturellement le curseur.

Existe-t-il des remèdes prêts à l'emploi?


Tous les services de protection contre la fraude aux clics ne disposent que d'un seul outil de lutte directe - cela bloque les adresses IP ou les sites de placement suspects dans les campagnes Ya.Direct et AdWords.

Dans le cas où des IP dynamiques sont utilisées contre vous, tout service de contrôle de la fraude aux clics sera toujours un pas derrière les escrocs pour les bloquer par IP: le bot fera déjà plusieurs clics sur votre annonce au moment où le service met cette IP sur liste noire. et arrêter de diffuser des annonces dessus. De plus, une fois qu'un logiciel frauduleux ne pourra pas voir vos annonces, il modifiera simplement l'adresse IP, le Hardware-ID et poursuivra ses actions.

Lorsque vous attaquez des annonces sur le GDN ou le YAN, divers emplacements sont généralement utilisés et les systèmes de protection automatique ne peuvent pas détecter les sites suspects à bloquer.

Revenons au blocage IP - nous arrivons à la partie la plus intéressante: si AdWords vous permet de bloquer jusqu'à 500 adresses IP, Yandex Direct ne peut bloquer que 25 adresses IP uniques par campagne publicitaire! Une telle petite liste noire d'adresses IP n'est plus pertinente, car vous pouvez désormais acheter en toute sécurité 500 adresses IPv4 pour 10 000 roubles et contourner cette limitation.

Il existe deux façons de vous protéger contre les «clics» de haut niveau:

  1. apprendre à ne pas montrer de publicités à des utilisateurs ou des robots frauduleux, pour lesquels vous devez trouver certains «modèles» dans leur comportement et leurs caractéristiques;
  2. arrêter temporairement des groupes d'annonces et des mots clés spécifiques ciblés.

Coupez une partie de l'auditoire pour en sauver la plupart


Si vous apprenez à ne pas montrer de publicité par clic aux robots ou aux utilisateurs frauduleux, ils ne pourront pas nuire.

Vous pouvez toujours suivre des modèles de comportement et des modèles similaires, par exemple, que la fraude s'exécute généralement sur Windows 7 de 5h00 à 9h00 à Moscou, et définir l'ajustement des enchères sur -100% pour un public similaire dans toutes les campagnes publicitaires attaquées. La fonctionnalité des ajustements des enchères dans AdWords est assez étendue, ce qui ne peut pas être dit des ajustements dans Yandex Direct .

Nous recherchons des modèles de fraude par le biais des services de sécurité


Afin d'avoir une idée de la façon exacte dont ils nous attaquent et de suivre manuellement les tendances du trafic frauduleux, nous avons connecté le service anti-fraude russe ClickFrog . Le produit est connu de tous depuis longtemps, populaire dans l'environnement CPA et ainsi de suite.

ClickFrog a rapidement prouvé un handicap complet:

  1. par jour, pas plus de 40 adresses IP suspectes allouées, avec un trafic provenant de Direct à 3 000 000 clics par jour et, même reconnu par Yandex, 1 300 clics «à gauche» par jour;
  2. le principal outil pour protéger le service est le blocage par adresse IP, dont la commande est envoyée via l'API à J. Direct, cependant, dès que la liste noire de 25 adresses IP est remplie, vous devez supprimer manuellement les dernières IP de chaque campagne publicitaire et attendre que la prochaine liste soit remplie, et donc en cercle.

Ensuite, nous avons installé le code de ClickSease , un service américain destiné à AdWords et ne fonctionnant pas encore avec Yandex.Direct. Le service a d'ailleurs, contrairement à ClickFrog, une période d'essai gratuite de 2 semaines.

ClickSease s'est avéré plus utile: il a commencé à capturer 300 à 400 adresses IP frauduleuses uniques par jour. Pour chaque service IP bloqué donne des statistiques:

  • Fournisseur d'accès Internet
  • la plate-forme à partir de laquelle la transition s'est produite;
  • système d'exploitation
  • ID d'appareil unique
  • heure de la première et de la dernière transition;
  • région.

À partir du rapport ClickSease, nous avons pu identifier les modèles de fraude:
  • dans 81% des cas, l'appareil simule un OS mobile: Android ou iOS;
  • dans 59% des cas, la géolocalisation de l'adresse IP ne s'applique pas à Moscou, avec une fraude dirigée vers Moscou.

Recherche manuelle des modèles de fraude


Cependant, même de tels modèles évidents n'étaient pas suffisants pour réduire les dommages causés par la fraude, et je ne voulais pas désactiver les annonces mobiles. Les services ne peuvent généralement donner que des idées pour identifier des schémas similaires de fraude, puis vous devez détecter la fraude dans Metric (en cas d'attaque sur Direct) et la sélectionner dans un segment d'audience Yandex distinct pour une analyse et un blocage supplémentaires.


Figure 5. Exemple d'analyse du trafic par groupes d'âge dans la métrique pour rechercher des modèles de fraude

Tranches de trafic pour aider à identifier les modèles de fraude:
  • dynamique du public par groupes d'âge;
  • dynamique des intérêts à long terme des utilisateurs;
  • dynamique de l'appareil et du système d'exploitation.

Dans le cas d'AdWords, la contre-mesure est claire:

  1. nous définissons un segment d'audience «infecté» par la fraude;
  2. Nous avons fixé des ajustements d'enchères de -100% pour le segment sélectionné;
  3. Nous suivons l'évolution des indicateurs: conversion, temps passé sur le site, profondeur de visionnage, taux de rebond.

Dans Yandex Direct, les mécanismes de lutte sont plus complexes et sont divisés en deux options:

a) vous avez réussi à trouver un schéma de fraude évident lié au sexe, à l'âge ou à la mobilité:

  1. nous avons défini un ajustement des enchères de -50% ou -100% pour le segment sélectionné;
  2. Nous suivons l'évolution des indicateurs clés.

b) aucun motif évident n'a été trouvé:

  1. nous sélectionnons le trafic de fraude dans un segment Yandex.Audience distinct (par exemple, vous saviez que du 1er au 20 octobre, il ne pouvait pas y avoir 5000 clics sur un groupe d'annonces, qui ne comptait toujours pas plus de 30 visites par jour)
  2. à travers le sosie de Yandex, nous créons un segment d'utilisateurs similaire à notre fraude;
  3. définir un ajustement des enchères de -100% pour un segment d'audience créé manuellement;
  4. Nous testons soigneusement la réduction des tarifs publicitaires pour les segments créés par Yandex.

Créez des graphiques qui montrent la fraude


La fraude génère toujours des foyers et des pics évidents , qu'il s'agisse d'un logiciel abusif imitant le comportement d'un utilisateur réel ou d'un groupe d'indépendants effectuant la tâche technique.


Figure 6. Graphique du nombre de visiteurs par mots-clés par décamines

La fraude se produit de manière inégale pour plusieurs raisons:
  • Pour que l'attaque soit "lissée", vous devez disposer d'informations confidentielles et savoir qui, quand et combien de clics vos annonces font;
  • le logiciel agit par à-coups, et à la minute, à la minute 10 et parfois sur le graphique horaire, ses actions seront frappantes;
  • même si les «écoliers» travaillent contre vous à partir des tableaux d'affichage, ils agissent sur une tâche spécifique avec un algorithme, et les anomalies générées par eux seront faciles à suivre.

Si vous apprenez à trouver et à éliminer rapidement les foyers, vous pouvez réduire considérablement les dommages causés par la fraude. Dans notre cas, un signe évident était une augmentation anormale du nombre de clics sur la publicité contextuelle en 10 minutes ou une minute spécifiques pour certains mots clés.

Pour la visualisation, Google Data Studio est le mieux adapté, car seul Analytics est capable de collecter correctement les données ventilées dans le temps par 1 et 10 minutes, et Metrika, lors de la création de rapports sur les décomptes, donne des indicateurs incorrects.

Comment créer des graphiques en 10 minutes, pas toutes les heures, dans Google Data Studio
Par défaut, dans Analytics ou Data Studio, vous ne pouvez pas créer de graphiques par minute ou pendant 10 minutes, mais cela peut être fait comme suit dans Date Studio:

Étape 1. Ouvrir le champ d'édition



Étape 2. Créez des copies des champs suivants: année, mois de l'année, jour du mois, heure, minute et nommez-les, par exemple, année (jour), mois de l'année (jour), etc. Toujours dans les champs copiés, vous devez changer le type du format d'heure et de date en «nombre» comme indiqué sur la figure.


Étape 2. Modifiez le type du champ copié de "date" à "numéro"

Étape 3. Créez un nouveau champ dans lequel nous écrivons la formule suivante: Année (jour) * 10000000 + Mois de l'année (jour) * 100000 + Jour du mois (jour) * 1000 + Heure (jour) * 10 + PLANCHER (Minute (jour) / 10)


Étape 3. Créez un champ calculé «Temps pendant 10 minutes»

Étape 4. Nous enregistrons le champ créé, puis retournons à la liste de tous les champs et trouvons notre nouveau champ «Temps pendant 10 minutes (décamenut)». Il est nécessaire de changer son type de "Numéro" en "Date et heure" comme indiqué sur la figure, puis de réattribuer le type "Numéro" à ce champ.


Étape 4. Créez un champ calculé «Temps pendant 10 minutes»

Étape 5. Créez un «graphique combiné» et définissez notre nouveau champ «Temps pendant 10 minutes» comme paramètre, comme indiqué sur la figure. C'est fait.


Étape 5. Créez un «graphique combiné»


Configurer les notifications sur les épidémies de fraude


Afin de ne pas suivre manuellement tous les cas de fraude, j'ai fait un rapport dans Google Sheets, qui met à jour les données toutes les minutes et notifie le début de la fraude.

Google Sheets prend en charge l' API Core Reporting , accessible via l'éditeur de script dans Sheets.

Étape 1. Accédez à l'éditeur de script pour accéder à Analytics


Figure 7. Éditeur de script pour accéder à l'API Analytics Core Reporting via Google Tables

Étape 2. Nous écrivons une demande d'API à Analytics pour recevoir des données sur les indicateurs nécessaires (par exemple, le nombre d'utilisateurs qui ont cliqué sur la publicité payante à chaque minute de la journée, comme dans notre cas).

Code Google Script pour demander toutes les données d'Analytics dans Google Sheets
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()); } 



Étape 3. Nous définissons le déclencheur pour mettre à jour les données toutes les minutes:


Figure 8. Nous demandons de nouvelles données chaque minute pour une réponse rapide à la fraude

Étape 4. Nous créons un tableau croisé dynamique à partir de la feuille mise à jour avec les données nécessaires une fois par minute, et analysons ces indicateurs pour configurer les déclencheurs des notifications par e-mail ou désactiver les groupes d'annonces à l'aide de l'API Yandex.Direct ou AdWords.

image Figure 9. Exemple de définition de formules pour les notifications d'anomalies

Un exemple de mon code Google Script pour l'envoi de notifications par e-mail
 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 { } } 


Conclusion: comment battre le clic


La lutte contre la fraude aux clics peut être divisée en trois groupes:

a) Actions proactives:
  • fermeture des "sites pollués";
  • Désactiver la publicité pour un public avec des signes de fraude pour vous, par exemple, pour les personnes sur les tablettes de Saint-Pétersbourg (des paramètres plus complexes de blocage peuvent être utilisés via les listes AdWords et les segments métriques);
  • ajustement des enchères pour des segments d'audience similaires aux segments de fraude (des segments de «sosie» sont créés dans les listes Y. Audiences et Google);
  • bloquer la fraude par les masques de réseau IP (disponible uniquement dans AdWords).

b) Actions préventives:
  • Signaler des remboursements budgétaires à AdWords et Direct
  • l'enquête sur «qui vous a ordonné l'attaque»;
  • regroupement de groupes d'annonces suspects et fréquemment attaqués en une seule campagne publicitaire;
  • "Pièges" pour les bots les plus simples, à savoir les boutons cachés sur le site qui ne sont visibles que par le bot et lorsque vous cliquez dessus, il entre dans la liste.

c) Actions «post factum»:
  • blocage par adresses IP;
  • déconnexion rapide des centres de clics: mots clés, groupes d'annonces, campagnes publicitaires, segments d'audience.

image
Figure 10. Protection contre la fraude aux clics

Liens utiles:


Comment savoir qui a ordonné l'attaque de votre annonce
Tout concurrent adéquat minimisera ses dégâts en attaquant les autres:

  1. premièrement, l'attaquant essaiera de ne pas montrer son annonce dans le sens où l'attaque est en cours pour ne pas fusionner son CTR et augmenter son CPC;
  2. deuxièmement, un concurrent sans scrupules sélectionnera de tels mots clés pour l'attaque, selon lesquels il peut arrêter de diffuser ses annonces sans trop de mal pour lui-même.

Dans notre cas, le concurrent a également commencé à cliquer sur la fraude dans 4 directions dans deux villes, il n'a donc pas été difficile de la calculer.

Pour faciliter l'analyse des concurrents avec lesquels vous vous croisez, vous pouvez voir toutes les annonces de concurrents incluses pour chaque mot clé dans l'interface Yandex.Direct:


Figure 9. Toutes les annonces des concurrents par mot clé


Qui a également fait face au clic publicitaire contextuel - écrivez dans les commentaires, nous allons essayer de nous entraider!

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


All Articles