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

Cesta básica do governo? Informação que circula no WhatsApp é golpe

Mensagem que circula no WhatsApp sobre cestas básicas é golpe - Allan White/Fotos Públicas
Mensagem que circula no WhatsApp sobre cestas básicas é golpe Imagem: Allan White/Fotos Públicas

Felipe Oliveira

Colaboração para Tilt

30/04/2020 15h36

A pandemia de Covid-19 gera tentativas ilícitas de golpes para aproveitadores por aí. Uma delas vem chamando a atenção de pessoas que estão ando dificuldades devido à falta de trabalho na pandemia. Trata-se uma suposta campanha que o governo estaria realizando para distribuição de cestas básicas.

De acordo com a mensagem, que vem circulando em diversos grupos de WhatsApp, o programa "Brasil sem Miséria" e o governo estariam doando cestas básicas para as pessoas que assem um link e fizessem a solicitação.

A mensagem causou dúvidas em alguns usuários do Twitter.

Após clicar no link, a pessoa é direcionada para uma página com algumas informações e vê uma mensagem de introdução que diz que "devido a pandemia do novo Coronavírus,(COVID-19), o Governo Federal, através do plano Brasil Sem Miséria, em parceria com entidades filantrópicas, está doando mais de 500 mil cestas básicas para a população que teve sua fonte de renda afetada pelas medidas de isolamento social".

Tilt entrou em contato com o Ministério da Cidadania que afirmou que "a informação distribuída por meio do WhatsApp não procede. As divulgações oficiais do Ministério da Cidadania são feitas por meio do portal www.cidadania.gov.br".

Além disso, a Companhia Nacional de Abastecimento reafirmou que a mensagem distribuída pelas redes sociais é falsa. O órgão confirmou que existem programas de distribuição de cestas básicas devido à pandemia, mas ressaltou que nenhum deles pede o compartilhamento de links por meio de qualquer rede social.

Phishing

De acordo com levantamento feito no site Virus Total, a Kaspersky classificou o site cesta.sistemacadastral.com, que estava sendo divulgado nos grupos de WhatsApp, como phishing. Phishing é uma técnica na qual criminosos se utilizam de uma isca, que pode chegar por email, SMS, redes sociais ou aplicativos de mensagens, para que o usuário clique e permita o o a dados do computador ou smartphone.

Para reconhecer mensagens de phishing é necessário ficar atento a alguns sinais maliciosos. A prática normalmente usa o nome de uma instituição verdadeira, uma ameaça ou uma promessa e um link ou anexo.

Por isso, é sempre bom desconfiar das mensagens que circulam em grupos de WhatsApp e fazem promessas de prêmio ou doações. Seguem algumas dicas para escapar de phishing:

  • Confira se o endereço de e-mail de quem mandou é mesmo daquele órgão, muitas vezes são letras ou palavras não relacionadas.
  • Não clique rapidamente no link, vá até a página oficial para ver se o aviso está lá também.
  • Se a dúvida persistir, ligue para a instituição antes de clicar em qualquer link ou abrir anexos.