ad.watch - Investigando anúncios políticos no Facebook

Por Manuel Beltrán e Nayantara Ranganathan

https://cdn.ttc.io/i/fit/1000/0/sm/0/plain/kit.exposingtheinvisible.org/il/ad-watch-cik-illustration.png


RESUMO: Dois investigadores traçam seu processo de criação o projeto ad.watch, uma investigação em estilo de pesquisa aberta sobre propaganda política no Facebook. Este estudo de caso rastreia o projeto evolução - com suas revelações, obstáculos, técnicas e ferramentas - de um esforço limitado para um recurso crescente que facilita investigações sobre anúncios políticos em todo o mundo.


Foi assim que viemos a publicar ad.watch, um projeto que revela informações sobre os anúncios políticos (anúncios) publicados no Facebook e no Instagram.

Grande parte da publicidade na internet é personalizada, um método comumente referido como publicidade direcionada. Anúncios direcionados usam informações psicológicas, comportamentais e outros tipos de informação sobre as pessoas para apresentar a cada um de nós uma mensagem diferente. A diferença pode estar no conteúdo, design, entrega ou outras características. A personalização das mensagens é complementada com informação sobre a sua eficácia, permitindo o teste de suposições criadas durante o perfil psicológico ou comportamental.

Porque os políticos hoje usam plataformas online para divulgar suas campanhas e promover suas mensagens, e essas plataformas entregam os anúncios com base em informações pessoais, a frase «o pessoal é político» tem ganhou uma nova dimensão. Os anúncios são personalizados de acordo com a nossa dados pessoais e padrões de comportamento, e recebemos essas informações direcionadas anúncios em nossas telas pessoais. No entanto, entender esses mecanismos s hão direto. A infra-estrutura de entrega de publicidade opera invisivelmente, com plataformas fazendo grandes esforços para ofuscar seus mecanismos e estabelecem muitas barreiras para entender como eles função. Frequentemente, nem mesmo os anunciantes têm uma visão completa de quem seus anúncios alcançam ou por quê.

Somos Nayantara e Manuel e criamos ad.watch para entender os novos canais, através dos quais a propaganda é criada e circula online.

Dados sobre anúncios políticos em plataformas de mídia social

ad.watch compila anúncios políticos postados no Facebook e Instagram de mais de 300 atores políticos em 39 países. Inclui dados visualizados e histórias que permitem navegar por esses anúncios e analisá-los individualmente ou como conjuntos de dados por país, partido político e outros categorias. O projeto enfatiza que, para entender como propaganda política funciona online, não podemos simplesmente estudar como parece ou o que diz. Crucialmente, devemos também prestar atenção em como circula. Isso significa analisar informações sobre como os anúncios atendem diferentes categorias de pessoas - de acordo com onde vivem, sua idade, gênero percebido e assim por diante.

No momento da redação deste caso de metodologia no final de 2019, ele já se passaram mais de cinco meses desde que lançamos o projeto. as respostas a ele tem sido extremamente positivo, e tem sido usado por jornalistas que cobrem eleições e mídias sociais para investigar questões em uma série de países.

«Sou repórter investigativo há muito tempo, e dados como esse são essenciais para reportar atividades de campanha na era digital. Apenas olhar para contribuições e gastos em relatórios de divulgação não é mais suficiente», postou um usuário que compartilhou o link para ad.watch em HackerNews.

O projeto foi destaque em agências de notícias e sites de relatórios de tecnologia como Vice, Huffington Postagem e a Hindu](https://www.thehindu.com/society/in-the-crosshairs-of-facebook-ads-understanding-the-new-infrastructures-of-political-propaganda/article30122412.ece). A mídia televisiva como SkyNews no Reino Unido e ORF na Áustria usaram os dados para descobrir histórias sobre a política do Reino Unido e as eleições austríacas. Tem também alimentou conversas em andamento sobre anúncios políticos e plataforma políticas e foi apresentado em exposições de arte na Holanda, Argentina, Noruega, Estados Unidos e Índia.

Mas não chegamos a esse ponto facilmente. As perguntas que fizemos nós mesmos mudamos ao longo do tempo, e nossos conhecimentos e habilidades nem sempre corresponder às tarefas que queríamos concluir. Tentando entender o operações de uma infra-estrutura tão obscura de um excepcionalmente empresa poderosa era uma tarefa gigantesca.

Como não tínhamos um objetivo específico no início, seguimos tópicos que foram interessantes para nós e tentamos contornar os obstáculos. Nós portanto, narre a história da jornada investigativa de ad.watch através de diferentes considerações práticas, éticas, técnicas e políticas.

Entendendo as eleições indianas

Estávamos na Índia em abril de 2019, quando começaram as eleições gerais indianas. Foi supostamente o maior exercício de democracia da história. Porque do tamanho do país, com sua população de mais de 1,3 bilhão povo e o grande número de assentos parlamentares (545), as eleições foram acontecer em sete fases ao longo de um mês, de 11 a 19 de abril Maio de 2019. Diferentes regiões tiveram eleições em dias diferentes.

Como ambos tínhamos curiosidade sobre tecnologia e política, começamos a observar o papel das empresas de internet, dados e mídias sociais no eleições. Ficamos particularmente interessados em entender como as formas de novas mídias estavam funcionando durante o processo eleitoral. O papel de TV, jornais e outras mídias tradicionais para campanha política são razoavelmente bem compreendida – tem regulamentos que se aplicam a ela, e tem foi tema da cultura popular por um tempo. Mas havia pouco Conscientização pública e percepção sobre a relação entre as mídias sociais e anúncios políticos direcionados e como isso seria abordado por reguladores, pelo público e por pesquisadores curiosos como nós.

As plataformas de mídia social cresceram rapidamente e, em alguns casos, dominam o ecossistema de mídia durante as eleições. Fenômenos da Internet como «tendências tópicos» (tópicos que são populares em determinados momentos) também influenciam a direção de reportagens e debates na mídia tradicional. No entanto, estes fenômenos – e como eles são gerados e como eles se espalham – são bastante opaco. Isso torna difícil para os legisladores ou para o público para ter respostas apropriadas. Este estado de coisas foi um motivação para focarmos na propaganda eleitoral nas redes sociais.

Como a lei eleitoral indiana foi implementada muito antes do uso de anúncios digitais personalizados, tivemos que nos perguntar como essas leis seriam aplicadas em plataformas de mídia social, particularmente com o escalonamento natureza das eleições. Um detalhe em particular sobre o qual estávamos curiosos era se o “período de silêncio” seria observado nas mídias sociais e como a Comissão Eleitoral da Índia monitoraria isso.


Observação:

O período de silêncio é um tempo pouco antes dos dias das eleições, quando partidos políticos não estão autorizados a fazer campanha, organizar comícios ou publicar anúncios. O objetivo é dar aos eleitores um período em que possam refletem e decidem sem influência adicional de campanhas que possam afetar sua decisão de voto.

A propaganda circula na Índia em uma vasta gama de plataformas. O habitual suspeitos como WhatsApp, Facebook, Instagram, Google e Twitter foram sendo usado de maneiras interessantes, mas outros como ShareChat e TikTok também abrigavam grandes quantidades de propaganda organizada e desorganizada. Começamos a ficar atentos a diferentes medidas relacionadas às eleições tomadas por essas plataformas, bem como por delivery de comida e fintech (serviços de tecnologia financeira) aplicativos como Swiggy, PayTM e outros.

Passamos algum tempo pesquisando como as plataformas de internet estavam lidando com o uso de suas plataformas para mensagens políticas e publicidade. Nós encontrou abordagens diferentes: em meados de 2019 TikTok introduziu um recurso pelo qual os resultados de pesquisa e hashtags políticas populares teriam um anúncio de serviço público pedindo às pessoas que se protejam contra “notícias falsas”; outros, como o Google, exigiam certificação das autoridades locais antes de um anúncio ser veiculado nas plataformas de publicidade do Google. Depois de vários escândalos](https://www.theguardian.com/technology/2019/mar/17/the-cambridge-analytica-scandal-changed-the-world-but-it-didnt-change-facebook) sobre seu papel na manipulação das eleições, o Facebook estava sob muita pressão para tomar medidas preventivas.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-tiktok.png Captura de tela: algumas hashtags como no Tiktok como #Ambedkar apareceram com um “Anúncio de serviço público” pedindo comportamento responsável, enquanto outras como #chowkidar que agregavam conteúdo incendiário diretamente relevante para as eleições não tinham o mesmo PSA. Data: 3 de maio de 2019. Fonte: Nayantara Ranganathan.

Não havia uma diretriz ou abordagem única e clara que todas as plataformas estavam compartilhando. Em vez disso, cada empresa estava testando as águas para ver como lidaria com as eleições indianas e a enxurrada de conteúdo político.

Para explorar isso ainda mais, tivemos que decidir qual plataformas para monitorar. Como não tínhamos tempo nem recursos para investigá-los todos, decidimos focar a parte preliminar do investigação no Facebook, porque sabíamos que era um dos mais plataformas de publicidade online amplamente utilizadas na Índia.


Observação:

Com mais de 241 milhões de usuários ativos todos os meses (no início de 2020), o Facebook tem mais usuários na Índia do que em qualquer outro país. O Facebook é um dos as plataformas de mídia social mais usadas na Índia depois do WhatsAapp, que também pertence ao Facebook (no momento da redação deste artigo, do final de 2019 ao início de 2020).

Iniciar esta investigação não foi fácil. O Facebook lançou recentemente ferramentas que visavam tornar os anúncios políticos mais transparentes em Índia e em outro lugar.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-fb-disclaimer.png

A Biblioteca de Anúncios do Facebook forneceu uma maneira para as pessoas navegarem por anúncios políticos por meio de pesquisas de palavras-chave e pesquisas de nomes de páginas. Mas quando começamos explorá-lo, encontramos problemas com ele: as consultas de pesquisa não retornar resultados abrangentes – apenas uma seleção de anúncios cuja lógica foi obscuro para nós. Além disso, não havia como encontrar a cópia exata do o anúncio que você deve ter notado na ferramenta anteriormente, pois os anúncios não foram marcados com quaisquer identificadores exclusivos para rastreá-los.

Nossa intenção era recuperar os dados para monitorar o período de silêncio durante as eleições de sete fases, o que significava que precisávamos filtrar anúncios por região e pelo período em que os anúncios foram exibidos. Tal investigação estava além do escopo do que a Biblioteca de Anúncios era capaz de oferecer. (Meses depois, a Biblioteca de Anúncios marcou cada campanha publicitária com números únicos códigos ou “identificadores” para rastreabilidade.)

Isso nos levou a procurar maneiras alternativas de monitorar os anúncios do propósitos de nossa investigação. Chegamos à conclusão de que precisávamos construir nosso próprio banco de dados de anúncios.

Depois de cavar mais, encontramos uma ferramenta desconhecida e mal documentada chamado Facebook Ad Library API (Aplicativo Interface de Programação), que acabara de ser lançado na época em que analisou em 2019. Todos os lugares onde alguém procuraria informações sobre a ferramenta na época – Github, Reddit e outros fóruns – foram silêncio sobre o uso da API. O Facebook fez pouco esforço para documentar e comunicar sobre isso. Esperávamos que encontrar nosso caminho em torno da API poderia potencialmente nos permitir construir nosso próprio banco de dados em um programa maneira (embora nenhum de nós tivesse habilidades avançadas de programação) e fazer perguntas mais significativas sobre os dados.

Obter acesso à API envolveu várias etapas exigentes:

  • tínhamos que ter uma conta no Facebook

  • esta conta tinha que ter exatamente o mesmo nome que nossos documentos oficiais emitidos pelo governo

  • Tivemos que adicionar um número de telefone à nossa conta e ativar a autenticação de 2 fatores

  • tivemos que enviar uma cópia de nosso comprovante de identidade de uma lista selecionada de documentos que o Facebook aceita, como carteira de motorista, etc.

  • e finalmente, dependendo da nossa nacionalidade, tínhamos que seguir etapas adicionais

Esta lista difere de país para país.


Observação:

No decorrer deste processo, enfrentamos algumas dificuldades enquanto ser verificado, incluindo uma visita domiciliar, mas falaremos disso mais tarde.

Por mais desafiador que tenha sido ser verificado, foi igualmente desafiador aprender a usar a plataforma assim que tivermos acesso a ela.

Conhecendo a API

Finalmente chegamos à API do Facebook, mas, nesta fase, não sabíamos muito sobre como usá-lo. Como você verá, ao aprender a usá-lo, encontramos dúvidas sobre como criar consultas, mas também como redefinir os resultados em uma forma que seria útil.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-fb-graph.png

  • Captura de tela: A API do Facebook Graph. Data: 10 de junho de 2019. Fonte: Nayantara Ranganathan.*


Manoel

Passei muitos dias entendendo como criar consultas e o que foi possível consultar em primeiro lugar. Na ausência de documentação adequada da API, e sem muita discussão sobre isso em outros fóruns (talvez porque foi lançado recentemente), tudo isso era novo e terreno desconhecido. Para usar a plataforma, tive que criar uma consulta (uma lista de perguntas codificadas) que pedia ao Facebook os dados de que eu precisava.

No começo eu comecei a consultar anúncios pelos &search_terms parâmetro, que retorna todos os anúncios que contêm o termo em questão. Por exemplo, consultando &search_terms='modi' recebi todos os anúncios contendo o texto “modi” (ou seja, Narendra Damodardas Modi – candidato nas eleições indianas de 2019 e primeiro-ministro da Índia desde 2014 e a partir de 2019 ao escrever esta peça) e exibido nos países especificado no obrigatório &ad_reached_countries=['IN'] parâmetro. Os países são especificados por meio de um código ISO para países com duas letras, IN para a Índia, neste caso.

Consultando a API através dos termos de busca conseguimos obter todos os diferentes anúncios sobre um determinado termo. No entanto, isso não era adequads o nossa tarefa de entender de forma abrangente todos os anúncios políticos comprado por uma parte específica na Índia, como a palavra-chave mais extensa a pesquisa sempre deixaria alguns anúncios fora do escopo. Além disso, às vezes os anúncios estavam em idiomas diferentes do inglês ou continham unicode personagens como emojis que não poderíamos prever.

Em vez de pesquisar pelo método de palavra-chave, tentamos usar o parâmetro &search_page_ids=, mas logo aprendemos que pesquisar para páginas e pesquisa com palavras-chave não eram compatíveis e não podiam ser usados simultaneamente. Decidimos abandonar o método de palavra-chave e fomos usando Page IDs como pontos de entrada. O que isso nos permitiu fazer foi coletar todos os anúncios em uma página do Facebook em um determinado país. Nós descobriu que até 10 IDs de página diferentes podem ser adicionados em uma consulta. Isso nos levou a considerar a possibilidade de resolver o problema de coletando todos os anúncios de atores políticos coletando manualmente todos seus IDs de página e construindo uma consulta para cada 10. A primeira etapa era identificar os atores políticos cujos anúncios precisávamos coletar. Em no caso da Índia, isso foi feito por Nayantara, já que ela era familiar com o contexto. Em seguida, verificamos com outras pessoas em nossas redes.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-ysr-congress.png Captura de tela: Página do Partido do Congresso YSR no Facebook https://www.facebook.com/ysrcpofficial/. Data: 29 de novembro de 2019. Fonte: Nayantara Ranganathan.

Uma vez que tínhamos a lista completa dos principais candidatos políticos e partes nas quais estávamos interessados, precisávamos pesquisar online por seus páginas do Facebook para obter seus IDs de página - um número que identifica cada página do FB. Isso envolveu um processo dedicado para cada página.

Primeiro, precisávamos encontrar as páginas dos atores políticos no Facebook. Em em alguns casos, as páginas eram fáceis de encontrar; outras vezes tivemos que discernir se fossem fanpages ou páginas oficiais. Alguns atores políticos tiveram múltiplas páginas; algumas páginas estavam constantemente mudando de nome por causa coligações ou devido a rebranding; e às vezes não havia páginas para alguns partidos e candidatos. Isso significava que tínhamos que fazer muito trabalho para entender se havíamos chegado à página certa. Postagens dessas as páginas às vezes estavam em idiomas regionais, e só na Índia existem 22 línguas oficiais e nove escritas diferentes. E naturalmente, este desafio tornou-se cada vez mais complexo à medida que o projeto crescia, como veremos veja mais tarde.

Depois de coletar as páginas do Facebook, seguimos uma tarefa simples, mas repetitiva:

  • Clique com o botão direito do mouse na foto do perfil e abra-a em uma nova guia.

  • Dentro deste URL, encontre o número da ID da página, selecione-o e salve-o. Em dessa forma, mapeamos, coletamos e verificamos os Page IDs.

Uma vez que tínhamos essa lista de IDs de página, compusemos nossa consulta, que parecia assim:


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 ,impressões,page_id,page_name,region_distribution,spend&limit=99&search_page_ids=121439954563203 ,218904931482352,351616078284404,1447651982136257,1473429256300357,192136870799912,290805814352519,241701912507991,245976 872240667,163382127013868&transport=cors

Como você pode ver acima, também incluímos outros parâmetros, que foram mencionado na documentação esparsa da API do Facebook:

  • ad_active_status=ALL - o que significa que estávamos procurando por todos os anúncios, ativos e inativos.

  • ad_reached_countries=['IN'] - o que significa que o país onde os anúncios alcançados devem ser a Índia (IN).

  • limit=99 significa que queremos apenas 99 resultados. Este parâmetro $1 $2xtremamente importante, como entenderemos mais adiante.

  • e os campos para os quais queríamos obter respostas são os que temos depois diretiva &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

O Facebook posteriormente incorporou o parâmetro &platform_publisher, que u Rretendia nos dizer se o anúncio aparece no Facebook, Instagram, Messenger ou Rede de audiência.


Observação:

Audience Network permite que aplicativos de terceiros usem a infraestrutura de segmentação do Facebook para entregar anúncios em plataformas fora do Facebook e Instagram.

Para cada anúncio, as respostas que buscamos foram as seguintes:

  • ad_snapshot_url - o URL do instantâneo do anúncio (o identificador exclusivo de cada anúncio)

  • ad_creation_time - a hora em que o anúncio foi criado

  • ad_creative_body - o corpo criativo do anúncio (conteúdo geralmente no forma de texto e, às vezes, emojis)

  • ad_creative_link_title - links que podem ser adicionados no conteúdo (muitas vezes, isso leva a pesquisas em que mais dados são solicitados)

  • ad_creative_link_caption – legendas que podem acompanhar o links (como “Saiba mais” ou “Clique aqui”)

  • ad_delivery_start_time - a hora em que o anúncio foi programado para ser entregue

  • ad_delivery_stop_time - a hora em que o anúncio foi programado para parar de ser entregue

  • moeda - a moeda em que foi pago

  • distribuição_demográfica - as idades e gêneros das pessoas para quem o anúncio foi entregue

  • funding_entity - a entidade que pagou pelo anúncio

  • impressões - o número de vezes que o anúncio pode ter sido visualizado

  • page_id - o identificador da página (ID),

  • page_name - o nome da página

  • region_distribution- as regiões nas quais o anúncio foi entregue

  • gasto - uma faixa de dinheiro que foi gasto no anúncio específico

Na consulta mostrada acima, isso significava que estávamos procurando por anúncios, tanto ativos e inativos, que chegaram à Índia, de dez atores políticos, ato am limite de 99 anúncios.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-query-results.png Captura de tela: inserir a consulta acima em https://developers.facebook.com retorna os dados neste formulário. Data: 30 de novembro de 2019. Fonte: Nayantara Ranganathan.

Essa consulta retornou alguns dados e foi nosso primeiro passo para obter uma compreensão de como eram os dados.

Mesmo nesta fase, só conseguimos coletar dados sobre os 99 mais anúncios recentes. O Facebook permitia a coleta de até 5.000 anúncios, mas o a probabilidade de travamento da consulta aumentou drasticamente quando aumentamos o número de anúncios solicitados. Isso acontecia com tanta frequência que a guia do navegador de onde visitamos, a Ad Library API travava quando fazíamos uma grande consulta. Então nos limitamos a consultas que retornaram entre 99 e 200 resultados. Precisávamos encontrar uma maneira de superar os 99 resultados que foram prático de arrecadar, mas também além dos 5.000 que teoricamente era oferecido para coletar todos os anúncios.


Observação:

As consultas da API falhavam inesperadamente por motivos desconhecidos, às vezes funcionando, às vezes não, e às vezes entregando erros diferentes para exatamente a mesma consulta. A essa altura, tornou-se óbvio para nós que A falta de interesse do Facebook em documentar a API foi combinada com possíveis impedimentos para que as pessoas coletem dados sistematicamente. A escala das barreiras nos fez pensar se a plataforma foi intencionalmente nos impedindo de acessar os dados, e se a divulgação do Anúncio Biblioteca e API foram uma forma de encobrir as preocupações de transparência com um ferramenta propositalmente inadequada. Também ocorreu durante um período em que Facebook estava quebrando baixo em muitas empresas de software para coletar dados de seus API. Estas proibições podem ser vistas como um movimento estratégico no rescaldo do Escândalo da Cambridge Analytica, onde o Facebook usou o escândalo para limitar a transparência sob o banner de proteger a privacidade do usuário. Além disso, a eficácia do usuário segmentação e a vantagem competitiva da plataforma de publicidade do Facebook logicamente depende de divulgação mínima sobre seu funcionamento interno.

Na parte inferior da página de resultados da consulta, encontramos uma URL com um número de “paginação”. Este link nos levou a um URL diferente onde o a próxima página de (99) resultados apareceu. E assim por diante. A parte chave do a paginação estava no parâmetro retornado &after=. Uma sequência única de números e caracteres foram dados que apontavam para a próxima página do resultados para a mesma consulta. Descobrimos que, se incluíssemos essa paginação em nossa próxima consulta, isso nos levaria à página 2, depois à 3, etc. Parecia assim:

&after=c2NyYXBpbmdfY3Vyc29yOk1UVTFPREV3TXpRd01Eb3pNRGM0Tmprd056WTRNamd6T0RVPQZDZD

Não havia como saber quantas páginas de resultados estavam indo ser até que passamos por todos eles. Mas desta forma poderíamos em menos passe manualmente por cada página de resultados e copie os dados de o navegador para um arquivo de texto. Os dados foram fornecidos no formato JSON, e cada página continha a sintaxe do início e do fim do arquivo. Esse significava que, se armazenássemos os dados como eles vieram, teríamos que criar um arquivo para cada página de resultados. Rapidamente percebemos que salvar o resultados de cada 99 anúncios em um arquivo separado seria uma tarefa extremamente árdua e tarefa ineficiente. Então procuramos uma forma de copiar o resultado do Consulta JSON sem cabeçalho e rodapé.


Observação:

O cabeçalho significa a parte da resposta que indica que o os dados começam nesse ponto e estão contidos abaixo. Isto é o que parece para as respostas JSON da API da biblioteca de anúncios: { "data": [

E o rodapé, que indica que os dados terminam ali, parece assim: ] }

Desde a primeira página de uma determinada consulta, armazenamos o cabeçalho e o conteúdo, mas não o rodapé. De todos os seguintes, salvamos apenas o conteúdo sem cabeçalho e rodapé, e quando chegamos ao último página dos resultados, coletamos apenas o conteúdo e o rodapé. Nós poderia identificar a última página dos resultados porque na página final, não haveria mais links de paginação levando à próxima página de resultados. Assim conseguimos ter dados sobre os 10 partidos políticos e atores políticos em apenas um arquivo JSON.

Para que este sistema funcione, precisamos adicionar uma vírgula (,) e uma linha break no lugar do rodapé que removemos. Desta forma utilizamos o Sintaxe JSON para indicar que, em vez do final do arquivo, mais anúncios seguiria.

A paginação foi útil para contornar as falhas regulares do API, pois a usamos para reiniciar o processo de coleta de dados da página onde caiu. Passamos um tempo tentando descobrir por que essas falhas estavam acontecendo, mas não conseguimos encontrar razões claras. Às vezes nós tentaríamos novamente com a mesma consulta e não travaria. No geral, ajudou a usar um baixa quantidade de resultados do parâmetro &limit=, e não ser muito rápido em fazer as consultas.

Constantemente tínhamos que andar na linha entre não sermos bloqueados de “uso excessivo” da API, evitando também as falhas imprevisíveis. O abordagem de tentativa e erro também criou outros problemas para nós, como sendo bloqueado pelos limites de taxa da API. Facebook não tinha especificou os limites de uso, mas alguns indefinidos estavam claramente em lugar. Nossos primeiros esforços para automatizar a coleta de dados com um Python foram dissuadidos e parecia que o Facebook estava dificultando deliberadamente a automatização da coleta, e daria mais chances de sucesso quando as consultas foram feitas de menores, mais lentos, interações manuais.

O desafio neste ponto tornou-se, portanto, como automatizar o coleção de anúncios enquanto ainda faz com que pareça um manual, humano esforço.

Desenvolvemos um padrão muito mecânico e repetitivo para coletar os dados manualmente. O fluxo de trabalho ficou assim:

  • carregar uma consulta

  • copie o resultado, exceto o rodapé

  • clique na próxima página

  • enquanto a próxima página carrega, cole os dados em um arquivo de texto

  • adicione a vírgula e pule de linha para manter a continuidade dos dados na sintaxe

  • alternar guias

  • copie os dados sem cabeçalho e rodapé

  • colá-lo no documento

  • adicione a vírgula e o salto de linha…


Manoel

Atalhos como ctrl+c, ctrl+v e alt+tab ajudou a tornar esse processo mecânico mais eficiente. Para fazer o trabalho de a API e minhas próprias ações eficientes e sincronizadas, ajustei o &limit= para retornar dados que levariam a mesma quantidade de hora de carregar no navegador como o tempo necessário para concluir minha parte o fluxo de trabalho de copiar e colar dados no arquivo de texto. A aleatoriedade de o comportamento humano contornou os bloqueios do FB e trava na maioria das vezes. No entanto, foi uma tarefa extremamente lenta, repetitiva e meticulosa. Tornou-se uma rotina de resistência passar horas todos os dias apenas realizando esta coleta manual de dados, construindo megabytes e então gigabytes de dados JSON através deste método.

me tornei muito eficiente nisso, a ponto de conseguir fazer sem pensar, realizar os movimentos necessários, como andar de bicicleta. O desafio era me manter são enquanto continuava a tarefa. Através neste sistema, eventualmente, coletamos todos os dados dos anúncios sobre o político atores que estávamos pesquisando na Índia.

Violações do período de silêncio

A lei eleitoral indiana impõe um período de silêncio 48 horas antes da dia das eleições – o que significa que todas as atividades de campanha, incluindo anúncios online e offline, são banidos nos dois dias anteriores tempo de eleição. Se essas regras fossem seguidas na internet, nosso a consulta à API da biblioteca de anúncios do Facebook não deveria ter retornado anúncios veiculados de 10 de abril de 2019 até o final do dia no dia 11 de abril de 2019 (dia da primeira fase das eleições).

Para ver se esse era o caso, precisávamos encontrar uma maneira de fazer sentido dos dados que havíamos coletado. Estava no formato JSON, então precisávamos software que poderia manipular e ajudar a analisar dados JSON.


Manoel

Enquanto procurava fóruns na web, aprendi sobre Tableau, dados software de visualização e análise. Baixei a versão de teste do Tableau Public, um software disponível para computadores com sistema operacional Windows. Trabalhar com o Tableau Public não foi fácil desde o início. EU precisava de algumas dicas de vários fóruns na internet e explicações sobre YouTube para entender o que se faz depois de obter dados em JSON formato.

Mas o Tableau não está disponível para Linux, que é o sistema operacional I normalmente executado no meu computador. Para poder usar o Tableau, baixei um software de virtualização chamado VirtualBox. software de virtualização permite que você execute um sistema operacional diferente daquele instalado em seu computador sem a necessidade de adicionar outro sistema operacional em seu dispositivo.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-virtualbox.png Captura de tela: VirtualBox, um aplicativo que permite que você use seu computador para acessar virtualmente outra máquina. Data: 20 de julho de 2019. Fonte: Manuel Beltrán.

Depois de configurado e instalado, usamos o Tableau para entender os dados. Nós tive que brincar com o Tableau para entender como fazer o software ler os dados que tínhamos, como fazê-lo ler vários arquivos de dados, o que a estrutura de tais dados combinados teria que ser, e geralmente o que recursos oferecidos pelo Tableau.

Pudemos fazer perguntas como:

  • Quais anúncios foram exibidos em uma determinada janela de tempo?

  • Quais partidos políticos estavam exibindo anúncios em quais regiões?

  • Que anúncios os velhos do sul da Índia estavam vendo?

Um parâmetro que achamos que seria útil para entender quais anúncios estavam violando o período de silêncio era "ad_creation_time," que registra uma data neste formato: "2019-04-02T17:22:45+0000."

Mas depois de um estudo mais aprofundado, percebemos que a data e hora em que um o anúncio foi criado não coincidiu necessariamente com a hora em que foi entregue às pessoas. Para entender quando os anúncios foram exibidos, o mais útil parâmetros foram "ad_delivery_start_time" e "ad_delivery_stop_time." Isso nos deu o intervalo de tempo dentro qual um anúncio chegou às telas das pessoas. Por causa do natureza multifásica das eleições indianas (ou seja, votação ocorrendo em diferentes horários em diferentes regiões) também tivemos que combinar o silêncio período de tempo com as respectivas regiões que iam às urnas e, portanto, sujeitos a esses períodos de silêncio. Para entender isso, nós usou o parâmetro "region_distribution."

Filtramos os dados para mostrar os anúncios que estavam ativos durante o silêncio período de uma região específica e analisá-los ainda mais. começamos a ver que as violações não foram acidentais ou excepcionais, mas sim rotina. Usando os parâmetros de "ad_start_date" e "ad_stop_date," identificamos anúncios em exibição durante o período de silêncio. Além disso, usamos o "region_distribution" parâmetro para isolar os anúncios que estavam em execução no período de silêncio para estados particulares.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-tableau-viz.png Captura de tela: uma etapa no processo de compreensão do número de anúncios que violam o período de silêncio usando o software de visualização Tableau. Data: 20 de julho de 2019. Fonte: Manuel Beltrán.

Desta forma, passamos a coletar sistematicamente todos os anúncios que violou o período de silêncio. Neste momento já estávamos prestes a entrar na quinta fase das eleições, então coletamos violações do primeiras quatro fases. Aprendemos que uma das métricas mais importantes – a quantia gasta em anúncios – foi fornecida apenas como um intervalo. Esse complicaram nossos esforços para determinar o gasto de políticas atores. Mas como essa era uma informação tão crucial, decidiu chegar a um compromisso e calculou a média dos intervalo para cada anúncio.

Como esperado, esta informação levou a várias descobertas interessantes. Alguns atores políticos que criaram milhares de anúncios tiveram gastaram menos dinheiro do que atores políticos que criaram menos anúncios, mas com um gasto maior. Entendemos que o número de anúncios nem sempre m giretamente proporcional à quantidade de dinheiro gasto. Para nós investigação sobre o período de silêncio, isso significava que, mesmo que uma das partes tivesse muitos mais anúncios em violação, era possível que outro a festa gastou muito mais dinheiro em anúncios cronometrados quebrando o silêncio período. Estas foram observações importantes à medida que desconstruímos o significado dessas violações e seu alcance.

No total, coletamos 2.235 anúncios em violação ao silêncio período na Índia durante as primeiras quatro fases.

Uma vez que percebemos que tínhamos evidências concretas de violações, enfrentamos a questão com a qual muitos pesquisadores e investigadores lutam: «O que podemos fazer sobre isso?»

Neste ponto, o país ainda estava no meio do multifásico eleição, faltando algumas semanas para a conclusão. Nossas opções eram para notificar o Facebook sobre as violações ou para notificar o Indian Comissão Eleitoral (CE). Havia, é claro, a terceira opção: continue documentando e escrevendo sobre isso. No entanto, sem uma mídia afiliação ou uma plataforma de publicação, não tínhamos certeza de que isso ser a rota mais impactante.


Observação:

Embora não esperássemos realmente que a Comissão Eleitoral (CE) estivesse equipada ou inclinada para resolver isso, estávamos mais hesitantes em notificar o Facebook sobre o evidência. Relatar essas violações ao Facebook significaria que colocamos a responsabilidade de zelar pela integridade das relações democráticas processos em uma empresa privada estrangeira com um histórico terrível de accountability, em vez de uma instituição democrática. teria significava que confiaríamos ativamente a supervisão ao Facebook funções que têm um impacto significativo nos nossos processos eleitorais. Apesar de imaginarmos que reportar ao Facebook seria uma forma mais rápida para retirar os anúncios, por uma questão de princípio, decidimos denunciar primeiro para o CE e publicar nossas descobertas para o público.

Fizemos um relatório com evidências dos dados dos 2.235 anúncios em violação, categorizados pelas quatro fases das eleições, juntamente com uma breve explicação.

Como esperado, não recebemos nenhuma resposta.

Junto com o relatório para o CE, também decidimos escrever sobre isso. HuffingtonPost Índia concordou em publicar nossa história com as descobertas sobre as violações do período de silêncio por anúncios políticos no Facebook.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-huffpost-india.png Imagem ilustrativa que acompanha a reportagem. Créditos: Manuel Beltrán e Nayantara Ranganathan.

As violações continuaram a ocorrer nas fases restantes do eleição e, até onde sabemos, nenhuma ação foi tomada até agora.

Rumo a ad.watch

https://cdn.ttc.io/i/fit/1000/0/sm/0/plain/kit.exposingtheinvisible.org/il/ad-watch_02-cik-illustration.png

No processo de encontrar respostas para nossas perguntas específicas sobre o período de silêncio, encontramos outras formas interessantes de ler os dados através do Tableau. Um dos principais desafios aqui foi entender como para estruturar os dados. Como os dados que estávamos coletando estavam em vários arquivos, tínhamos que ter certeza de que os arquivos estavam «empilhando» da maneira certa.

Desenhamos a coleta de dados de forma que houvesse cortes limites para arquivos com base em seu tamanho. Isso significava que se um os dados de anúncios do ator político eram enormes (como os de Donald Trump), então o arquivo conteria menos do que o número padrão de dez os dados de anúncios dos atores e, em vez disso, contêm apenas os dados de um político. fomos capaz de entender a estruturação dos dados por meio de muitas tentativas e erros, bem como com a ajuda dos fóruns da comunidade do Tableau e do YouTube vídeos sobre a ferramenta. Uma vez que é uma análise de dados tão popular e ferramenta de visualização, encontrar respostas para tais detalhes era uma questão de explorando fóruns já disponíveis.

Além das quebras do período de silêncio, encontramos outras detalhes interessantes: a arquitetura da informação sobre política anúncios, as categorias de informação disponíveis, bem como os dados que estava faltando, foram todos reveladores. Por exemplo, aprendemos que o Facebook perfilou as pessoas em binários de gênero masculino e feminino, apesar permitindo que os usuários se identifiquem entre uma ampla gama de opções no usuário lado. Esta foi uma espiada interessante em como as coisas funcionam de maneira diferente em o nível de experiência do usuário versus como eles funcionam no back-end infraestrutura projetada para comercialização.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-fb-custom-gender.png

  • Captura de tela: opções do menu suspenso que aparecem nas configurações da conta do Facebook depois que você escolhe definir seu sexo como “Personalizado”. Data de 29 de novembro de 2019. Fonte: Nayantara Ranganathan.*

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-fb-gender-binary.png Captura de tela: Segmentação de usuários do Facebook no binário de gênero, visível no processo de criação de anúncios ou impulsionamento de postagens. Data de 29 de novembro de 2019. Fonte: Nayantara Ranganathan.

Assim que conseguimos descobrir as violações do período de silêncio, o índio as eleições estavam bem encaminhadas e as eleições para o Parlamento Europeu de 2019 aproximavam-se. Nesta ocasião, também começamos a pesquisar dados sobre os partidos espanhóis para as eleições do Parlamento Europeu e as eleições municipais e nacionais espanholas de 2019. Lentamente, começamos a ampliar o escopo de nossa coleta e pesquisa de dados.

Embora agora estivéssemos coletando e explorando dados de anúncios do Facebook de vários contextos, ficamos desconfortáveis escrevendo histórias sobre países que não tínhamos contexto ou conhecimento. Além disso, sentimos que era de alguma forma incorreto fazê-lo, mesmo que tivéssemos algum entendimento do lugares ou encontrar colaboradores de diferentes países.

Mas enquanto permanecemos em nossa pista, também queríamos fazer esses dados em outros países acessíveis. Decidimos que coletaríamos os dados disponível em todos os países, mas deixe a análise e investigações a quem possa estar interessado em assumi-las.

Nos conectamos com colegas e amigos em outras partes do mundo onde as eleições estavam acontecendo para ver se os dados que estávamos coletando pode ser útil para eles diretamente ou se eles estiverem interessados em defendendo a liberação de dados semelhantes nessas regiões também. Por exemplo nas Filipinas, o Facebook é um canal crucial para Duterte campanhas de desinformação do governo. As Filipinas também passam a ser um dos mercados de trabalho para contratos exploradores e traumáticos trabalhos para moderação de conteúdo, inclusive para o Facebook. falamos com um amigo e colega nas Filipinas para compartilhar o que havíamos trabalhado, e ouvi sobre os desenvolvimentos e preparativos de lá.

Assim que decidimos começar a ver anúncios políticos globalmente, tivemos que considerar seriamente qual abordagem adotar, quais grupos ou pessoas foram já trabalhando em projetos relacionados a propaganda política e o que lacunas que podemos preencher. Sabíamos que FBTrex por exemplo, é uma ferramenta que ajuda os usuários a coletar metadados de postagens, incluindo anúncios políticos que aparecem em seus feeds de notícias, instalando um extensão do navegador.


Dicas:

Rastreamento do Facebook Exposed (FBTrex) é um projeto cuja visão é que os indivíduos devem estar no controle de seus algoritmos. Entre outras coisas, o projeto oferece um navegador plugin que coleta os metadados de todas as postagens públicas em sua linha do tempo e permite que você contribua com esses dados para um conjunto de dados público ou mantenha é privado para seu próprio uso. O FBTrex também permite que pesquisadores (e usuários) usar/reutilizar uma parte dos dados por meio de seus API.

ProPublica criou um ferramenta chamada Political Ad Collector, que permite instalar um plug-in de navegador que coleta todos os anúncios políticos que você vê enquanto navega e os envia para um banco de dados que permite que o ProPublica analise melhor a natureza do anúncio político segmentação.

Who Targets Me é um projeto que também usa um plug-in de navegador que você pode instalar para coletar todos os postagens na sua linha do tempo. O plug-in envia esses dados para um crowdsourced banco de dados global de anúncios políticos, corresponde aos posts patrocinados contra listas categorizadas de anunciantes políticos e desenha conclusões sobre quem está mirando você online.

Tínhamos nos familiarizado com os campos de informação que o anúncio do Facebook A API da biblioteca estava fornecendo, mas não conhecíamos os campos de informações que estavam disponíveis para os anunciantes segmentarem os usuários. Isso significava que mesmo que soubéssemos que um determinado anúncio estava alcançando entre 1.000 e 10.000 pessoas em Delhi, não sabíamos se esses eram os parâmetros que o anunciante selecionou para segmentar os anúncios. Nós estávamos interessados em conhecer as opções disponíveis para administrar o direcionamento, por assim dizer.

Então criamos páginas de partidos políticos fictícios e testamos a compra e segmentação de anúncios. Criamos uma página cada e «impulsionamos» as postagens. O nível de detalhe disponível deste lado da janela foi, sem surpresa, muito maior do que a informação que estava sendo revelada em nome da transparência. Poderíamos criar «públicos personalizados» por especificando quais tipos de «Dados Demográficos, Interesses e Comportamentos» nós queria atingir. Também poderíamos inserir dados de pessoas que possam ter interesse indicado em nosso negócio ou campanha e o Facebook ofereceria para fornecer anúncios a um «público semelhante». Estes são anúncios padrão métodos, mas estávamos prestes a descobrir que os campos disponíveis para a segmentação parecia bastante problemática e poderia se prestar a todos tipos de discriminação. Por exemplo, encontramos uma categoria chamada «Amigos de pessoas celebrando o Ramadã.»

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-targeting-suggestions.png Captura de tela: sugestões de segmentação ao criar um anúncio. Data: 29 de novembro de 2019. Fonte: Nayantara Ranganathan.

Estávamos cientes dos acontecimentos nos EUA, onde práticas de discriminação havia sido gravado e o Facebook responsabilizado. Também sabíamos que O Facebook se comprometeu a não permitir a segmentação com base em raça e gênero quando se trata de anúncios sobre emprego, habitação e crédito. Essas categorias confirmou que tais problemas não foram resolvidos em outras partes do mundo. Por exemplo, a opção acima de «amigos de pessoas comemorando Ramadã» é uma categoria que pode ser facilmente usada para excluir os muçulmanos em um momento em que o sentimento anti-muçulmano na Índia está emergindo do Estado assim como a sociedade em geral.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-exclusion.png Captura de tela: Sugestões para excluir pessoas do direcionamento de um anúncio. Data: 29 de novembro de 2019. Fonte: Nayantara Ranganathan.

Publicando ad.watch

Decidimos coletar os dados de atores políticos em todo o mundo.

Como mencionado anteriormente, estávamos usando o Tableau para experimentos internos e entender os dados. Nesse ponto, descobrimos que o Tableau permite a publicação online e, de fato, desde relativamente dinâmico e níveis sofisticados de visualização.

Enquanto começamos a usar o software Tableau para nos ajudar a entender o dados, uma vez que surgiu a questão da publicação, tivemos que pensar se queríamos tornar todo o projeto dependente de uma ferramenta que era proprietário e usado principalmente por departamentos de marketing para conduzir dados análise. Também tivemos que considerar se estávamos fazendo nossa ferramenta vulnerável por confiar em software proprietário que poderia decidir revogar o acesso a qualquer momento.

Exploramos outras alternativas de código aberto muito apreciadas, como Rawgraphs e Datawrapper. No entanto, dado o tamanho e particularidades dos dados, estes foram descartados. Alguns essas alternativas não puderam analisar o conteúdo dos anúncios porque o os anúncios às vezes continham caracteres de scripts não latinos. Então decidimos para prosseguir e usar o Tableau Public.


Observação:

Foi intrigante entender por que muitos desses aclamados jogos abertos fonte e software de visualização gratuito não conseguiram abrir nem mesmo pequenos extratos dos arquivos JSON.

Usamos um site chamado JSONLint que ajudou a «validar» os dados JSON – isto é, ajudando-nos a identificar se ocorreram erros de formatação nos arquivos. Fazer isso nos ajudou a descobrir saí que os erros de sintaxe identificados foram porque o campo com o texto geralmente continha scripts diferentes do latino, e também emojis e caracteres que foram incluídos em versões recentes do Unicode, o padrão para codificação de scripts em caracteres legíveis por máquina.

Então começamos a projetar nossas próprias interfaces visuais com o Tableau para navegar os bancos de dados. Um dos problemas que encontramos ao usar o Tableau foi a quantidade de recursos de computação necessários para lidar com bancos de dados de deste tamanho, que ultrapassavam os cinco gigabytes. Nossos computadores rodando através da máquina virtual eram muito lentos ou às vezes simplesmente incapazes de carregar os dados. Com os recursos financeiros limitados que tínhamos, comprar um computador mais poderoso não era uma opção.


Manoel

A universidade onde leciono fornece acesso aos professores para uma área de trabalho remota com um processador Intel Xeon com 20 GB de RAM. Esse acabou sendo uma ótima solução. Na ausência disso, teríamos tive que alugar um Virtual Private Server para o mesmo fim. Uma área de trabalho remota pode ser acessada através Protocolo de Área de Trabalho Remota (RDP). Este é um protocolo que permite acessar e controlar um sistema que não está no mesmo local físico que você.

Usar o RDP do meu laptop nos permitiu começar a carregar os bancos de dados em Tableau e ter os recursos do meu terminal disponíveis para outras tarefas. Até tornou possível fechar meu laptop enquanto o RDP continuava a carregar.


Observação:

Tableau permite importar arquivos JSON de até 128 MB apenas, então tivemos para dividir os arquivos abaixo desse limite. Usamos um script Python simples chamado json-splitter para essa tarefa.

Foi um desafio encontrar o equilíbrio certo entre o que queríamos alcançar com o projeto.

Por um lado, estávamos diante de uma vasta quantidade de dados relevantes para a política de muitos países, e já havíamos encontrado questões críticas na quantidade limitada de países que nós mesmos analisamos. Houve uma certa vertigem sobre a profundidade do que mais poderia estar lá, encorajando nossa necessidade de colocá-lo para fora.

Como um projeto que expõe os mecanismos não amplamente compreendidos tecnologia era importante apresentá-la de forma que qualquer um pudesse aprenda e entenda como os anúncios políticos funcionam. precisava ser poderoso o suficiente para permitir que jornalistas e pesquisadores conduzam suas investigações. E também precisou problematizar como o infraestrutura das funções de anúncios do Facebook. Unindo todos esses elementos levou algum tempo e exploramos diferentes iterações.

Entre torná-lo compatível com dispositivos móveis ou baseado em desktop, optamos pelo desktop, pois permite uma experiência mais aprofundada.

Enquanto se aproximava a conclusão das interfaces que estavam prestes a dar leve para ad.watch, a questão de como atualizar o banco de dados tornou-se mais iminente.

Se descarregarmos os dados diretamente para quem precisa deles, talvez o as atualizações não eram tão relevantes, mas como um recurso ao vivo, sentimos que era mais importante estar sempre atualizado. Algumas semanas antes do lançamento do projeto online participamos de um workshop do Exposing o projeto Invisible de Tactical Tech, (para trabalhar, entre outras coisas, no próprio início de esse texto). Lá contamos com a ajuda de Wael Eskandar para desenvolver o projeto inicial núcleo de um script Python que automatizaria a coleta de anúncios do API. Alguns dos desafios em desenvolvê-lo incluíram como tornar o Python incorporar as modificações que estávamos introduzindo anteriormente manualmente.

O próximo desafio foi fazer o script entender quando os anúncios de um determinada consulta foi concluída para que o script pudesse pular para a próxima consulta. Ou como fazer com que os arquivos fiquem abaixo do limite de 128 MB do Tableau cada. Como observado anteriormente, o Facebook impôs limites às consultas automatizadas, então começamos a imitar o comportamento humano adicionando atrasos de tempo aleatórios entre as consultas. De sua versão inicial, o roteiro tornou-se uma espécie de precioso sistema de coleta de dados, que estávamos melhorando a cada dia. Tornou-se também uma fonte de experimentação através que entendemos melhor como funciona a API do Facebook e experimentar com a recolha de dados que não os dos partidos políticos. No posteriormente, criamos um sistema de arquivos de texto com IDs de página que o script passaria, e um arquivo separado com o ISO de duas letras códigos de país, para que pudesse coletar vários países de uma só vez. Esta nova sistema também nos permitiu fazer atualizações na lista de partidos políticos mais facilmente.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-release.png Captura de tela: página inicial do site ad.watch. Data: 29 de novembro de 2019. Fonte: Manuel Beltrán.

O primeiro lançamento de ad.watch em 26 de julho de 2019 foi feito com a coleta manual de dados, mas até então também tínhamos aperfeiçoou o script a um nível que nos permitiu atualizar regularmente o dados, que se mostraram extremamente valiosos para a eficácia do projeto. Entramos no ar com o site e postamos em nossas redes sociais redes de mídia para espalhar a palavra. Recebemos muitos comentários positivos reações, inclusive de jornalistas que estavam usando os dados para entender os esforços de transparência de anúncios muito divulgados do Facebook, observando as tendências nas eleições de vários países.

Bifurcações na estrada

https://cdn.ttc.io/i/fit/1000/0/sm/0/plain/kit.exposingtheinvisible.org/il/ad-watch_01-cik-illustration.png

Verificação pelo Facebook

Quando estávamos tentando acessar os dados pela primeira vez e precisávamos ir através do processo de verificação de identidade, percebemos que os dois nós tivemos que enfrentar processos de verificação bastante diferentes para obter acesso para a plataforma de anúncios do Facebook.


Nayantara

Como alguém cuja «localização do país principal» foi Índia, tive que passar por uma etapa adicional para verificação de endereço. Isso envolvia escolher entre receber um código entregue em minha casa via correio ou visita de «alguém». A diferença de tempo entre os dois opções era significativo: o correio levaria três semanas, e o a visita à minha casa aconteceria dentro de uma semana. Porque queríamos obter com o processo o mais rápido possível e também foram atingidos pelo processo de visita domiciliar, decidimos por essa opção.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-three-step-verification.png Captura de tela: processo de verificação em três etapas para acessar a Ad Library API. Data: 20 de abril de 2019. Fonte: Manuel Beltrán.

O que aprendemos no decorrer desse processo de identificação explodiu nossas mentes.

Um dia após fazer o pedido de verificação, eu (Nayantara) recebi um telefonema de um homem que iria conduzir o processo. Ele disse que estava ligando sobre a verificação do Facebook e para perguntar se o dia seguinte foi um bom momento para visitar.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-ongrid-contractor.png Captura de tela: Informações de identidade do representante do OnGrid encarregado da verificação. Data: 23 de abril de 2019. Fonte: Nayantara Ranganathan

Todo esse episódio foi interessante por vários motivos, incluindo mostrar como a ascensão da tecnologia de identificação e negócios na Índia interagido com grandes empresas de tecnologia como o Facebook em busca de olhos e ears na Índia, um exemplo perfeito de verificação de identidade como serviço.

Naquela ocasião, perguntei ao interlocutor quem ele era e de qual empresa ele era de. Ele hesitou um pouco e parecia que não esperava o pergunta. Uma vez que estabelecemos que ambos sabíamos falar Kannada (um língua falada predominantemente pelo povo de Karnataka no sudoeste Índia), estabelecemos um tom mais familiar e confiante de conversa. Ele disse que trabalhava para uma empresa chamada OnGrid, e que seu nome era Umesh (nome alterado). Enquanto ele falava com uma mulher na linha, eu senti um tom estranho quando ele me perguntou sobre meu endereço e direções para minha casa. Ele também se tornou mais próximo ao revelar detalhes sobre si mesmo.

Umesh me garantiu que eu não precisava estar em casa quando ele me visitou, e contanto que houvesse alguém lá que pudesse confirmar que eu moro lá, foi suficiente. Dois dias depois, Umesh chegou em minha casa para conduzir a verificação. Ele tirou fotos da minha casa por fora, uma marco perto dele, e peguei a assinatura da pessoa que mora na casa comigo (já que não estava em casa durante a visita).

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-ongrid-whatsapp.png Captura de tela: conversa no WhatsApp entre Nayantara e o representante da OnGrid. Data: 23 de abril de 2019. Fonte: Nayantara Ranganathan.

Naturalmente, estávamos curiosos sobre a empresa que era do Facebook provedor de serviços de verificação. OnGrid é uma empresa indiana que afirma permitir que as pessoas na Índia «estabeleçam confiança instantaneamente» ou em outras palavras, envolvendo-se em um comércio de informações de identificação. Eles oferece tudo, desde «verificação de educação» até uma verificação do tribunal registros. Dois anos atrás, eles estavam no noticiário por causa de uma imagem assustadora que causou um arrepio coletivo na espinha: um anúncio de reconhecimento de imagem não consensual usando a biometria nacional arquitetura de identificação, Aadhaar. Como uma entidade separada, OnGrid”s os termos de serviço e a política de dados são diferentes das políticas do Facebook sobre a retenção de informações enviadas para fins de identificação.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-ongrid.png Imagem: imagem agora deletada postada no Twitter por OnGrid. Data: 29 de novembro de 2019. Fonte: https://mashable.com/2017/02/14/india-aadhaar-uidai-privacy-security-debate/. Página arquivada aqui.*

As políticas do Facebook não mencionavam nada sobre a terceirização de alguns elementos do processo de verificação ou como as políticas de dados podem alterar nesse caso. Isso possivelmente significava que os compromissos assumidos pelo Facebook para a exclusão de dados de identificação compartilhados com Facebook não era algo que o OnGrid – enquanto atendia a necessidade de «verificação de última milha» – era obrigado a respeitar. De fato, Facebook afirma excluir permanentemente os dados que coleta de usuários que passar pelo processo de verificação. A OnGrid, empresa contratada pela O Facebook na Índia, por outro lado, retém esses dados para fornecer «serviços de identificação» a outras entidades. OnGrid usa os dados das pessoas para criar seu banco de dados para reutilizá-lo e oferecê-lo como um serviço para outras entidades.

Depois desse processo, finalmente tive meu processo de verificação de endereço concluído e com acesso à API da biblioteca de anúncios.


Manoel

Como cidadã espanhola morando na Holanda, minha o processo de verificação de identidade era muito mais simples e envolvia menos etapas. No entanto, uma vez enviado, a aceitação final demorou cerca de dois dias para passar, em comparação com a resposta instantânea Nayantara recebido nessa etapa, indicando que o meu pode ter envolvido um ser humano no processo.

Esses episódios foram úteis para entender os diferentes tratamentos de dados processos em diferentes países, as vulnerabilidades criadas por envolvendo agentes de verificação de terceiros e o fato escandaloso de que nada disso era necessário para obter informações de interesse público isso foi crucial para entender como a mídia social poderia ser interferir nos processos democráticos.

Incluir imagens e vídeo ou não?

Tínhamos um plano para visualizar dados sobre os anúncios, mas os «visuais» do anúncio próprios não puderam ser mostrados. Ou seja, as imagens ou conteúdo de vídeo, que é o elemento que os usuários do Facebook e Instagram devem ver, não pôde ser visualizado devido às peculiaridades dos dados estrutura e acessibilidade.

Os dados não foram fornecidos de forma a serem descarregados independentemente da dependência da API e, portanto, foi um desafio visualizá-la. Mas mesmo que encontremos uma maneira de incorporar o link e apresentar o visuais, houve outro problema: a URL com os visuais inclui um «token de acesso» ativo. Este é um token único e com limite de tempo que impede o link seja útil após uma hora. Os links não seriam de muito usar sem o token de acesso do próprio visualizador.


Observação:

É assim que um URL de instantâneo de anúncio se parece:

https://www.facebook.com/ads/archive/render_ad/?id=251563729117836&access_token=EAAjPOWfPqZCgBAAJ0csteVNkFJcyxbQZA7m1xbJ8w3fzFRlm6apQ5cAnzsjBNOOJt4zSEE8IxB4k9HcKydhbcd7P4 SnNTBn82G7s>gyy5YXX8fmZC0hUGcpQMfZCp3uWaSWeX4urEcNPwB8SM01clzJSqRXPjjh8ZBguzXZC9sc9whaz0hE9MGEj889ztZBW2XNxVfitweUSkVrcKGiwePQQZB7uGBOa

Um token de acesso é o que vem depois de access_token=, e é o longo sequência de letras e números:

EAAjPOWfPqZCgBAAJ0csteVNkFJcyxbQZA7m1xbJ8w3fzFRlm6apQ5cAnzsjBNOOJt4zSEE8IxB4k9HcKydhbcd7P4SnNTBn82G7sgyy5YXX8fmZC0hUGcpQMfZCp3uWaSWeX4urEcNP wB8S>M01clzJSqRXPjjh8ZBguzXZC9sc9whaz0hE9MGEj889ztZBW2XNxVfitweUSkVrcKGiwePQQZB7uGBOa

Consideramos coletar imagens da Biblioteca de anúncios usando um dos complementos para o navegador como “Baixar todas as imagens”. Havia também muitos scripts em Python para ajudar alguém a fazer isso. No entanto, o Facebook impede todos esses técnicas de raspagem da coleta dos recursos visuais. Além disso, o Facebook também proíbe os usuários de fazer tal raspagem em geral.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-fb-terms.png Captura de tela: Termos de Serviço do Facebook. Data: 8 de dezembro de 2019. Fonte: Manuel Beltrán.

Por um lado, era importante incluir os recursos visuais, pois eles têm um valor de recall para pessoas que navegam nas interfaces. Por outro lado, nós me perguntei se poderia realmente ser uma coisa boa não distrair as pessoas com recursos visuais, pois o aspecto mais importante a ser transmitido era que os recursos visuais podem não ser tão especiais quanto os metadados sobre eles, como o alvejando.

No entanto, também tentamos usar o comando «wget» para fazer isso, mas não funcionou.

Por fim, encontramos uma solução alternativa usando os recursos disponíveis no Tableau para permitir que os usuários do ad.watch possam inserir seus próprios tokens de acesso e visualizar o conteúdo dos anúncios.

Porém, após o lançamento, encontramos algo chamado “Access Token Debugger”, onde era possível estender o tempo de vida ou validade de cada acesso símbolo. Passamos então a usar tokens de acesso estendido em nosso sistema de coleta de dados.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-token-debugger.png Captura de tela: Depurador de token de acesso. Data: 30 de novembro de 2019. Fonte: Manuel Beltrán.

Trabalhando com jornalistas

Ao trabalhar em conjunto com jornalistas para investigar histórias emergentes dos dados, muitos queriam ver os dados brutos. No entanto, compartilhar o os dados vieram com um problema. Os dados continham o parâmetro de "ad_snapshot_url", que continha nossos tokens de acesso pessoal, que descrevemos anteriormente.

Este token de acesso é exclusivo para diferentes contas de desenvolvedor e obtém registrados nos dados retornados pelas consultas. Desde que estávamos sendo cuidadosos para não fazer nada que pudesse revogar nosso acesso à API, tínhamos para removê-lo antes de compartilhar os dados. Mas remover o token de acesso de os dados de cada anúncio tiveram que ser automatizados, pois tínhamos milhões de anúncios. O solução foi bastante fácil de encontrar pesquisando em StackOverflow, e pudemos usar uma ferramenta chamada SED (Stream Editor) que já vem incluso no terminal do Linux.

sed -i -e 's/EAAjPOWfPqZCgBAAJ0csteVNkFJcyxbQZA7m1xbJ8w3fzFRlm6apQ5cAnzsj BNOOJt4zSEE8IxB4k9HcKydhbcd7P4SnNTBn82G7sgyy5YXX8fmZC0hUGcpQMfZCp3uWaSWeX 4urEcNPwB8SM01clzJSqRXPjjh8ZBguzXZC9sc9whaz0hE9MGEj889ztZBW2XNxVfitweUSkV rcKGiwePQQZB7uGBOa//g' US_20_1.json

Usando esses parâmetros, o SED pesquisa em um arquivo de texto o conteúdo de o token de acesso e o exclui. Esta ferramenta nos permitiu limpar facilmente os arquivos brutos de dados de forma automatizada e eficiente.

Como os dados que coletamos eram sobre os próprios anúncios e não envolviam os feeds de notícias pessoais dos usuários, não tivemos que lidar com o problema de proteção de dados pessoais.

Depois de publicar ad.watch

Manutenção, atualização e adaptação dos bancos de dados

Uma vez que o projeto foi tornado público, tornou-se também imperativo que o os dados sejam atualizados regularmente e o banco de dados seja mantido. Isso envolveu perguntas sobre a frequência das atualizações, se deve coletar dados de o início de cada vez, e se não, como coletar dados exatamente de onde havíamos parado.

Adicionamos mais países à medida que seus dados foram adicionados à API do Facebook. Argentina e Sri Lanka foram adicionados pouco antes das eleições lá, e os dados de Cingapura também foram divulgados. Não houve verificação procedimentos para a Noruega e a Suíça, mas conseguimos coletar os dados sobre esses países já.


Manoel

Com o passar do tempo após o lançamento, também trabalhei para ajuste os scripts que usamos para coletar os dados, para que o a coleta foi mais eficiente, com intervenção humana mínima para determinadas tarefas.

Resposta do Facebook:

Logo após o lançamento, o (ex) vice-presidente de anúncios do Facebook deu algumas palavras de incentivo ao projeto. Isso foi estranho, pois o projeto não pretendia ser uma «ferramenta de visualização», mas desafiou a falta de acesso sistemático a dados pelo Facebook.

O projeto é uma ação para destacar o conflito fundamental entre A infraestrutura de publicidade do Facebook e as condições necessárias para participação democrática significativa nas redes sociais. Com o maior individualização possibilitada pela publicidade direcionada no Facebook, e sua falha em abrir esses dados em todos os países em que operam Isso significava que essas condições estavam sendo derrotadas repetidas vezes. https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-fb-response.png

Por esse motivo, não queríamos que o Facebook cooptasse nosso projeto e tornasse faz parte de sua história de sucesso em transparência.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-fb-response-m.png

Censura no Twitter

Começamos a notar algo peculiar dois dias depois de lançar o local na rede Internet. Alguns tweets feitos por outros sobre o projeto não eram mais visível para nós. Era improvável que várias pessoas tivessem tuitado sobre o projeto e deletou seus tweets.

Logo percebemos que nossos próprios tweets sobre o projeto também eram ausente. Inicialmente, não percebemos isso, pois ambos podíamos ver nossos próprios tweets. No entanto, acabamos percebendo que não podíamos mais ver um ao outro. tweets de outros.

Entendido como «shadowbanning», esse foi um fenômeno que ouvimos de antes.

Isso é ainda mais difícil de detectar, pois os tweets continuam visíveis ao autor dos tweets, sem levantar suspeitas. Este fenômeno foi uma ocorrência regular que as pessoas observaram quando se tratava de tweets e contas de usuário relacionadas à Caxemira, por exemplo.

Decidimos abordar a questão imediatamente por meio de um relatório com o Twitter equipe de suporte. Um dia depois, ainda não tínhamos ouvido falar deles. Que foi quando decidimos que talvez valesse a pena solicitar apoio e ajuda para entender o que estava acontecendo. Publicamos a seguinte chamada de suporte.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-call-support.png Captura de tela: Tweet pedindo apoio sobre a censura. Data: 2 de agosto de 2019. Fonte: Nayantara Ranganathan.

A essa altura, descobrimos que não apenas os tweets desapareceram, mas também também impossível postar um tweet com a URL do projeto. Nós achamos isso outros também estavam enfrentando esse problema.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-twitter.png Capturas de tela: Pessoas no Twitter nos alertando sobre a censura. Data: 4 de agosto de 2019. Fonte: Nayantara Ranganathan.

Foi bastante estranho que o URL do projeto também tenha sido bloqueado em Mensagens Diretas do Twitter.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-dm-block.png Captura de tela: censura na janela de mensagem direta do Twitter. Data: 3 de agosto de 2019. Fonte: Nayantara Ranganathan.

Recebemos apoio de muitos amigos, colegas e desconhecidos no forma de documentação de mensagens de erro, conectando-nos com e sugerindo pessoas que trabalham no Twitter para contato.

Enquanto isso, descobrimos que alguém que tentou postar um link para o projeto no LinkedIn também recebeu uma mensagem de alerta. nós adivinhamos que o URL pode ter sido sinalizado em algum tipo de centralizado lista negra além das plataformas. Este foi realmente o caso, como descobrimos que uma das empresas de segurança que classifica URLs e cria listas negras - https://fortiguard.com/webfilter - de fato, listou o ad.watch como spam com base no relatório de alguém. Nós apresentou um recurso com eles, e recebeu uma resposta dizendo que eles tinham reclassificou (curiosamente) como publicidade.

https://cdn.ttc.io/i/fit/800/0/sm/0/plain/kit.exposingtheinvisible.org/adwatch/ad-watch-spam-lookup.png Captura de tela: resultados de uma pesquisa que classificou o ad.watch como spam. Data: 5 de agosto de 2019. Fonte: Nayantara Ranganathan.

Eventualmente, o Twitter removeu o shadowbanning, mas não nos forneceu qualquer explicação. Nossa investigação continuou; alguém nos colocou em contato com um pessoa trabalhando no Twitter que parecia ansiosa para ajudar, mas isso foi em lugar nenhum. Também exploramos a possibilidade de usar diferentes canais para tente obter uma explicação sobre o motivo do bloqueio, incluindo através do uso do Direito à Explicação no European GDPR (General Data Protection Regulation). O direito de A explicação teoricamente pode forçar o Twitter a relatar o motivo a censura ocorreu, se fosse algorítmica.

Principais conclusões

Das falhas técnicas nas ferramentas às promessas sérias nas políticas, aprendemos muito sobre o submundo da economia da informação, ou seja, a venda de dados pessoais para marketing e seu impacto descomunal nas realidades sócio-políticas das pessoas. Além do Facebook, o projeto nos apresentou o ethos e o modus operandi de empresas que se dedicam à extração e monetização de dados sobre a vida das pessoas.

Este projeto era sobre acreditar que uma pequena equipe de dois poderia de alguma forma desafiar uma entidade como o Facebook, com sua escala de recursos e poder de narrativa. Isso significava que estávamos constantemente sob o risco de que nossos O acesso à API pode ser retirado ou nossos métodos classificados como contra termos de uso do Facebook, ou mesmo considerando que o Facebook teve acesso a tanta informação sensível sobre nós que poderia ser usada para prejudicar caminhos. Essas coisas drásticas não aconteceram, mas na época da trabalhando no projeto antes de lançá-lo, carregamos conosco todos essas possibilidades.

No geral, muitos fatores se juntaram para a realização do projeto:

  • compreender as lacunas que existiam neste meio

  • confiando que havia uma maneira de contornar as limitações quando as coisas não eram simples

  • estender a mão e ser beneficiário de conselhos generosos de amigos

  • levar a sério a comunicação dos dados

Esses foram alguns aspectos que ajudaram, em retrospectiva.

A partir de janeiro de 2020, o projeto toma novos rumos: estão trabalhando na divulgação de informações sobre propaganda política nas redes sociais mídia mais facilmente digerível para diferentes grupos de pessoas em diferentes partes do mundo. Também estamos voltando ao nosso objetivo inicial de desenvolvendo um método para tornar os dados disponíveis para download para qualquer pessoa que deseje passar por isso eles mesmos.

A manutenção e atualização dos bancos de dados também nos mantém ocupados. Como cenários políticos globais estão mudando e novos partidos e coalizões surgem, recebemos contribuições de visitantes que enviam e-mail novas páginas a serem adicionadas ao ad.watch.

Continuamos a documentar e atualizar o ad.watch com novas iterações do projeto. Visite-nos em ad.watch ou escreva-nos para info@ad.watch.

*Todos os tokens de acesso no artigo foram modificados.


Publicado em abril de 2020
Traduzido para português em julho de 2023

Recursos

Artigos e guias

Ferramentas e Bancos de Dados

  • Bash. Uma linguagem para se comunicar com os sistemas operacionais das distribuições Linux.

  • API da biblioteca de anúncios do Facebook. A API do Facebook que permite que determinados usuários pesquisem anúncios marcados como relacionados à política e questões de importância política.

  • Facebook Tracking Exposed. Um projeto que oferece um plug-in de navegador, que coleta os metadados de todas as postagens públicas em sua linha do tempo e permite que você contribua com esses dados para um conjunto de dados público ou mantenha-os privados.

  • Json splitter. Uma ferramenta de linha de comando para dividir grandes arquivos JSON em arquivos menores.

  • Json lint. Uma ferramenta que ajuda a validar (verificar) arquivos json e reformatá-los.

  • Political Ad Collector da ProPublica. Uma ferramenta que permite instalar um plug-in de navegador que coleta todos os anúncios políticos que você vê durante a navegação e os envia para um banco de dados que permite ao ProPublica analisar melhor a natureza da segmentação de anúncios políticos.

  • Remmina. Aplicativo que ajuda a conectar-se a computadores remotos usando protocolos como o Remote Desktop Protocol.

  • Sed. Um editor que permite realizar transformações básicas de texto no terminal.

  • Stackoverflow. Um fórum da web onde os desenvolvedores fazem e respondem perguntas.

  • Tableau. Um conjunto de aplicativos de software para visualização e análise de dados.

  • VirtualBox. Aplicativo que permite executar um sistema operacional diferente daquele instalado em seu computador.

  • Wget. Software para recuperar conteúdo de servidores da web.

  • Who Targets Me. Um projeto que usa uma extensão de navegador de plug-in de navegador para anúncios políticos de crowdsourcing, você pode instalá-lo para coletar todas as postagens patrocinadas em sua linha do tempo e ver quem está direcionando seu voto.

Glossário

term-api

API – significa interface de programação de aplicativos (Application Programmin Interface em inglês), uma ferramenta de software que facilita a comunicação entre um usuário e um conjunto de dados, entre outras coisas. uma forma pela qual um plataforma pode tornar seus dados acessíveis a desenvolvedores externos gratuitamente ou sob algumas condições ou taxas. Por exemplo, a API da biblioteca de anúncios do Facebook permite que os usuários consultem dados de anúncios usando um conjunto particular de comandos desenvolvidos pelo Facebook.

term-extension

Extensão do navegador – também chamados de add-ons, são pequenos pedaços de software usado para estender as funcionalidades de um navegador da web. Estes podem ser qualquer coisa, desde extensões que permitem fazer imagens de páginas da web que você visita àquelas que verificam e corrigem sua ortografia ou bloqueiam anúncios nos sites.

term-plugin

Plugin do navegador - um software que pode ser adicionado aos navegadores para melhorar funcionalidades específicas.

term-fbpageid

Facebook Page ID - um número que identifica exclusivamente cada página do Facebook.

term-interface

Interface - (neste caso) um conjunto de visualizações interativas e permitir que os usuários tenham uma representação gráfica dos dados.

term-iso

Código de país ISO - os códigos alfabéticos curtos criados e mantidos para cada país pela Organização Internacional de Normalização: https://www.iso.org/obp/ui/#search.

term-json

JSON - JavaScript Object Notation, um formato popular para troca de dados. De acordo com o site JSON, é fácil para os humanos lerem e escrever e fáceis para as máquinas analisarem e gerarem.

term-query

Consulta - uma lista de perguntas codificadas que um usuário pode inserir em programas e aplicativos para obter dados sobre uma questão ou assunto de interesse.

term-python

Python - uma linguagem de programação que permite aos desenvolvedores escrever vários programas, como aplicativos da Web, sites, ferramentas de análise de dados: https://www.python.org/.

term-pythoneditor

Editor Python - aplicativo para navegar, depurar, compilar e executar scripts na linguagem Python.

term-rdp

Remote Desktop Protocol (RDP) - um protocolo que permite acessar e controlar um sistema que não está no mesmo local físico que você.

term-shadowbanning

Shadowbanning - quando alguns tweets (ou contas) são despriorizados ou feitos desaparecer das linhas do tempo e das contas sem um explícito aviso de censura.

term-targetads

Publicidade ou Anúncios direcionados – uma forma de publicidade que visa atingir ou serem mostrados apenas acertos grupos selecionados ou indivíduos com características particulares ou de áreas geográficas específicas, com base nos dados disponíveis sobre eles. Por exemplo, colocar anúncios de venda de bicicletas em contas do Facebook de jovens em Amsterdã.

term-terminal

Terminal - também chamado de interface de linha de comando (CLI), é um meio de interagir com um computador usando uma interface baseada em texto onde é possível inserir comandos em um programa de computador.

term-trendtopics

Trending topics - tópicos que são populares em determinados momentos.

term-unicode

Unicode - o padrão para codificar scripts em legíveis por máquina personagens.

term-uniqueid

Identificadores únicos - (neste caso) códigos únicos que são criados e marcados com cada anúncio, para que possam ser rastreados, se necessário.

term-vps

Servidor Privado Virtual (VPS) - Do inglês Virtual Private Server, é uma máquina virtual, alugada como um serviço, por uma empresa de hospedagem na Internet.

###term-virtualsoft

Software de virtualização - software que permite executar um Sistema Operacional diferente daquele instalado em seu computador sem a necessidade para adicionar outro sistema operacional em seu dispositivo.

term-wget

Wget - uma ferramenta do projeto GNU para obter arquivos de servidores web. A ferramenta permite o transporte de arquivos através de mais de um protocolo.