;(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

STF decide que autoridades podem pedir dados diretamente a big techs

23.fev.2023 - Ministros do STF discutem ação sobre requisição direta por autoridades a dados de plataformas - Nelson Jr./SCO/STF
23.fev.2023 - Ministros do STF discutem ação sobre requisição direta por autoridades a dados de plataformas Imagem: Nelson Jr./SCO/STF

Do UOL, em Brasília

23/02/2023 19h57Atualizada em 23/02/2023 20h02

O plenário do STF (Supremo Tribunal Federal) decidiu hoje (23) que autoridades brasileiras podem requisitar diretamente dados a plataformas digitais com sede no exterior para abastecer investigações criminais.

A medida deve contribuir para as apurações dos atos golpistas de 8 de janeiro e já estava sendo utilizada pelo TSE (Tribunal Superior Eleitoral) nas eleições do ano ado.

Os ministros retomaram e concluíram o julgamento da ação movida pela Assespro (Federação das Associações das Empresas de Tecnologia da Informação), que questionava se as requisições de dados deveriam seguir, necessariamente, os procedimentos previstos no Acordo de Assistência Judiciária em Matéria Penal, o MLAT, na sigla em inglês.

O acordo tratava da obtenção de conteúdo de comunicação privada que estivesse em provedores de internet sediados fora do Brasil. Neste cenário, as solicitações do Judiciário deveriam ar pelo Ministério da Justiça - um trâmite considerado mais longo e demorado para obter informações.

O ministro Gilmar Mendes, relator da ação, já havia votado para permitir a solicitação direta para além do acordo de cooperação previsto no MLAT e foi acompanhado, no mérito, por Nunes Marques e André Mendonça.

Alexandre de Moraes, relator das investigações sobre o ataque golpista de 8 de janeiro, retomou a discussão, acompanhando o relator.

Moraes afirmou que, hoje, a requisição direta contribui para a obtenção de provas pela Justiça em um momento em que usuários podem deletar ou excluir publicações rapidamente.

O ministro ainda relembrou o episódio envolvendo o Telegram. Após ignorar sucessivamente pedidos da Justiça brasileira, a plataforma só ou a dialogar depois de uma decisão de Moraes suspender o funcionamento do aplicativo no país.

"Se fossemos seguir somente o procedimento de cartas rogatórias eu diria que estaríamos esperando até hoje [uma resposta]. O Telegram começou na Rússia, migrou para a Europa, hoje a sede é em Dubai. E até então não tinha representação no território nacional", disse Moraes. "Nem sempre o procedimento de cartas rogatórias e o MLAT é eficiente".

Moraes apontou ainda a cooperação direta entre as plataformas de redes sociais e o TSE durante as eleições para a retirada de conteúdos falsos. Durante o pleito, os prazos para a remoção desse tipo de publicação chegou a apenas uma hora — e foram seguidos pela plataformas.

É possível essa cooperação direta que auxilie a Justiça brasileira a poder produzir provas e responsabilizar aqueles que devem ser responsabilizados"
Alexandre de Moraes, ministro do STF

O ministro também criticou a difusão de desinformação nas plataformas, especialmente durante os atos golpistas de 8 de janeiro. Para Moraes, se trataram de "mentiras sórdidas" mas que contaminaram parcela da população.

"Nós tivemos, lamentavelmente, uma parlamentar que afirmou e postou que havia morrido uma pessoa na Polícia Federal, após a prisão ocorrida no dia 9 de janeiro. Há todo um mecanismo de produção de ódio e ilícitos", disse. "Isso chegou ao top 5 das notícias no Twitter, e 24h depois retirou e falou: 'me enganei'. Só que isso já contaminou. E hoje, se nós formos nas redes, várias pessoas ainda acreditam que uma senhora morreu na Polícia Federal".

Além de Moraes, acompanharam Gilmar Mendes os ministros Edson Fachin, Luiz Fux, Cármen Lúcia, Dias Toffoli, Ricardo Lewandowski e a presidente do STF, Rosa Weber. O ministro Luís Roberto Barroso se declarou impedido e não participou do julgamento.

O julgamento era acompanhado de perto pelas plataformas de redes sociais. O Facebook Brasil, por exemplo, disse nos autos que ou a receber diversas "ordens de autoridades brasileiras" para o fornecimento de dados de forma direta, sem seguir o trâmite do MLAT.

A filial alegava que só prestava serviços de publicidade no país, e que o fornecimento dos dados deveria ser solicitado por acordo de cooperação com a sede, nos Estados Unidos.

A manifestação foi feita após decisão de Moraes ao multar a filial por não cumprir o bloqueio global dos perfis de 12 apoiadores do ex-presidente Jair Bolsonaro (PL).

Para José Luiz Nunes, pesquisador do Centro de Tecnologia e Sociedade (CTS) da FGV Direito Rio, a decisão do STF é benéfica ao dar mais celeridade na obtenção de provas e dados ao permitir a requisição direta por autoridades. Segundo Nunes, a requisição direta já estava sendo utilizada

"Isso é benéfico se a gente comparar com a outra opção, que é o Judiciário depender de cooperação internacional, um procedimento muito burocrático e demorado", afirmou. "[A requisição direta] é mais célere e efetiva, pois garante que vai ser possível produzir provas em um número maior de casos".