ad.watch: Investiguer sur les Publicités Politiques sur Facebook
Par Manuel Beltrán and Nayantara Ranganathan
En bref: Deux investigateurs retracent leur processus de création du projet ad.watch, une enquête de type recherche-ouverte sur la publicité politique sur Facebook. Cette étude de cas retrace le déroulement du projet - avec ses révélations, ses obstacles, ses techniques et ses outils - et l'évolution d'une ressource et base de données croissante qui facilite les investigations sur les publicités politiques à travers le monde.
Voici comment nous en sommes arrivés à publier ad.watch, un projet pour découvrir des informations sur les annonces politiques (publicités) publié sur Facebook et Instagram.
Une grande partie de la publicité sur Internet est personnalisée, une méthode communément appelée publicité ciblée. Les publicités ciblées utilisent des informations psychologiques, comportementales et autres, concernant les personnes pour présenter à chacun⋅e d'entre nous un message différent. La différence peut se situer au niveau du contenu, de la conception, de la diffusion ou d'autres caractéristiques. L'adaptation des messages est complétée par des informations sur leur efficacité, permettant de vérifier les hypothèses créées lors de l'établissement du profil psychologique ou comportemental.
Parce que les politiciens utilisent aujourd'hui des plateformes en ligne pour faire connaître leurs campagnes et promouvoir leurs messages, et ces plateformes diffusent les annonces sur la base d'informations personnelles, la phrase « ce qui est personnel est politique » a pris une toute nouvelle dimension. Les publicités sont personnalisées en fonction de nos données personnelles et de nos comportements, et nous recevons ces publicités ciblées sur nos écrans privés. Cependant, la compréhension de ces mécanismes n'est pas simple. L'infrastructure de diffusion de la publicité fonctionne dans l'invisibilité, les plateformes se donnant beaucoup de mal pour obscurcir leur mécanisme et établissent de nombreux obstacles à la compréhension à leurs fonctionnements. Souvent, même les annonceurs n'ont pas une image complète des personnes que leurs publicités touchent, ni des raisons pour lesquelles elles le font.
Nous sommes Nayantara et Manuel, et nous avons créé ad.watch pour comprendre les nouveaux canaux, sur lesquels la propagande est créée et circule en ligne.
Données sur les annonces politiques sur les plateformes de médias sociaux
ad.watch compile les publicités politiques publiées sur Facebook et Instagram par plus de 300 acteurs politiques dans 39 pays. Il comprend des données et des histoires mise ne visualisation qui vous permettent de parcourir ces publicités et de les analyser individuellement ou sous forme d'ensembles de données par pays, par parti politique et autres catégories. Le projet souligne que pour comprendre comment fonctionne la propagande politique en ligne, il ne suffit pas d'étudier son apparence ou son contenu. Il est essentiel de prêter attention à la façon dont elle circule. Cela signifie qu'il faut examiner les informations sur la façon dont les publicités opèrent un traitement sur différentes catégories de personnes − en fonction de leur lieu de résidence, de leur âge, de leur sexe perçu, etc.
Au moment où nous écrivons ce cas de méthodologie, fin 2019, cela fait plus de cinq mois que nous avons lancé le projet. Les réponses à ce projet ont été extrêmement positives et il a été utilisé par des journalistes couvrant les élections et les médias sociaux pour investiguer sur des questions dans un certain nombre de pays.
« Je suis journaliste d'investigation depuis longtemps, et des données comme celles-ci sont essentielles pour rendre compte des activités de campagne à l'ère numérique. Il ne suffit plus de regarder les contributions et les dépenses dans les rapports de d'information », a déclaré un utilisateur qui a partagé le lien vers ad.watch sur HackerNews.
Le projet a été présenté dans les médias et les sites de reportage technique comme Vice, Huffington Post et Le Hindu. Les médias télévisés comme SkyNews au Royaume-Uni et ORF en Autriche ont utilisé les données pour découvrir des histoires sur la politique britannique et les élections autrichiennes. Il a a également alimenté les conversations en cours sur les annonces et les plates-formes politiques et a été présenté dans des expositions d'art aux Pays-Bas, L'Argentine, la Norvège, les États-Unis et l'Inde.
Mais nous n'en sommes pas arrivés là facilement. Les questions que nous avions posées nous l'avons modifiée au fil du temps, et notre expertise et nos compétences n'ont pas toujours correspondu aux tâches que nous voulions accomplir. Essayer de comprendre les l'exploitation d'une infrastructure aussi obscure par une entreprise aussi puissante était une tâche gigantesque.
Comme nous n'avions pas d'objectif précis au départ, nous avons suivi des fils qui nous intéressaient et nous avons tenté de contourner les obstacles. Nous racontons ainsi l'histoire d'un voyage d'investigation pour ad.watch à travers différentes considérations pratiques, éthiques, techniques et politiques.
Donner un sens aux élections indiennes
Nous étions en Inde en avril 2019 lorsque les élections législatives indiennes ont commencé. C'était censé être le plus grand exercice de démocratie de l'histoire. En raison de la taille du pays, avec une population de plus de 1,3 milliard d'habitants et un grand nombre de sièges au Parlement (545), les élections devaient se dérouler en sept phases sur une période d'un mois, du 11 avril au 19 mai 2019. Les différentes régions ont organisé des élections à des jours différents.
Comme nous étions tous deux intéressé⋅e⋅s de technologie et de politique, nous avons commencé à observer le rôle de l'internet, des données et des sociétés de médias sociaux dans les élections. Nous nous sommes particulièrement attacher à comprendre comment les nouvelles formes de médias fonctionnaient pendant le processus électoral. Le rôle de la télévision, des journaux et des autres médias traditionnels dans les campagnes politiques est assez bien compris − il est soumis à des réglementations et à été assujéti par une culture répandue depuis un certain temps. Cependant il n'y avait guère d'auditoire sensibilisé à la relation entre les médias sociaux et les publicités politiques ciblées, ni à la manière dont les régulateurs, le public et les chercheuses et chercheurs curieux comme nous l'aborderaient.
Les plateformes de médias sociaux ont connu une croissance rapide et, dans certains cas, dominent l'écosystème médiatique pendant les élections. Les phénomènes via Internet comme les « sujets de tendance » (sujets populaires à des moments particuliers) influencent également l'orientation des reportages et des débats sur les médias traditionnels. Pourtant, ces phénomènes − et la façon dont ils sont générés et se propagent − sont plutôt opaques. Il est donc difficile pour les législateurs ou le grand public d'avoir des réponses appropriées. Cet état de fait nous a incité à nous concentrer sur la propagande électorale via les médias sociaux.
Comme la loi électorale indienne a été mise en place bien avant l'utilisation de publicités numériques personnalisées, nous avons dû nous demander comment ces lois seraient appliquées sur les plateformes de médias sociaux, en particulier avec la nature échelonnée des élections. Un détail particulier qui nous a intrigués était de savoir si la « période de silence » serait observée sur les médias sociaux et comment la Commission électorale indienne surveillerait cela.
Note :
La période de silence est un moment juste avant les jours d'élection où les partis politiques ne sont pas autorisés à faire campagne, à organiser des rassemblements ou à publier des annonces. Elle vise à donner aux électrices et électeurs une période de réflexion et de décision sans que la campagne n'exerce sur eux une influence supplémentaire susceptible d'influencer leur décision de vote.
La propagande circule en Inde sur une vaste gamme de plateformes. Les suspects habituels comme WhatsApp, Facebook, Instagram, Google et Twitter étaient utilisés de manière intéressante, mais d'autres comme ShareChat et TikTok abritaient également de vastes quantités de propagande organisée et non organisée. Nous avons commencé à surveiller les différentes mesures liées aux élections prises par ces plateformes, ainsi que par les applications de livraison de nourriture et de fintech (services de technologie financière) comme Swiggy, PayTM et d'autres.
Nous avons passé un certain temps à rechercher comment les plates-formes d'iInternet traitaient l'utilisation de leurs plateformes pour les messages politiques et la publicité. Nous avons trouvé différentes approches : à la mi-2019, TikTok a introduit une fonctionnalité permettant aux résultats de recherche et aux hashtags politiques populaires de diffuser un message d'intérêt public demandant aux gens de se prémunir contre les « fausses nouvelles »; d'autres, comme Google, exigeaient une certification des autorités locales avant qu'une annonce ne soit diffusée sur les plateformes publicitaires de Google. Après plusieurs scandales concernant leur rôle dans la manipulation des élections, Facebook a subi de nombreuses pressions pour prendre des mesures préventives.
Capture d'écran: Certains hashtags sur TikTok comme #Ambedkar sont apparus avec un «Public Service Announcement (PSA)» appelant à un comportement responsable, tandis que d'autres comme #chowkidar qui regroupaient du contenu incendiaire directement pertinent pour les élections n'avaient pas le même PSA. Date: 3 mai 2019. Source: Nayantara Ranganathan
Il n'y avait pas de ligne directrice ou d'approche unique et claire partagées par toutes les plateformes. Au lieu de cela, chaque société testait les courants pour voir comment elle allait gérer les élections indiennes et le flot de contenu politique.
Afin d'approfondir la question, nous avons dû décider quelles plateformes numériques surveiller. Comme nous n'avions ni le temps ni les ressources pour les examiner toutes, nous avons décidé de concentrer la partie préliminaire de l'enquête sur Facebook, car nous savions que c'était l'une des plateformes publicitaires en ligne les plus utilisées en Inde.
Note :
Avec plus de 241 millions d'utilisat⋅rices⋅eurs actifs chaque mois (début 2020), Facebook compte plus d'utilisat⋅rices⋅eurs en Inde que dans tout autre pays. Il se trouve que Facebook est l'une des plateformes de médias sociaux les plus utilisées en Inde après WhatsApp qui appartient également à Facebook (au moment où nous écrivons ces lignes, fin 2019-début 2020).
Il n'a pas été facile de lancer cette investigation. Facebook avait récemment mis en place des outils visant à rendre les publicités politiques plus transparentes en Inde et ailleurs.
Capture d'écran: annonce de Facebook concernant l'introduction de la «Ads Disclaimer (clause de non-responsabilité relative aux annonces)», de la «Ads Library (bibliothèque d'annonces)» et des mécanismes d'application. Date: 10 juin 2019. Source: https://about.fb.com/news/2018/12/ad-transparency-in-india/, lien archivé ici
La bibliothèque d'annonces de Facebook permet de parcourir les annonces politiques par le biais de recherches par mots clés et par nom de page. Mais lorsque nous avons commencé à l'explorer, nous avons rencontré des problèmes : les requêtes de recherche ne donnaient pas de résultats complets − juste une sélection d'annonces dont la logique n'était pas claire pour nous. En outre, il n'y avait aucun moyen de trouver la copie exacte de l'annonce que vous auriez pu remarquer dans l'outil auparavant, car les annonces n'étaient pas marquées avec des identifiants uniques pour les retrouver.
Notre intention était de récupérer les données afin de surveiller la période de silence tout au long des sept phases des élections, ce qui signifie que nous devions filtrer les annonces à la fois par région et par période de diffusion. Une telle investigation dépassait la portée de ce que la bibliothèque des annonces pouvait offrir. (Des mois plus tard, la bibliothèque des annonces a marqué chaque campagne publicitaire avec des codes numériques uniques (ou "identifiants") pour la traçabilité).
Cela nous a poussés à chercher d'autres moyens de surveiller les annonces pour les besoins de notre investigation. Nous en sommes arrivés à la conclusion que nous devions créer notre propre base de données d'annonces.
Après avoir creusé un peu plus, nous avons trouvé un outil inconnu et à peine documenté appelé Facebook Ad Library API (Application Programming Interface), qui venait d'être mis en service au moment où nous l'avons examiné en 2019. Tous les endroits où l'on cherchait des informations sur cet outil à l'époque − Github, Reddit et autres forums − étaient muets sur l'utilisation de l'API. Facebook a fait peu d'efforts pour la documenter et communiquer à son sujet. Nous espérions que le fait de s'y retrouver dans l'API pourrait nous permettre de construire notre propre base de données de manière programmatique (bien qu'aucun d'entre nous n'ait de compétences avancées en programmation) et de poser des questions plus pertinentes sur les données.
L'accès à l'API a nécessité plusieurs étapes exigeantes :
nous devions avoir un compte Facebook
ce compte devait porter exactement le même nom que nos documents officiels émis par le gouvernement
Nous avons dû ajouter un numéro de téléphone à notre compte et permettre une authentification à deux facteurs
nous devions présenter une copie de notre preuve d'identité parmi une liste de documents sélectionnés que Facebook accepte, comme un permis de conduire, etc.
et enfin, en fonction de notre nationalité, nous devions suivre des étapes supplémentaires
Cette liste diffère d'un pays à l'autre.
Note : Au cours de ce processus, nous avons rencontré quelques difficultés lors de la vérification, notamment une visite à domicile, mais nous y reviendrons plus tard.
Aussi difficile qu'ait été la vérification, il a été tout aussi difficile d'apprendre à utiliser la plate-forme une fois que nous y avons eu accès.
Se familiariser avec l'API
Nous sommes finalement parvenus dans l'API de Facebook, mais à ce stade, nous ne savions pas trop comment l'utiliser. Comme vous le verrez, en apprenant à l'utiliser, nous avons rencontré des questions sur la façon de créer des requêtes mais aussi sur la façon de réorienter les résultats sous une forme qui serait utile.
Capture d'écran: API de Facebook Graph. Date: 10 June 2019. Source: Nayantara Ranganathan
Manuel : J'ai passé de nombreuses journées à comprendre comment créer des requêtes et ce qu'il était possible de faire en premier lieu. En l'absence d'une documentation appropriée sur l'API, et sans grande discussion à ce sujet sur d'autres forums (peut-être parce qu'elle venait de sortir), tout cela était un terrain nouveau et inexploré. Pour pouvoir utiliser la plateforme, j'ai dû concevoir une requête (une liste de questions codées) qui demandait à Facebook les données dont j'avais besoin.
Au début, j'ai commencé à interroger par requête les publicités à l'aide du paramètre
&search_terms
, qui renvoie toutes les publicités contenant le terme en question. Par exemple, en interrogeant&search_terms='modi'
, j'ai reçu toutes les publicités contenant le texte 'modi' (c'est-à-dire Narendra Damodardas Modi − candidat aux élections indiennes de 2019, et Premier ministre de l'Inde depuis 2014 et à partir de 2019 au moment de la rédaction de cet article) et présentées dans les pays spécifiés dans le paramètre obligatoire&ad_reached_countries=['IN']
. Les pays sont spécifiés par un code de pays ISO à deux lettres, IN pour l'Inde, dans ce cas.
En interrogeant l'API par le biais des termes de recherche, nous avons pu obtenir toutes les différentes annonces concernant un terme particulier. Cependant, cela ne nous permettait pas de comprendre de manière exhaustive toutes les annonces politiques achetées par un parti particulier en Inde, car la recherche par mot-clé la plus poussée laissait toujours certaines annonces hors du champ. En outre, les annonces étaient parfois dans des langues autres que l'anglais, ou contenaient des caractères unicode comme des emojis que nous ne pouvions pas prévoir.
Au lieu de chercher par la méthode des mots-clés, nous avons essayé d'utiliser le paramètre &search_page_ids=
, mais nous avons vite appris que la recherche de pages et la recherche par mots-clés n'étaient pas compatibles et ne pouvaient pas être utilisées simultanément. Nous avons donc décidé d'abandonner la méthode par mot-clé et d'utiliser les ID de pages comme points d'entrée. Cela nous a permis de collecter toutes les publicités sur une page Facebook dans un pays donné. Nous avons découvert qu'il était possible d'ajouter jusqu'à 10 ID de page différents en une seule requête. Cela nous a conduit à envisager la possibilité de résoudre le problème de la collecte de toutes les publicités des acteurs politiques en collectant manuellement tous leurs Page ID et en construisant une requête par groupe de 10. La première étape a consisté à identifier les acteurs politiques dont nous devions collecter les annonces. Dans le cas de l'Inde, cela a été fait par Nayantara, car elle connaissait bien le contexte. Nous l'avons ensuite vérifiée auprès d'autres personnes de nos réseaux.
Capture d'écran: Page du Parti du Congrès de l'YSR sur Facebook https://www.facebook.com/ysrcpofficial/. Date: 29 novembre 2019. Source: Nayantara Ranganathan
Une fois que nous avons eu la liste complète des principaux candidats et partis politiques qui nous intéressaient, nous avons dû rechercher en ligne leurs pages Facebook pour obtenir leurs Page ID − un numéro qui identifie de manière unique chaque page du FB. Cela a nécessité un processus spécifique pour chaque page.
Tout d'abord, nous devions trouver les pages des acteurs politiques sur Facebook. Dans certains cas, les pages étaient faciles à trouver ; d'autres fois, nous devions discerner s'il s'agissait de pages de fans ou de pages officielles. Certains acteurs politiques avaient plusieurs pages, d'autres changeaient constamment de nom en raison de coalitions ou d'un changement d'une image de marque politique, et parfois il n'y avait pas de pages pour certains partis et candidats. Cela signifie que nous avons dû faire un gros travail pour comprendre si nous étions arrivés à la bonne page. Les pages étaient parfois affichées dans des langues régionales, et rien qu'en Inde, il y a 22 langues officielles et neuf écritures différentes. Et naturellement, ce défi est devenu de plus en plus complexe au fur et à mesure que le projet s'est développé, comme nous le verrons plus tard.
Une fois que nous avons collecté les pages Facebook, nous avons suivi une tâche simple mais répétitive :
Cliquer avec le bouton droit de la souris sur la photo du profil et l'ouvrir dans un nouvel onglet.
À l'intérieur de cette URL, trouvez le numéro d'identification de la page, le sélectionner et l'enregistrer. De cette façon, nous avons cartographié, collecté et vérifié les ID de page.
Une fois que nous avons eu cette liste d'ID de page, nous avons composé notre requête, qui ressemblait à ceci :
ads_archive?ad_active_status=ALL&ad_reached_countries=['IN']&fields=ad_snapshot_url,ad_creation_time,ad_creative_body,ad_creative_link_caption,ad_creative_link_description,ad_creative_link_title,ad_delivery_start_time,ad_delivery_stop_time,currency,demographic_distribution,funding_entity,impressions,page_id,page_name,region_distribution,spend&limit=99&search_page_ids=121439954563203,218904931482352,351616078284404,1447651982136257,1473429256300357,192136870799912,290805814352519,241701912507991,245976872240667,163382127013868&transport=cors
Comme vous pouvez le voir ci-dessus, nous avons également inclus d'autres paramètres, qui ont été mentionnés dans la documentation de l'API de Facebook, par ailleurs peu abondante:
ad_active_status=ALL
− ce qui signifie que nous recherchions toutes les annonces, actives et inactives.ad_reached_countries=['IN']
− ce qui signifie que le pays où les publicités ont été diffusées doit être l'Inde (IN).limit=99
signifie que nous ne voulons que 99 résultats. Ce paramètre est extrêmement important, comme nous le comprendrons plus tard.et les champs pour lesquels nous voulions obtenir des réponses sont ceux que nous avons après la directive
&fields=
:
ad_snapshot_url,ad_creation_time,ad_creative_body,ad_creative_link_caption,ad_creative_link_description,ad_creative_link_title,ad_delivery_start_time,ad_delivery_stop_time,currency,demographic_distribution,funding_entity,impressions,page_id,page_name,region_distribution,spend
Facebook a ensuite intégré le paramètre &platform_publisher
, qui est censé nous dire si la publicité apparaît sur Facebook, Instagram, Messenger ou Audience Network.
Note:
Audience Network permet à des applications tierces d'utiliser l'infrastructure de ciblage de Facebook pour diffuser des publicités sur des plateformes autres que Facebook et Instagram.
Pour chaque annonce, les réponses que nous avons demandées étaient les suivantes :
ad_snapshot_url − l'URL de l'instantané de l'annonce (l'identifiant unique de chaque annonce)
ad_creation_time − le moment où l'annonce a été créée
ad_creative_body - le corps créatif de l'annonce (contenu généralement sous forme de texte et parfois d'emojis)
ad_creative_link_title − liens qui peuvent être ajoutés dans le contenu (souvent, ils mènent à des enquêtes où l'on demande plus de données)
ad_creative_link_caption − légendes qui peuvent accompagner les liens (comme "En savoir plus" ou "Cliquez ici")
ad_delivery_start_time − l'heure à laquelle l'annonce devait être livrée
ad_delivery_stop_time − l'heure à laquelle il était prévu que l'annonce ne soit plus diffusée
monnaie − la monnaie dans laquelle elle a été payée
distribution_démographique − âge et sexe des personnes à qui l'annonce a été transmise
funding_entity − l'entité qui a payé pour l'annonce
impressions − le nombre de fois que l'annonce a pu être visionnée
page_id − l'identifiant de la page (ID),
page_name − le nom de la page
region_distribution − les régions dans lesquelles l'annonce a été diffusée
spend − un éventail de l'argent qui a été dépensé pour une annonce particulière
Dans la requête ci-dessus, cela montre que nous recherchons des annonces, actives et inactives, qui atteignent l'Inde, de dix acteurs politiques, jusqu'à une limite de 99 annonces.
Capture d'écran: la saisie de la requête ci-dessus sur https://developers.facebook.com renvoie les données sous cette forme; Date: 30 novembre 2019. Source: Nayantara Ranganathan
Cette requête a permis d'obtenir certaines données, et c'était notre première étape pour comprendre à quoi ressemblaient ces données.
Même à ce stade, nous n'avions réussi à recueillir des données que sur les 99 annonces les plus récentes. Facebook permettait de collecter jusqu'à 5 000 publicités, mais la probabilité que la requête échoue augmentait considérablement à mesure que nous augmentions le nombre de publicités demandées. Cela arrivait si souvent que l'onglet du navigateur à partir duquel nous avons visité l'API de la bibliothèque de publicités se bloquait lorsque nous faisions une requête importante. Nous avons donc conservé les requêtes qui donnaient entre 99 et 200 résultats. Nous devions trouver un moyen d'aller au-delà des 99 résultats qu'il était pratique de collecter, mais aussi au-delà des 5 000 qui étaient théoriquement proposés afin de collecter toutes les annonces.
Note:
Les requêtes de l'API se bloquaient inopinément pour des raisons inconnues, parfois fonctionnant, parfois non, et parfois fournissant des erreurs différentes pour une même requête. À ce moment-là, il nous est apparu évident que le manque d'intérêt de Facebook pour la documentation de l'API était associé à d'éventuels éléments dissuasifs pour les gens de collecter des données de manière systématique. L'ampleur des obstacles nous a fait nous demander si la plateforme nous empêchait intentionnellement d'accéder aux données, et si la publication de la bibliothèque d'annonces et de l'API était un moyen de dissimuler les problèmes de transparence avec un outil délibérément inadapté. Cela s'est également produit à une époque où Facebook sévissait contre de nombreuses sociétés de logiciels qui collectaient des données à partir de leur API habituelle. Ces interdictions peuvent être considérées comme un geste stratégique à la suite du scandale de Cambridge Analytica, où Facebook a utilisé le scandale pour limiter la transparence sous la bannière de la protection de la vie privée des utilisateurs. En outre, l'efficacité du ciblage des utilisateurs et l'avantage concurrentiel de la plateforme publicitaire de Facebook dépendent logiquement d'une divulgation minimale sur son fonctionnement interne.
Au bas de la page de résultats de la requête, nous avons trouvé une URL avec un numéro de "pagination". Ce lien nous a conduit à une URL différente où la page suivante de (99) résultats est apparue. Et ainsi de suite. La partie essentielle de la pagination se trouvait dans le paramètre renvoyé &after=
. Une séquence unique de chiffres et de caractères était donnée qui pointait vers la page de résultats suivante pour la même requête. Nous avons constaté que si nous incluions cette pagination dans notre prochaine requête, elle nous mènerait à la page 2, puis à la page 3, etc. Cela ressemblait à ceci :
&after=c2NyYXBpbmdfY3Vyc29yOk1UVTFPREV3TXpRd01Eb3pNRGM0Tmprd056WTRNamd6T0RVPQZDZD
Il n'y avait aucun moyen de savoir combien de pages de résultats il y aurait avant que nous les ayons toutes passées en revue. Mais de cette façon, nous pouvions au moins parcourir manuellement chaque page de résultats et copier les données du navigateur dans un fichier texte. Les données étaient données au format JSON, et chaque page contenait la syntaxe du début et de la fin du fichier. Cela signifiait que si nous stockions les données telles qu'elles venaient, nous aurions dû créer un fichier pour chaque page de résultats. Nous nous sommes rapidement rendu compte que la sauvegarde des résultats de chaque 99 annonces dans un fichier séparé serait une tâche extrêmement ardue et inefficace. Nous avons donc cherché un moyen de copier le résultat de la requête JSON sans l'en-tête et le pied de page.
Note :
L'en-tête signifie la partie de la réponse qui indique que les données commencent à ce point et sont contenues ci-dessous. C'est ainsi qu'il recherche les réponses JSON par l'API Ad Library :
{"data" : [
Et le pied de page, qui indique que les données s'arrêtent là, ressemble à ceci :
] }
Dès la première page d'une requête donnée, nous avons stocké l'en-tête et le contenu, mais pas le pied de page. Parmi toutes les pages suivantes, nous n'avons enregistré que le contenu sans l'en-tête et le pied de page, et lorsque nous avons atteint la dernière page des résultats, nous n'avons recueilli que le contenu et le pied de page. Nous avons pu identifier la dernière page des résultats parce que sur la dernière page, il n'y aurait plus de liens de pagination menant à la page suivante des résultats. De cette façon, nous avons réussi à rassembler les données sur les dix partis et acteurs politiques dans un seul fichier JSON.
Pour que ce système fonctionne, nous avons dû ajouter une virgule (,) et un retour à la ligne à la place du pied de page que nous avons supprimé. De cette façon, nous utilisons la syntaxe JSON pour indiquer qu'au lieu de la fin du fichier, d'autres annonces suivront.
La pagination a été utile pour contourner les plantages réguliers de l'API, car nous l'avons utilisée pour relancer le processus de collecte de données à partir de la page où il s'est planté. Nous avons passé du temps à essayer de comprendre pourquoi ces plantages se produisaient, mais nous n'avons pas pu trouver de raisons claires. Parfois, nous réessayions avec la même requête et elle ne se bloquait pas. Dans l'ensemble, il a été utile d'utiliser un faible nombre de résultats du paramètre &limit=
, et de ne pas être trop rapide dans l'exécution des requêtes.
Nous devions constamment faire la différence entre ne pas être bloqué par une utilisation excessive de l'API et éviter les plantages imprévisibles. L'approche par essais et erreurs nous a également posé d'autres problèmes, comme celui de se faire bloquer par les limites de débit de l'API. Facebook n'avait pas spécifié les limites d'utilisation, mais certaines limites non définies étaient clairement en place. Nos premiers efforts pour automatiser la collecte de données avec un script Python ont été découragés et il semblait que Facebook rendait délibérément difficile l'automatisation de la collecte, et donnerait plus de chances de succès lorsque les requêtes étaient faites à partir d'interactions manuelles, plus petites et plus lentes.
Le défi à ce stade est donc devenu de savoir comment automatiser la collecte de publicités tout en la faisant paraître comme un effort manuel et humain.
Nous avons développé un schéma très mécanique et répétitif pour collecter les données manuellement. Le déroulement du travail ressemblait à ceci :
charger une requête
copier le résultat à l'exception du pied de page
cliquer sur la page suivante
pendant que la page suivante se charge, collez les données dans un fichier texte
ajouter la virgule et le saut de ligne pour maintenir la continuité des données dans la syntaxe
changer d'onglet
copier les données sans en-tête ni pied de page
les coller dans le document
ajouter la virgule et le saut de ligne...
Manuel
Des raccourcis comme
ctrl+c
,ctrl+v
etalt+tab
ont contribué à rendre ce processus mécanique plus efficace. Pour rendre le travail de l'API et mes propres actions efficaces et synchronisées, j'ai modifié le paramètre&limit=
pour renvoyer des données qui prendraient le même temps à charger dans le navigateur que le temps nécessaire pour terminer ma partie du flux de travail consistant à copier-coller des données dans le fichier texte. Le caractère aléatoire du comportement humain a permis de contourner les blocs FB et de se planter la plupart du temps. Néanmoins, c'était une tâche extrêmement lente, répétitive et méticuleuse. C'est devenu une routine d'endurance consistant à passer des heures chaque jour à simplement effectuer cette collecte manuelle de données, en construisant des mégaoctets puis des gigaoctets de données JSON par cette méthode.Je suis devenu très efficace, au point de pouvoir le faire sans réfléchir, en incarnant les mouvements requis, comme à bicyclette. Le défi consistait à rester sain d'esprit tout en continuant la tâche. Grâce à ce système, nous avons fini par recueillir toutes les données des annonces sur les acteurs politiques que nous recherchions en Inde.
Violations de la période de silence
La loi électorale indienne impose une période de silence de 48 heures avant le jour des élections − ce qui signifie que toutes les activités de campagne, y compris les publicités en ligne et hors ligne, sont interdites pendant les deux jours précédant le scrutin. Si ces règles devaient être suivies sur Internet, notre requête à l'API de la bibliothèque d'annonces de Facebook n'aurait pas dû renvoyer les publicités en cours à partir du 10 avril 2019 jusqu'à la fin de la journée du 11 avril 2019 (le jour de la première phase des élections).
Pour savoir si c'était le cas, nous devions trouver un moyen de donner un sens aux données que nous avions recueillies. Elles étaient au format JSON, et nous avions donc besoin d'un logiciel capable de traiter et d'analyser les données JSON.
Manuel
En cherchant sur les forums web, j'ai découvert Tableau, un logiciel de visualisation et d'analyse de données. J'ai téléchargé la version d'essai de Public Tableau, un logiciel disponible pour les ordinateurs fonctionnant sous Windows OS. Travailler avec Public Tableau n'a pas été simple dès le départ. J'avais besoin de quelques conseils provenant de divers forums sur Internet et d'explications sur YouTube pour comprendre ce que l'on fait après avoir mis la main sur des données au format JSON.
Mais Tableau n'est pas disponible pour Linux, qui est le système d'exploitation que j'utilise normalement sur mon ordinateur. Pour pouvoir utiliser Tableau, j'ai donc téléchargé un logiciel de virtualisation appelé VirtualBox. Le logiciel de virtualisation vous permet de faire fonctionner un autre système d'exploitation que celui installé sur votre ordinateur sans avoir besoin d'ajouter un autre système d'exploitation sur votre appareil.
Capture d'écran: VirtualBox, une application qui vous permet d'utiliser votre ordinateur pour accéder virtuellement à une autre machine. Date: 20 juillet 2019. Source: Manuel Beltrán
Une fois le système mis en place et installé, nous avons utilisé Tableau pour donner un sens aux données. Nous avons dû jouer avec Tableau pour comprendre comment faire en sorte que le logiciel lise les données dont nous disposions, comment lui faire lire plusieurs fichiers de données, quelle devrait être la structure de ces données combinées et, d'une manière générale, quelles étaient les fonctionnalités offertes par Tableau.
Nous avons pu poser des questions du type :
Quelles annonces ont été diffusées dans une certaine fenêtre de temps ?
Quels partis politiques diffusaient des publicités dans quelles régions ?
Quelles publicités les vieux hommes du sud de l'Inde voyaient-ils ?
Un paramètre qui nous a semblé utile pour comprendre quelles annonces violaient la période de silence était "ad_creation_time"
, qui enregistre une date dans ce format : "2019-04-02T17:22:45+0000."
Cependant après une étude plus approfondie, nous avons réalisé que la date et l'heure de création d'une publicité ne coïncidaient pas nécessairement avec l'heure de sa diffusion. Pour comprendre quand les annonces ont été diffusées, les paramètres les plus utiles étaient "ad_delivery_start_time"
et "ad_delivery_stop_time"
. Ces paramètres nous ont permis de connaître la durée pendant laquelle une publicité est apparue sur les écrans des personnes. En raison de la nature multi-phase des élections indiennes (c'est-à-dire que le vote a lieu à des moments différents dans des régions différentes), nous avons également dû faire correspondre les temps de la période de silence avec les régions correspondantes qui allaient aux urnes et qui étaient donc soumises à ces périodes de silence. Pour comprendre cela, nous avons utilisé le paramètre "region_distribution"
.
Nous avons filtré les données pour montrer les publicités qui étaient actives pendant la période de silence d'une région spécifique et nous les avons analysées plus en détail. Nous avons commencé à constater que les violations n'étaient pas accidentelles ou exceptionnelles, mais plutôt routinières. En utilisant les paramètres "ad_start_date"
et "ad_stop_date"
, nous avons identifié les publicités qui étaient actives pendant la période de silence. En outre, nous avons utilisé le paramètre "region_distribution"
pour isoler les publicités qui étaient diffusées pendant la période de silence pour des états particuliers.
Capture d'écran: Une étape du processus de compréhension du nombre d'annonces en violation de la période de silence à l'aide du logiciel de visualisation Tableau. Date: 20 juillet 2019. Source: Manuel Beltrán
Ainsi, nous avons commencé à collecter systématiquement toutes les publicités qui violaient la période de silence. À ce moment, nous étions déjà sur le point d'entrer dans la cinquième phase des élections, nous avons donc collecté les violations des quatre premières phases. Nous avons appris que l'un des paramètres les plus importants − le montant des dépenses publicitaires − n'était fourni que sous forme de fourchette de valeurs. Cela a compliqué nos efforts pour déterminer les dépenses des acteurs politiques. Mais comme il s'agissait d'une information cruciale, nous avons décidé d'un compromis et avons calculé la moyenne de la fourchette pour chaque publicité.
Comme prévu, cette information a conduit à plusieurs découvertes intéressantes. Certains acteurs politiques qui avaient créé des milliers de publicités avaient dépensé moins d'argent que des acteurs politiques qui avaient créé moins de publicités mais avec des dépenses plus importantes. Nous avons compris que le nombre de publicités n'est pas toujours directement proportionnel au montant dépensé. Pour notre enquête sur la période de silence, cela signifiait que même si un parti avait beaucoup plus de publicités en infraction, il était possible qu'un autre parti ait dépensé beaucoup plus d'argent pour des publicités chronométrées rompant la période de silence. Il s'agissait là d'observations importantes, car nous avons déconstruit la signification de ces violations et leur portée.
Au total, nous avons recueilli 2 235 publicités en violation de la période de silence en Inde au cours des quatre premières phases.
Une fois que nous avons réalisé que nous avions des preuves concrètes de violations, nous avons été confrontés à la question avec laquelle de nombreux chercheurs et enquêteurs se débattent : « Que pouvons-nous y faire ? »
À ce stade, le pays était encore au milieu d'une élection en plusieurs phases, et il restait quelques semaines avant sa conclusion. Nos options étaient soit de notifier les violations à Facebook, soit d'en informer la Commission électorale indienne (CE). Il y avait bien sûr la troisième option : continuer à le documenter et à écrire à ce sujet. Cependant, sans affiliation médiatique ni plateforme de publication, nous n'étions pas sûrs que ce serait la voie la plus efficace.
Note :
Même si nous ne nous attendions pas vraiment à ce que la Commission électorale (CE) soit équipée ou encline à s'attaquer à ce problème, nous avons été plus hésitants à informer Facebook des preuves. Si nous avions signalé ces violations à Facebook, nous aurions confié la responsabilité de garantir l'intégrité des processus démocratiques à une société privée étrangère ayant un terrible bilan en matière de responsabilité, plutôt qu'à une institution démocratique. Cela aurait signifié que nous aurions activement confié à Facebook des fonctions de surveillance qui ont un impact significatif sur nos processus électoraux. Bien que nous ayons imaginé que le fait de faire un rapport à Facebook serait un moyen plus rapide de faire retirer les publicités, nous avons décidé, par principe, de le signaler d'abord à la CE et de publier nos conclusions au public.
Nous avons déposé un rapport contenant des preuves des données sur les 2 235 publicités en infraction, classées selon les quatre phases des élections, ainsi qu'une brève explication.
Comme prévu, nous n'avons reçu aucune réponse.
En plus de faire rapport à l'EC, nous avons également décidé d'écrire à ce sujet. HuffingtonPost India a accepté de publier notre article avec les conclusions sur les violations de la période de silence par les publicités politiques sur Facebook.
Image illustrative accompagnant le reportage. Crédits: Manuel Beltrán et Nayantara Ranganathan
Les violations ont continué à se produire dans les phases restantes de l'élection et, à notre connaissance, aucune mesure n'a été prise jusqu'à présent.
En route vers ad.watch
Au cours de la recherche de réponses à nos questions spécifiques sur la période de silence, nous avons trouvé d'autres façons intéressantes de lire les données à travers Tableau. L'un des principaux défis était de comprendre comment structurer les données. Comme les données que nous avons collectées se trouvaient dans plusieurs fichiers, nous avons dû nous assurer que les fichiers « s'empilaient » de la bonne manière.
Nous avons conçu la collecte de données de telle sorte qu'il y ait des limites pour les fichiers en fonction de leur taille. Cela signifiait que si les données publicitaires d'un acteur politique étaient massives (comme celles de Donald Trump l'ont été), le fichier contiendrait moins que le nombre standard de données publicitaires de dix acteurs, et ne contiendrait au lieu de cela que les données d'un seul politicien. Nous avons réussi à structurer les données par de nombreux essais et erreurs, ainsi qu'avec l'aide des forums communautaires Tableau et des vidéos YouTube sur l'outil. Comme il s'agit d'un outil d'analyse et de visualisation des données très populaire, il a fallu explorer les forums déjà disponibles pour trouver des réponses à ces questions.
Outre les ruptures de la période de silence, nous avons trouvé d'autres détails intéressants : l'architecture des informations sur les annonces politiques, les catégories d'informations disponibles ainsi que les données manquantes, étaient toutes révélatrices. Par exemple, nous avons appris que Facebook établissait le profil des personnes en fonction de la vision binaire de sexe masculin et féminin, bien qu'il permette aux utilisat⋅rices⋅eurs de s'identifier parmi un large éventail d'options. Ce fut un aperçu intéressant de la façon dont les choses fonctionnent différemment au niveau de l'expérience de l'utilisat⋅rice⋅eur par rapport à l'infrastructure de base conçue pour le marketing.
Capture d'écran: options de menu qui apparaissent sur les paramètres du compte Facebook après avoir choisi de définir votre sexe comme «Personnalisé». Date prise le 29 novembre 2019. Source: Nayantara Ranganathan
Capture d'écran: segmentation binaire de genre des utilisateurs de Facebook visible dans le processus de création d'annonces ou de promotion de publications. Date prise le 29 novembre 2019. Source: Nayantara Ranganathan
Une fois que nous avons réussi à découvrir les violations de la période de silence, les élections indiennes étaient bien engagées, et les élections parlementaires européennes de 2019 approchaient. À cette occasion, nous avons également commencé à fouiller dans les données sur les partis espagnols pour les élections du Parlement européen et les élections municipales et nationales espagnoles de 2019. Peu à peu, nous avons commencé à élargir le champ de notre collecte de données et de nos recherches.
Bien que nous ayons maintenant recueilli et exploré des données sur les publicités Facebook dans divers contextes, nous étions mal à l'aise d'écrire des histoires sur des pays dont nous n'avions pas le contexte ou la connaissance. De plus, nous avions le sentiment qu'il était incorrect de le faire même si nous avions une certaine compréhension des lieux ou trouvé des collaboratrices et collaborateurs de différents pays.
Mais tout en restant dans notre voie, nous voulions aussi rendre accessibles ces données dans d'autres pays. Nous avons décidé de collecter les données disponibles dans tous les pays, mais de laisser l'analyse et les investigations à celles et ceux qui pourraient être intéressé⋅e⋅s à les reprendre.
Nous avons pris contact avec des collègues et des ami⋅e⋅s dans d'autres régions du monde où se déroulaient des élections pour voir si les données que nous recueillions pouvaient leur être utiles directement ou si elles et ils étaient intéressé⋅e⋅s à plaider pour la diffusion de données similaires dans ces régions également. Aux Philippines, par exemple, Facebook est un canal crucial pour les campagnes de désinformation du gouvernement Duterte. Les Philippines se trouvent également être l'un des marchés du travail pour les emplois contractuels abusifs et traumatisants pour la modération de contenu, y compris pour Facebook. Nous avons parlé à un ami et collègue aux Philippines pour lui faire part de notre travail, et nous avons parlé des développements et des préparatifs à partir de là.
Une fois que nous avons décidé de commencer à examiner les publicités politiques au niveau mondial, nous avons dû réfléchir sérieusement à l'approche à adopter, aux groupes ou personnes qui travaillaient déjà sur des projets liés à la publicité politique et aux lacunes que nous pourrions combler. Nous savions que FBTrex, par exemple, est un outil qui aide les utilisatrices⋅eurs à collecter les métadonnées des messages, y compris les publicités politiques qui apparaissent dans leurs flux d'informations, en installant une extension de navigateur.
Conseils :
Facebook Tracking Exposed (FBTrex) est un projet dont la vision est que les individus devraient être maîtres des algorithmes qui les concernent. Entre autres choses, le projet propose un plugin de navigateur qui collecte les métadonnées de tous les postes publics de votre ligne de temps et vous permet soit de contribuer à un ensemble de données publiques, soit de les garder privées pour votre propre usage. FBTrex permet également aux chercheurs (et aux utilisateurs) d'utiliser/réutiliser une partie des données grâce à leur API.
ProPublica a créé un outil appelé Political Ad Collector, qui vous permet d'installer un plugin de navigateur qui collecte toutes les publicités politiques que vous voyez en naviguant et les envoie à une base de données qui permet à ProPublica de mieux analyser la nature du ciblage des publicités politiques.
Who Targets Me est un projet qui utilise également un plugin de navigateur que vous pouvez installer pour collecter tous les messages sponsorisés sur votre calendrier. Le plugin envoie ces données à une base de données mondiale de publicités politiques, il compare les messages sponsorisés à des listes catégorisées d'annonceurs politiques et tire des conclusions sur les personnes qui vous ciblent en ligne.
Nous nous étions familiarisé⋅e⋅s avec les champs d'information que l'API de la bibliothèque de publicités de Facebook fournissait, mais nous ne connaissions pas les champs d'information dont disposaient les annonceurs pour cibler les utilisatrices⋅eurs. Cela signifie que même si nous savions qu'une certaine publicité touchait entre 1 000 et 10 000 personnes à Delhi, nous ne savions pas si c'étaient les paramètres que l'annonceur avait sélectionnés pour cibler les publicités. Nous voulions savoir quelles étaient les options disponibles pour gérer le ciblage, pour ainsi dire.
Nous avons donc créé des pages de partis politiques fictifs et testé l'achat et le ciblage des publicités. Nous avons créé une page pour chacun d'entre eux, et nous avons « boosté » les messages. Le niveau de détail disponible de ce côté de la fenêtre de l'interface était, sans surprise, bien plus important que les informations qui étaient révélées au nom de la transparence. Nous pouvions créer des « publics personnalisés » en précisant quels types de « Données démographiques, intérêts et comportements » nous voulions cibler. Nous pouvions également saisir les données des personnes qui auraient pu manifester un intérêt pour notre activité ou notre campagne et Facebook proposerait de diffuser des publicités à un « public de semblables ». Il s'agit de méthodes publicitaires standard, mais nous étions sur le point de découvrir que les champs disponibles pour le ciblage semblaient assez problématiques et pouvaient se prêter à toutes sortes de discriminations. Par exemple, nous avons trouvé une catégorie intitulée « Ami⋅e⋅s des personnes qui célèbrent le Ramadan ».
Capture d'écran: suggestions de ciblage lors de la création d'une annonce; Date: 29 novembre 2019; Source: Nayantara Ranganathan
Nous étions au courant des développements aux États-Unis où des pratiques de discrimination ont été enregistrées et où Facebook a dû rendre des comptes. Nous savions également que Facebook s'était engagé à ne pas autoriser le ciblage basé sur la race et le sexe lorsqu'il s'agissait de publicités sur l'emploi, le logement et le crédit. Ces catégories ont confirmé que de tels problèmes n'étaient pas traités dans d'autres parties du monde. Par exemple, l'option ci-dessus des « ami⋅e s des personnes qui célèbrent le Ramadan » est une catégorie qui peut facilement être utilisée pour exclure les musulmans à un moment où le sentiment anti-musulman en Inde émerge à la fois de l'État et de la société en général.
Capture d'écran: suggestions pour exclure des personnes du ciblage d'une annonce. Date: 29 novembre 2019. Source: Nayantara Ranganathan
Publier ad.watch
Nous avons décidé de recueillir les données des acteurs politiques du monde entier.
Comme nous l'avons déjà mentionné, nous avons utilisé Tableau pour des expériences internes et pour comprendre les données. À ce stade, nous avons découvert que Tableau permettait la publication en ligne et offrait en fait des niveaux de visualisation relativement dynamiques et sophistiqués.
Nous avons commencé à utiliser le logiciel Tableau pour nous aider à comprendre les données, mais une fois la question de la publication soulevée, nous avons dû nous demander si nous voulions faire dépendre l'ensemble du projet d'un outil propriétaire, utilisé principalement par les services de marketing pour l'analyse des données. Nous devions également nous demander si nous rendions notre outil vulnérable en nous appuyant sur un logiciel propriétaire qui pouvait décider de révoquer l'accès à tout moment.
Nous avons exploré d'autres alternatives open-source très appréciées comme Rawgraphs et Datawrapper. Cependant, étant donné la taille et les particularités des données, celles-ci ont été écartées. Certaines de ces alternatives ne pouvaient pas analyser le contenu des annonces car celles-ci contenaient parfois des caractères d'écriture non latins. Nous avons donc décidé d'utiliser Public Tableau.
Note :
Il était déroutant de comprendre pourquoi beaucoup de ces logiciels de visualisation gratuits et à code source ouvert très appréciés étaient incapables d'ouvrir même de petits extraits des fichiers JSON.
Nous avons utilisé un site web appelé JSONLint qui nous a aidé à « valider » les données JSON c'est-à-dire à repérer les éventuelles >erreurs de formatage dans les fichiers. Cela nous a permis de comprendre que les erreurs de syntaxe identifiées étaient dues au fait que le champ contenant le texte contenait souvent des scripts autres que le script latin, ainsi que des émojis et des caractères qui étaient inclus dans les versions récentes d'Unicode, la norme pour l'encodage des scripts en caractères lisibles par machine.
Nous avons donc commencé à concevoir nos propres interfaces visuelles avec Tableau pour parcourir les bases de données. L'un des problèmes que nous avons rencontrés lors de l'utilisation de Tableau était la quantité de ressources informatiques nécessaires pour traiter des bases de données de cette taille, qui dépassaient les cinq gigaoctets. Nos ordinateurs fonctionnant dans une machine virtuelle étaient très lents ou parfois tout simplement incapables de charger les données. Avec les ressources financières limitées dont nous disposions, l'achat d'un ordinateur plus puissant n'était pas envisageable.
Manuel
L'université où j'enseigne fournit aux enseignant⋅e⋅s l'accès à un ordinateur de bureau à distance équipé d'un processeur Intel Xeon avec 20 Go de RAM. Cela s'est avéré être une excellente solution. Sans cela, nous aurions dû louer un serveur privé virtuel dans le même but. Un bureau distant est accessible via le protocole RDP (Remote Desktop Protocol). Il s'agit d'un protocole qui vous permet d'accéder à un système qui n'est pas au même endroit physique que vous et de le contrôler.
L'utilisation de RDP depuis mon ordinateur portable nous a permis de commencer à charger les bases de données sur Tableau et de disposer des ressources de mon terminal pour d'autres tâches. Cela a même permis d'éteindre mon ordinateur portable pendant que le RDP continuait à se charger.
Note :
Tableau vous permet d'importer des fichiers JSON jusqu'à 128 Mo seulement, nous avons donc dû diviser les fichiers en dessous de cette limite. Nous avons utilisé un simple script Python appelé json-splitter pour cette tâche.
C'était un défi de trouver le bon équilibre entre ce que nous voulions réaliser et le projet.
D'une part, nous étions assis sur une vaste quantité de données relatives à la politique de nombreux pays, et nous avions déjà trouvé des problèmes critiques dans un nombre limité de pays que nous avons analysés nous-mêmes. Il y avait un certain vertige quant à la profondeur de ce qui pouvait exister d'autre, ce qui encourageait notre besoin de le sortir.
En tant que projet qui expose les mécanismes d'une technologie peu comprise, il était important de la présenter de manière à ce que chacun puisse apprendre et comprendre comment fonctionnent les publicités politiques. Il devait être suffisamment puissant pour permettre aux journalistes et aux chercheuses et chercheurs de mener leurs investigations. Et il devait également problématiser le fonctionnement de l'infrastructure des publicités Facebook. La fusion de tous ces éléments a pris un certain temps et nous avons exploré différentes itérations.
Entre le fait de la rendre accessible sur appareil mobile ou de l'adapter à l’ordinateur de bureau, nous avons opté pour le bureau car cela permet une expérience plus approfondie.
Alors que les interfaces qui allaient donner naissance à ad.watch étaient presque achevées, la question de savoir comment mettre à jour la base de données est devenue plus imminente.
Si nous devions directement transmettre les données à qui de droit, les mises à jour n'étaient peut-être pas si pertinentes, mais en tant que ressource vivante, nous avons estimé qu'il était plus important d'être à jour à tout moment. Quelques semaines avant la mise en ligne du projet, nous avons participé à un atelier du projet Exposing the Invisible de Tactical Tech, (pour travailler entre autres sur le début même de ce texte). Nous y avons reçu l'aide de Wael Eskandar pour développer le noyau initial d'un script Python qui automatiserait la collecte de publicités à partir de l'API. Parmi les défis à relever pour le développer, il y avait la méthode pour qu' avec Python on incorpore les modifications que nous introduisions auparavant manuellement.
Le défi suivant consistait à faire comprendre au script quand les publicités d'une requête particulière étaient terminées afin que le script puisse passer à la requête suivante. Ou comment faire en sorte que chacun des fichiers restent en dessous de la limite de 128 Mo de Tableau. Comme indiqué précédemment, Facebook a imposé des limites aux requêtes automatisées. Nous avons donc commencé à imiter le comportement humain en ajoutant des délais aléatoires entre les requêtes. Dès sa version initiale, le script est devenu une sorte de précieux système de collecte de données, que nous améliorions jour après jour. Il est également devenu une source d'expérimentation grâce à laquelle nous avons mieux compris le fonctionnement de l'API de Facebook, et pour expérimenter la collecte de données autres que celles des partis politiques. Par la suite, nous avons créé un système de fichiers texte avec des ID de page que le script devait parcourir, et un fichier séparé avec les codes de pays ISO à deux lettres, afin de pouvoir collecter plusieurs pays en une seule fois. Ce nouveau système nous a également permis de procéder plus facilement aux mises à jour de la liste des partis politiques.
Capture d'écran: page d'accueil du site Web ad.watch. Date: 29 novembre 2019. Source: Manuel Beltrán
La première version d'ad.watch, le 26 juillet 2019, a été réalisée avec la collecte manuelle des données, mais à cette date, nous avions également perfectionné le script à un niveau qui nous permettait de mettre régulièrement à jour les données, ce qui s'est avéré extrêmement précieux pour l'efficacité du projet. Nous avons mis en ligne le site web et l'avons publié sur nos réseaux sociaux personnels pour faire passer le message. Nous avons reçu beaucoup de réactions positives, notamment de la part de journalistes qui utilisaient les données pour comprendre les efforts de transparence des publicités de Facebook, très médiatisées, et qui ont noté les tendances des élections dans différents pays.
Aux croisements des chemins
Vérification par Facebook
Lorsque nous avons essayé d'accéder aux données pour la première fois et que nous avons dû passer par le processus de vérification de l'identité, nous avons réalisé que nous devions tous les deux faire face à des processus de vérification très différents pour accéder à la plateforme publicitaire de Facebook.
Nayantara
En tant que personne dont le « pays principal de résidence » était l'Inde, j'ai dû passer par une étape supplémentaire pour la vérification de l'adresse. Je devais choisir entre recevoir un code par courrier à mon domicile ou recevoir la visite de « quelqu'un ». Le décalage horaire entre les deux options était important : le courrier postal prendrait trois semaines, et la visite chez moi aurait lieu dans la semaine qui suit. Comme nous voulions entamer le processus le plus rapidement possible et que nous étions également frappés par le processus de visite à domicile, nous avons décidé d'opter pour cette option.
Capture d'écran: processus de vérification en trois étapes pour accéder à l'API de la bibliothèque d'annonces. Date: 20 avril 2019. Source: Manuel Beltrán
Ce que nous avons appris au cours de ce processus d'identification nous a époustouflés.
Un jour après avoir fait la demande de vérification, j'ai (Nayantara) reçu un appel téléphonique d'un homme qui allait mener le processus. Il m'a dit qu'il appelait au sujet de la vérification de Facebook et pour me demander si le lendemain était un bon moment pour me rendre visite. Tout cet épisode était intéressant pour de nombreuses raisons, notamment parce qu'il montrait comment l'essor des technologies et des entreprises >d'identification en Inde se conjuguait avec celui des grandes entreprises technologiques comme Facebook qui cherchait des yeux et des oreilles en Inde, un exemple parfait de vérification d'identité en tant que service.
À cette occasion, j'ai demandé à l'interlocuteur qui il était et de quelle entreprise il provenait. Il a hésité un peu et semblait ne pas s'attendre à cette question. Une fois que nous avons établi que nous pouvions tous deux parler le kannada (une langue parlée principalement par les habitants du Karnataka, dans le sud-ouest de l'Inde), nous avons adopté un ton de conversation plus familier et plus confiant. Il a dit qu'il travaillait pour une société appelée OnGrid, et que son nom était Umesh (nom modifié). Alors qu'il parlait à une femme en ligne, j'ai senti un ton gêné lorsqu'il m'a demandé mon adresse et l'itinéraire pour se rendre chez moi. Il est également devenu plus ouvert en révélant des détails sur lui-même.
Umesh m'a assuré que je n'avais pas besoin d'être à la maison lorsqu'il me rendait visite, et que tant qu'il y avait quelqu'un qui pouvait confirmer que j'y vivais, cela suffisait. Deux jours plus tard, Umesh est arrivé chez moi pour procéder à la vérification. Il a pris des photos de ma maison depuis l'extérieur, un point de repère situé à proximité, et a pris la signature de la personne qui vit chez moi (puisque je n'étais pas chez moi lors de la visite).
Capture d'écran: conversation sur WhatsApp entre Nayantara et le représentant OnGrid. Date: 23 avril 2019. Source: Nayantara Ranganathan
Naturellement, nous étions curieux de connaître la société qui était le fournisseur de services de vérification de Facebook. OnGrid est une entreprise indienne qui prétend permettre aux gens en Inde d'« établir instantanément la confiance », ou en d'autres termes, de s'engager dans un commerce d'informations d'identification. Elle propose des services allant de la « vérification de l'éducation » à la vérification des dossiers judiciaires. Il y a deux ans, ils ont fait la une des journaux pour une image effrayante qui a donné un frisson collectif aux gens : une publicité pour une reconnaissance d'image sans consentement utilisant l'architecture nationale d'identification biométrique, Aadhaar. En tant qu'entité distincte, les conditions de service et la politique en matière de données d'OnGrid sont différentes de celles de Facebook concernant la conservation des informations soumises à des fins d'identification.
Image (désormais supprimée) publiée sur Twitter par OnGrid. Date: 29 novembre 2019. Source: https://mashable.com/2017/02/14/india-aadhaar-uidai-privacy-security-debate/. Page archivée ici.*
Les politiques de Facebook ne mentionnent pas l'externalisation de certains éléments du processus de vérification ni la manière dont les politiques de données pourraient être modifiées dans ce cas. Cela signifie peut-être que les engagements pris par Facebook en matière de suppression des données d'identification >partagées avec Facebook n'étaient pas quelque chose qu'OnGrid − tout en répondant au besoin de « vérification du dernier kilomètre » − était tenu de respecter. En effet, Facebook prétend supprimer définitivement les données qu'il collecte auprès des utilisateurs qui se soumettent au processus de vérification. OnGrid, la société engagée par Facebook en Inde, conserve en revanche ces données pour fournir des "services d'identification" à d'autres entités. OnGrid utilise les données des personnes pour créer sa base de données afin de la réutiliser et de la proposer comme service à d'autres entités.
Après ce processus, j'ai enfin pu terminer la vérification de mon adresse et avoir accès à l'API de la bibliothèque d'annonces.
Manuel
En tant que citoyen espagnol vivant aux Pays-Bas, mon processus de vérification d'identité était beaucoup plus simple et comportait moins d'étapes. Cependant, une fois soumise, l'acceptation finale a pris environ deux jours, alors que Nayantara a reçu une réponse instantanée à cette étape, ce qui indique que la mienne aurait pu impliquer un humain dans le processus.
Ces épisodes ont aidé à comprendre les différents processus de traitement des données dans les différents pays, les vulnérabilités créées par l'implication d'acteurs de vérification tiers, et le fait scandaleux que tout cela était même nécessaire pour obtenir des informations d'intérêt public qui étaient tout à fait cruciales pour comprendre comment les médias sociaux pouvaient interférer avec les processus démocratiques.
Inclure ou non des images et des vidéos ?
Nous avions un plan pour visualiser les données relatives aux publicités, mais les « visuels » des publicités eux-mêmes ne pouvaient pas être montrés. C'est-à-dire que les images ou le contenu vidéo, qui est l'élément que les utilisat⋅rieces⋅eurs de Facebook et Instagram sont censé⋅e⋅s voir, ne pouvaient pas être visualisés en raison des particularités de la structuration et de l'accessibilité des données.
Les données n'ont pas été fournies de manière téléchargeable indépendamment du recours à l'API, et il était donc difficile de les visualiser. Mais même si nous devions trouver un moyen d'intégrer le lien et de présenter les visuels, il y avait un autre problème : l'URL avec les visuels comprend un « jeton d'accès » actif. Il s'agit d'un jeton unique, limité dans le temps, qui empêche le lien d'être utile au bout d'une heure. Les liens ne seraient pas d'une grande utilité sans le jeton d'accès propre à l'utilisat⋅rice⋅eur.
Note :
Voici à quoi ressemble l'URL d'un instantané publicitaire :
https://www.facebook.com/ads/archive/render_ad/?id=251563729117836&access_token=EAAjPOWfPqZCgBAAJ0csteVNkFJcyxbQZA7m1xbJ8w3fzFRlm6apQ5cAnzsjBNOOJt4zSEE8IxB4k9Hc>Kydhbcd7P4SnNTBn82G7s>gyy5YXX8fmZC0hUGcpQMfZCp3uWaSWeX4urEcNPwB8SM01clzJSqRXPjjh8ZBguzXZC9sc9whaz0hE9MGEj889ztZBW2XNxVfitweUSkVrcKGiwePQQZB7uGBOa
Un jeton d'accès est ce qui vient après
access_token=
, et est la longue chaîne de lettres et de chiffres :EAAjPOWfPqZCgBAAJ0csteVNkFJcyxbQZA7m1xbJ8w3fzFRlm6apQ5cAnzsjBNOOJt4zSEE8IxB4k9HcKydhbcd7P4SnNTBn82G7sgyy5YXX8fmZC0hUGcpQMfZCp3uWaSWeX4urEcNPwB8S>M01clzJSqRXPjjh>8ZBguzXZC9sc9whaz0hE9MGEj889ztZBW2XNxVfitweUSkVrcKGiwePQQZB7uGBOa
Nous avons envisagé de gratter les images de la bibliothèque d'annonces en utilisant l'un des add-ons pour le navigateur comme « Télécharger toutes les images ». Il y avait également de nombreux scripts en Python pour aider à le faire. Cependant, Facebook empêche toutes ces techniques de grattage de collecter les visuels. En outre, Facebook interdit également aux utilisateurs de faire de tels grattages en général.
Capture d'écran: Conditions d'utilisation de Facebook. Date: 8 décembre 2019. Source: Manuel Beltrán
D'une part, il était important d'inclure les visuels car ils ont une valeur de rappel pour les personnes qui naviguent sur les interfaces. D'autre part, nous nous sommes demandé s'il ne serait pas bon de distraire les gens avec des visuels, car l'aspect le plus crucial à transmettre est que les visuels eux-mêmes ne sont pas aussi spéciaux que les métadonnées les concernant, comme le ciblage.
Néanmoins, nous avons également essayé d'utiliser la commande « wget » pour y parvenir, mais cela n'a pas fonctionné.
Nous avons finalement trouvé une solution en utilisant les fonctions disponibles dans Tableau pour permettre aux utilisat⋅rices⋅eurs de ad.watch de saisir leurs propres jetons d'accès et de visualiser le contenu des annonces.
Cependant, après la sortie du logiciel, nous avons trouvé un outil appelé « débogueur de jetons d'accès », qui permettait de prolonger la durée de vie ou la validité de chaque jeton d'accès. Nous avons alors commencé à utiliser des jetons d'accès étendus dans notre système de collecte de données.
Capture d'écran: Access Token Debugger; Date: 30 November 2019; Source: Manuel Beltrán
Travailler avec des journalistes
Tout en travaillant avec les journalistes pour enquêter sur les histoires qui se dégagent des données, beaucoup voulaient voir les données brutes. Cependant, le partage des données s'est heurté à un problème. Les données contenaient le paramètre "ad_snapshot_url"
, qui contenait nos jetons d'accès personnels, que nous avons décrits précédemment.
Ce jeton d'accès est unique pour les différents comptes de développeurs et est enregistré dans les données renvoyées par les requêtes. Comme nous faisions attention à ne rien faire qui puisse entraîner la révocation de notre accès à l'API, nous avons dû le supprimer avant de partager les données. Mais la suppression du jeton d'accès des données de chaque annonce a dû être automatisée, car nous avions des millions d'annonces. La solution était assez facile à trouver en effectuant une recherche dans StackOverflow, et nous avons pu utiliser un outil appelé « SED » (Stream Editor) qui est déjà inclus dans le terminal de Linux.
sed -i -e 's/EAAjPOWfPqZCgBAAJ0csteVNkFJcyxbQZA7m1xbJ8w3fzFRlm6apQ5cAnzsj
BNOOJt4zSEE8IxB4k9HcKydhbcd7P4SnNTBn82G7sgyy5YXX8fmZC0hUGcpQMfZCp3uWaSWeX
4urEcNPwB8SM01clzJSqRXPjjh8ZBguzXZC9sc9whaz0hE9MGEj889ztZBW2XNxVfitweUSkV
rcKGiwePQQZB7uGBOa//g' US_20_1.json
En utilisant ces paramètres, SED recherche dans un fichier texte le contenu du jeton d'accès et le supprime. Cet outil nous a permis de nettoyer facilement les fichiers de données brutes de manière automatisée et efficace.
Comme les données que nous avons recueillies concernaient les publicités elles-mêmes et ne concernaient pas les flux d'informations personnelles des utilisateurs, nous n'avons pas eu à nous préoccuper de la question de la protection des données personnelles.
Après la publication d'ad.watch
Maintenir, mettre à jour et adapter les bases de données
Une fois le projet rendu public, il est également devenu impératif que les données soient mises à jour régulièrement et que la base de données soit maintenue. Cela impliquait de se poser des questions sur la fréquence des mises à jour, de savoir s'il fallait collecter les données dès le début à chaque fois et, si ce n'était pas le cas, comment collecter les données exactement là où nous nous étions arrêtés.
Nous avons ajouté d'autres pays au fur et à mesure que leurs données étaient ajoutées dans l'API Facebook. L'Argentine et le Sri Lanka ont été ajoutés très peu de temps avant les élections dans ce pays, et les données de Singapour ont également été publiées. Il n'y avait pas de procédure de vérification pour la Norvège et la Suisse, mais nous avons déjà pu collecter les données concernant ces pays.
Manuel
Au fur et à mesure que le temps passait après la publication, je me suis également efforcé de peaufiner les scripts que nous avons utilisés pour la collecte des données, afin que celle-ci soit plus efficace, avec un minimum d'intervention humaine pour certaines tâches.
La réponse de Facebook
Peu de temps après le lancement, l'ex-vice-président en charge des publicités de Facebook a eu quelques mots d'encouragement pour le projet. C'était gênant, car le projet n'était pas destiné à être un « outil de visualisation » mais contestait le manque d'accès systématique aux données par Facebook.
Le projet est une action visant à mettre en évidence le conflit fondamental entre l'infrastructure publicitaire de Facebook et les conditions nécessaires à une participation démocratique significative sur les médias sociaux. Avec l'individualisation croissante rendue possible par la publicité ciblée sur Facebook, et l'incapacité de ce dernier à ouvrir ces données dans tous les pays où il opère, ces conditions ont été maintes fois mises en échec.
C'est pourquoi nous ne voulions pas que Facebook coopte notre projet et l'intègre à leur réussite en matière de transparence.
Censure de Twitter
Nous avons commencé à remarquer quelque chose de particulier deux jours après la mise en ligne du site. Certains tweets faits par d'autres sur le projet n'étaient plus visibles pour nous. Il était peu probable que plusieurs personnes aient tweeté sur le projet puis supprimé leurs tweets.
Nous nous sommes vite rendu compte que nos propres tweets sur le projet avaient également disparu. Nous n'avons pas remarqué cela au début, car nous pouvions tous les deux voir nos propres tweets. Mais nous avons fini par nous rendre compte que nous ne pouvions plus voir les tweets de l'autre.
Ce phénomène, appelé « shadowbanning », nous en avions déjà entendu parler.
Il est d'autant plus difficile à repérer que les tweets continuent à être visibles pour leur autrice, auteur, ce qui ne suscite aucun soupçon. Cette action était un phénomène régulier que les gens ont observé lorsqu'il s'agissait de tweets et de comptes d'utilisat⋅rices⋅eurs lié⋅e⋅s au Cachemire, par exemple.
Nous avons décidé d'aborder la question immédiatement par le biais d'un rapport avec l'équipe de soutien de Twitter. Un jour plus tard, nous n'avions toujours pas de nouvelles d'eux. C'est alors que nous avons décidé qu'il pourrait être utile de solliciter du soutien et de l'aide pour comprendre ce qui se passait. Nous avons publié l'appel à l'aide suivant.
Capture d'écran: Tweet appelant au soutien de la censure. Date: 2 août 2019, Source: Nayantara Ranganathan
Nous avions alors découvert que non seulement les tweets avaient disparu, mais qu'il était également impossible de poster un tweet avec l'URL du projet. Nous avons découvert que d'autres personnes étaient également confrontées à ce problème.
Captures d'écran: des gens sur Twitter nous alertant de la censure. Date: 4 août 2019. Source: Nayantara Ranganathan
Il était assez étrange que l'URL du projet soit également bloquée dans les messages directs de Twitter.
Capture d'écran: Censure dans les messages directs de Twitter. Date: 3 août 2019. Source: Nayantara Ranganathan
Nous avons reçu le soutien de nombreux amis, collègues et étrangers sous forme de documentation des messages d'erreur, nous mettant en relation avec des personnes travaillant sur Twitter et leur suggérant de nous contacter.
Entre-temps, nous avons découvert qu'une personne qui avait essayé de poster un lien vers le projet sur LinkedIn avait également reçu un message d'avertissement. Nous avons supposé que l'URL avait pu être signalée sur une sorte de liste noire centralisée au-delà des plateformes. Ce fut effectivement le cas, car nous avons découvert que l'une des sociétés de sécurité qui évaluent les URL et créent des listes noires − https://fortiguard.com/webfilter − a effectivement classé ad.watch comme spam sur la base du signalement de quelqu'un. Nous avons déposé un recours auprès de cette entreprise et avons reçu une réponse nous indiquant qu'el l'avait reclassée (assez curieusement) comme publicité.
Capture d'écran: Résultats d'une recherche en ligne qui avait classé ad.watch comme spam. Date: 5 août 2019. Source: Nayantara Ranganathan
Finalement, Twitter a supprimé l'interdiction de diffusion, mais ne nous a fourni aucune explication. Notre enquête s'est poursuivie ; quelqu'un nous a mis en contact avec une personne travaillant sur Twitter qui semblait désireuse de nous aider, mais cela n'a abouti à rien. Nous avons également exploré la possibilité d'utiliser différents canaux pour tenter d'obtenir une explication sur la raison du blocage, notamment par l'utilisation du droit à l'accès à l'information dans le RGPD européen (règlement général sur la protection des données). Le Droit à l'explication peut théoriquement forcer Twitter à rendre compte de la raison pour laquelle la censure a eu lieu, si elle était algorithmique.
Points clés à retenir
Des pépins techniques des outils aux promesses sérieuses des politiques, nous avons appris énormément de choses sur le monde souterrain de l'économie de l'information, c'est-à-dire la vente de données personnelles à des fins de marketing, et son impact démesuré sur les réalités sociopolitiques des gens. Au-delà de Facebook, le projet nous a fait découvrir l'éthique et le mode de fonctionnement des entreprises qui s'occupent de l'extraction et de la monétisation des données sur la vie des gens.
Ce projet consistait à croire qu'une petite équipe de deux personnes pouvait en quelque sorte défier une entité comme Facebook, avec son échelle de ressources et son pouvoir de narration. Cela signifiait que nous étions constamment sous le risque que notre accès à l'API soit retiré, ou nos méthodes classées contre les conditions d'utilisation de Facebook, ou même en considérant que Facebook avait accès à tant d'informations sensibles à notre sujet qui pouvaient être utilisées de manière préjudiciable. Ces mesures drastiques n'ont pas vu le jour, mais au moment où nous avons travaillé sur le projet avant de le lancer, nous avions toutes ces possibilités avec nous.
Dans l'ensemble, de nombreux facteurs se sont conjugués pour la réalisation du projet :
la compréhension des lacunes qui existaient dans ce milieu
croire qu'il y avait un moyen de contourner les limites lorsque les choses n'étaient pas simples
être à l'écoute et bénéficier des conseils généreux d'amis
en prenant au sérieux la communication des données
Ce sont là quelques aspects qui ont aidé, avec le recul.
À partir de janvier 2020, le projet prend de nouvelles directions : nous travaillons à rendre l'information sur la publicité politique sur les médias sociaux plus facilement compréhensibles pour différents groupes de personnes dans différentes parties du monde. Nous revenons également à notre objectif initial, qui était de concevoir une méthode permettant de rendre les données téléchargeables pour tous celles et ceux qui souhaitent les consulter elles et eux-mêmes.
La maintenance et les mises à jour des bases de données nous tiennent également très occupés. Alors que les paysages politiques mondiaux changent et que de nouveaux partis et coalitions émergent, nous recevons des contributions de visit⋅rices⋅eurs qui nous envoient un courriel avec de nouvelles pages à ajouter à ad.watch.
Nous continuons à documenter et à mettre à jour ad.watch avec de nouvelles itérations du projet. Venez nous voir sur ad.watch, ou écrivez-nous à info@ad.watch.
Tous les jetons d'accès de l'article ont été modifiés.
Publié en avril 2020 / traduction publiée en novembre 2020
traduit par Xavier Coadic
Resources
Articles et guides (en anglais)
Ad Tool Facebook Built to Fight Disinformation Doesn’t Work as Advertised from The New York Times (archived copy from Wayback Machine available here). An article about Facebook’s ad library.
Cambridge Analytica Files, from The Guardian (archived copy from Wayback Machine available here). An investigation series on the controversial data mining and elections marketing practices of political consulting firm Cambridge Analytica.
New Media, New Violations: Election Campaigning on Facebook Violates Code Of Conduct, article from HuffingtonPost India (archived copy from Wayback Machine available here).
This Tool Lets You See Facebook’s Targeted Political Ads All Over the World, article from Vice (archived copy from Wayback Machine available here).
Teens exposed to highly charged political ads on Facebook and Instagram, article from Sky News (archived copy from Wayback Machine available here).
The Influence Industry, from Tactical Tech (archived copy from Wayback Machine available here). A research project looking at the practices of collecting, processing and using voters personal data in elections around the world.
Outils et bases de données
Bash. Un langage pour communiquer avec les systèmes d'exploitation des distributions Linux.
Facebook Ad Library API. L'API de Facebook qui permet à certains utilisateurs de rechercher des publicités marquées comme étant liées à la politique et à des questions d'importance politique.
Facebook Tracking Exposed. Un projet qui offre un plugin de navigateur, qui collecte les métadonnées de tous les postes publics sur votre calendrier et vous permet soit de contribuer à un ensemble de données publiques, soit de les garder privées.
Json splitter. Un outil en ligne de commande pour diviser les gros fichiers JSON en fichiers plus petits.
Json lint. Un outil qui permet de valider (vérifier) les fichiers json et aide à les reformater.
Political Ad Collector de ProPublica. Un outil, qui permet d'installer un plugin de navigateur qui collecte toutes les annonces politiques que vous voyez en naviguant et les envoie à une base de données qui permet à ProPublica de mieux analyser la nature du ciblage des annonces politiques.
Remmina. Application qui permet de se connecter à des ordinateurs distants en utilisant des protocoles comme Remote Desktop Protocol.
Sed. Un éditeur qui vous permet d'effectuer des transformations de base du texte dans le terminal.
Stackoverflow. Un forum web où les développeuses et développeurs posent des questions et y répondent.
Tableau. Une suite d'applications logicielles pour la visualisation et l'analyse des données.
VirtualBox. Application qui vous permet de faire fonctionner un système d'exploitation différent de celui installé sur votre ordinateur.
Wget. Logiciel permettant de récupérer le contenu des serveurs web.
Who Targets Me. Un projet qui utilise une extension de navigateur (plugin) pour les publicités politiques, vous pouvez l'installer pour collecter tous les messages sponsorisés sur votre ligne de temps et voir qui cible votre vote.
Glossaire
term-api
API (Application Programming Interface) - un outil logiciel qui facilite la communication entre un utilisateur et un ensemble de données, entre autres choses. L'API de la bibliothèque publicitaire de Facebook permet aux utilisateurs d'interroger les données publicitaires à l'aide d'un ensemble particulier de commandes développées par Facebook.
term-iso
Code pays ISO - les codes alphabétiques courts créés et maintenus pour chaque pays par l'Organisation internationale de normalisation : https://www.iso.org/obp/ui/#search.
term-extension
Extension de navigateur - également appelés add-ons, ce sont de petits logiciels utilisés pour étendre les fonctionnalités d'un navigateur web. Il peut s'agir d'extensions qui vous permettent de faire des captures d'écran des pages web que vous visitez, de celles qui vérifient et corrigent votre orthographe ou de bloquer les publicités indésirables des sites web.
term-uniqueid
Identificateurs uniques - (dans ce cas) des codes uniques qui sont créés et étiquetés avec chaque annonce, de sorte qu'ils puissent être retracés si nécessaire.
term-fbpageid
ID de la page Facebook - un numéro qui identifie de manière unique chaque page Facebook.
term-interface
Interface - (dans ce cas) un ensemble de visualisations qui sont interactives et permettent aux utilisateurs d'avoir une représentation graphique des données.
term-json
JSON - La Notation d'Objet JavaScript est un format populaire dans lequel les données sont enregistrées. Selon le site web de la JSON, il est facile à lire et à écrire pour les humains et facile à analyser et à générer pour les machines.
term-virtualsoft
Logiciel de virtualisation - logiciel qui vous permet de faire fonctionner un système d'exploitation différent de celui installé sur votre ordinateur sans avoir besoin d'ajouter un autre système d'exploitation sur votre appareil.
term-plugin
Plugin de navigateur - un logiciel qui peut être ajouté aux navigateurs pour améliorer des fonctionnalités spécifiques.
term-targetads
Publicité ciblée (targeted adversiting) - publicité dont le contenu ou les conditions de diffusion sont adaptés à des personnes ou à des groupes spécifiques sur la base des données disponibles à leur sujet.
term-python
Python - un langage de programmation qui permet aux développeuses et développeurs d'écrire divers programmes tels que des applications web, des sites web, des outils d'analyse de données : https://www.python.org/.
term-pythoneditor
Éditeur Python - application permettant de naviguer, de déboguer, de compiler et d'exécuter des scripts en langage Python.
term-query
Requête - une liste de questions codées qu'un utilisateur peut entrer dans des programmes et des applications pour obtenir des données répondant à une question ou un sujet d'intérêt.
term-rdp
Remote Desktop Protocol (RDP) - un protocole qui vous permet d'accéder et de contrôler un système qui n'est pas au même endroit physique que vous.
term-shadowbanning
Shadowbanning - lorsque certains tweets (ou comptes) sont privés ou font disparaître des fils de réseaux sociaux et des comptes sans un avis de censure explicite.
term-trendtopics
Sujets de tendance - sujets qui sont populaires à des moments particuliers.
term-terminal
Terminal - également appelée interface en ligne de commande (CLI), est un moyen d'interagir avec un ordinateur en utilisant une interface textuelle où l'on peut entrer des commandes à un programme informatique.
term-unicode
Unicode - la norme de codage des scripts en caractères lisibles par machine.
term-vps
Virtual Private Server (VPS) - une machine virtuelle, louée en tant que service, par une société d'hébergement Internet.
term-wget
Wget - un outil du projet GNU pour récupérer des fichiers sur les serveurs web. Cet outil permet de transporter des fichiers par le biais de plusieurs protocoles.