Identifier les bots Synthetic

Présentation

Certaines parties de vos systèmes peuvent ne pas être accessibles aux robots sans identification appropriée. Il est parfois également préférable de ne pas recueillir de données d’analyse provenant des robots Datadog.

Essayez de combiner plusieurs des méthodes suivantes pour détecter les robots Datadog liés à la surveillance Synthetic.

Adresses IP

Utilisez les plages d’IP de la fonction de surveillance Synthetic correspondant à chaque emplacement géré par Datadog :

https://ip-ranges./synthetics.json

Les IP répertoriées utilisent la notation CIDR (Classless Inter-Domain Routing). Il est possible que vous deviez les convertir en plages d’adresses IPv4 pour pouvoir les utiliser. Les IP répertoriées changent rarement, sauf pour les nouveaux emplacements gérés.

Si vous souhaitez recevoir des alertes en cas de changement des IP répertoriées, créez un test API sur l’endpoint ci-dessus avec une assertion JSONPath comme $.synthetics['prefixes_ipv4_by_location']['aws:ap-northeast-1'].length.

En-têtes par défaut

Identifiez les robots Datadog en utilisant certains en-têtes par défaut qui sont joints aux requêtes générées par les tests Synthetic.

user-agent

Par défaut, un en-tête user-agent est ajouté à l’ensemble des requêtes exécutées par les tests Synthetic. Tout user-agent personnalisé qui est ajouté au test remplace l’en-tête par défaut.

Pour les tests API uniques et à plusieurs étapes, l’en-tête user-agent par défaut est Datadog/Synthetics.

Pour les tests Browser, la valeur de l’en-tête user-agent varie en fonction du navigateur et de l’appareil exécutant le test. La valeur user-agent par défaut se termine toujours par DatadogSynthetics, afin que vous puissiez facilement déterminer qu’il s’agit de tests Synthetic.

sec-datadog

Un en-tête sec-datadog est ajouté à l’ensemble des requêtes exécutées par les tests Synthetic. Sa valeur inclut l’ID du test à son origine.

sec-datadog: Request sent by a Datadog Synthetics API Test (https://docs.datadoghq.com/synthetics/) - test_id: <ID_PUBLIQUE_TEST_SYNTHETIC>
sec-datadog: Request sent by a Datadog Synthetics Browser Test (https://docs.datadoghq.com/synthetics/) - test_id: <ID_PUBLIQUE_TEST_SYNTHETIC>

En-têtes d’APM

Plusieurs autres en-têtes spécifiques à l’APM tels que x-datadog-origin: synthetics sont également ajoutés aux requêtes générées par les tests Synthetic API et Browser.

Personnaliser les requêtes

Vous pouvez tirer parti des options avancées lors de la configuration des tests Browser et API pour ajouter des identifiants spécifiques à vos requêtes de test. Il est par exemple possible d’ajouter des en-têtes, des cookies et des corps de requête personnalisés.

Variables Browser

Lorsqu’un robot Datadog exécute votre application, la variable window._DATADOG_SYNTHETICS_BROWSER est définie sur true. Pour supprimer les actions du robot de vos données d’analyse, intégrez votre code d’analyse dans le test suivant :

if (window._DATADOG_SYNTHETICS_BROWSER === undefined) {
  initializeAnalytics()
}

Si vous utilisez une variable Browser pour identifier les robots Synthetic avec Firefox et Internet Explorer 11, Datadog ne peut pas garantir que la variable sera définie avant l’exécution de votre code.

Cookies

Les cookies datadog-synthetics-public-id et datadog-synthetics-result-id font partie des cookies appliqués à votre navigateur.

Ces cookies peuvent être utilisés dans toutes les étapes sur Firefox et Internet Explorer 11. Pour Edge et Google Chrome, ils sont uniquement appliqués à l’URL de départ.

Pour aller plus loin