;(function() { window.createMeasureObserver = (measureName) => { var markPrefix = `_uol-measure-${measureName}-${new Date().getTime()}`; performance.mark(`${markPrefix}-start`); return { end: function() { performance.mark(`${markPrefix}-end`); performance.measure(`uol-measure-${measureName}`, `${markPrefix}-start`, `${markPrefix}-end`); performance.clearMarks(`${markPrefix}-start`); performance.clearMarks(`${markPrefix}-end`); } } }; /** * Gerenciador de eventos */ window.gevent = { stack: [], RUN_ONCE: true, on: function(name, callback, once) { this.stack.push([name, callback, !!once]); }, emit: function(name, args) { for (var i = this.stack.length, item; i--;) { item = this.stack[i]; if (item[0] === name) { item[1](args); if (item[2]) { this.stack.splice(i, 1); } } } } }; var runningSearch = false; var hadAnEvent = true; var elementsToWatch = window.elementsToWatch = new Map(); var innerHeight = window.innerHeight; // timestamp da última rodada do requestAnimationFrame // É usado para limitar a procura por elementos visíveis. var lastAnimationTS = 0; // verifica se elemento está no viewport do usuário var isElementInViewport = function(el) { var rect = el.getBoundingClientRect(); var clientHeight = window.innerHeight || document.documentElement.clientHeight; // renderizando antes, evitando troca de conteúdo visível no chartbeat-related-content if(el.className.includes('related-content-front')) return true; // garante que usa ao mínimo 280px de margem para fazer o lazyload var margin = clientHeight + Math.max(280, clientHeight * 0.2); // se a base do componente está acima da altura da tela do usuário, está oculto if(rect.bottom < 0 && rect.bottom > margin * -1) { return false; } // se o topo do elemento está abaixo da altura da tela do usuário, está oculto if(rect.top > margin) { return false; } // se a posição do topo é negativa, verifica se a altura dele ainda // compensa o que já foi scrollado if(rect.top < 0 && rect.height + rect.top < 0) { return false; } return true; }; var asynxNextFreeTime = () => { return new Promise((resolve) => { if(window.requestIdleCallback) { window.requestIdleCallback(resolve, { timeout: 5000, }); } else { window.requestAnimationFrame(resolve); } }); }; var asyncValidateIfElIsInViewPort = function(promise, el) { return promise.then(() => { if(el) { if(isElementInViewport(el) == true) { const cb = elementsToWatch.get(el); // remove da lista para não ser disparado novamente elementsToWatch.delete(el); cb(); } } }).then(asynxNextFreeTime); }; // inicia o fluxo de procura de elementos procurados var look = function() { if(window.requestIdleCallback) { window.requestIdleCallback(findByVisibleElements, { timeout: 5000, }); } else { window.requestAnimationFrame(findByVisibleElements); } }; var findByVisibleElements = function(ts) { var elapsedSinceLast = ts - lastAnimationTS; // se não teve nenhum evento que possa alterar a página if(hadAnEvent == false) { return look(); } if(elementsToWatch.size == 0) { return look(); } if(runningSearch == true) { return look(); } // procura por elementos visíveis apenas 5x/seg if(elapsedSinceLast < 1000/5) { return look(); } // atualiza o último ts lastAnimationTS = ts; // reseta status de scroll para não entrar novamente aqui hadAnEvent = false; // indica que está rodando a procura por elementos no viewport runningSearch = true; const done = Array.from(elementsToWatch.keys()).reduce(asyncValidateIfElIsInViewPort, Promise.resolve()); // obtém todos os elementos que podem ter view contabilizados //elementsToWatch.forEach(function(cb, el) { // if(isElementInViewport(el) == true) { // // remove da lista para não ser disparado novamente // elementsToWatch.delete(el); // cb(el); // } //}); done.then(function() { runningSearch = false; }); // reinicia o fluxo de procura look(); }; /** * Quando o elemento `el` entrar no viewport (-20%), cb será disparado. */ window.lazyload = function(el, cb) { if(el.nodeType != Node.ELEMENT_NODE) { throw new Error("element parameter should be a Element Node"); } if(typeof cb !== 'function') { throw new Error("callback parameter should be a Function"); } elementsToWatch.set(el, cb); } var setEvent = function() { hadAnEvent = true; }; window.addEventListener('scroll', setEvent, { capture: true, ive: true }); window.addEventListener('click', setEvent, { ive: true }); window.addEventListener('resize', setEvent, { ive: true }); window.addEventListener('load', setEvent, { once: true, ive: true }); window.addEventListener('DOMContentLoaded', setEvent, { once: true, ive: true }); window.gevent.on('allJSLoadedAndCreated', setEvent, window.gevent.RUN_ONCE); // inicia a validação look(); })();
  • AssineUOL
Topo

EUA revelam 300 anúncios do Facebook comprados por russos para manipular voto

10/05/2018 14h46

Washington, 10 mai (EFE).- Legisladores democratas do Comitê de Inteligência da Câmara de Representantes dos Estados Unidos revelaram nesta quinta-feira mais de 3 mil anúncios do Facebook comprados por um grupo russo "para criar caos político e ferir a democracia americana", segundo os congressistas.

Estes anúncios, publicados no Facebook entre 2015 e 2017, foram pagos pela empresa Internet Research Agency, com sede em São Petersburgo (Rússia), acusada pelo procurador especial Robert Mueller de lançar "uma guerra informativa" contra as últimas eleições americanas de novembro de 2016.

Páginas do Facebook criadas por russos que abrangem todo o espectro político, desde "Blacktivist", em defesa dos direitos da comunidade afro-americana, até "Heart of o Texas", destinada a reunir gente com mentalidade conservadora, compraram milhares de anúncios nessa rede social.

Outra página, chamada "Exército de Jesus", que tinha como imagem de perfil Jesus lutando contra Satã, encorajou os eleitores a escolher um presidente com "moral piedosa", segundo recolheram os veículos de imprensa americanos.

Assim, muitos destes anúncios, comprados por russos que se aram por americanos, não respaldaram um candidato específico, mas propagaram mensagens incendiárias sobre temas sensíveis, como a imigração e o racismo.

Os legisladores mostraram que os anúncios revelados hoje tiveram uma efetividade e alcance distinto em cada caso, desde centenas de visualizações até mais de um milhão.

Até setembro, quando identificou 470 contas que compraram 3 mil anúncios por mais de US$ 100 mil em um período de dois anos, o Facebook negou reiteradamente que os russos exploraram sua plataforma.

Desde então, a companhia com sede na Califórnia (EUA) diz que adotou uma postura "muito mais agressiva" a respeito dos anúncios sobre política, obrigando os compradores a revelar identidade e localização.

Dos 13 indivíduos contra os quais apresentou acusações o procurador especial Mueller em fevereiro, 12 trabalharam em algum momento para Internet Research Agency.

Segundo o procurador especial, os acusados se aram por ativistas americanos e usaram identidades fictícias em redes sociais para entrar em contato com cidadãos dos EUA e pedir apoio em diferentes causas políticas, como por exemplo, ajudar o presidente americano, Donald Trump, a "reforçar as fronteiras".