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

'Máquinas de spam': WhatsApp levará à Justiça quem fizer envios automáticos

WhatsApp quer levar disparadores de mensagens automáticas à Justiça - iStock
WhatsApp quer levar disparadores de mensagens automáticas à Justiça Imagem: iStock

Helton Simões Gomes

Do UOL, em São Paulo

09/06/2019 04h00Atualizada em 15/05/2020 02h38

Resumo da notícia

  • WhatsApp promete ações legais contra uso abusivo do app
  • Leia-se: disparos automáticos e em massa de mensagens, que disseminam fake news
  • É a 1ª vez que a empresa combate seu maior problema com ação fora do app
  • Até agora, isso era feito por meio de restrições de ações

Lembra das empresas especializadas em disparar mensagens em massa e automaticamente pelo WhatsApp, que deitaram e rolaram durante as eleições brasileiras de 2018? Pois bem, o aplicativo de mensagem, que pertence ao Facebook, prometeu levar à Justiça as firmas por trás dessas "máquinas de spam", caso elas não interrompam sua atuação.

O serviço de bate-papo mais popular do Brasil deu até prazo para começar a investida com medidas legais: 7 de dezembro de 2019. O aviso do WhatsApp foi feito sem muito alarde nesta semana, por meio de um comunicado publicado na sessão de perguntas e respostas de seu site.

Apesar de não fazer muito barulho em torno da decisão, a empresa está, pela primeira vez, recorrendo a uma ação que não seja a simples modificação de uma função do app para solucionar um de seus principais problemas: o bate-papo ter virado um propagador de notícias falsas, disseminadas via mensagens automáticas ou enviadas em massa.

O WhatsApp tomará medidas legais contra aqueles que determinarmos estarem engajados ou auxiliando outros envolvidos em abusos que violem nossos termos de serviço, como mensagens automatizadas, em massa ou uso não pessoal
WhatsApp

Até agora, o WhatsApp tentou limitar a ação de "máquinas de spam" apenas alterando a forma como alguns de seus recursos funcionam. Nessa linha, o app já:

Além dessas medidas, já em uso, o WhatsApp desenvolve outras iniciativas que ainda não foram liberadas. O app trabalha, por exemplo, em uma forma de indicar como "frequentemente encaminhadas" as mensagens que foram readas pelo menos cinco vezes e, a partir daí, permitir que es proíbam que esse tipo de conteúdo circule em seus grupos.

Ainda assim, todas essas iniciativas, por tratarem apenas de funções do próprio app, não atingem diretamente as empresas que se valem do serviço para disseminar suas mensagens, já que essas companhias podem apenas desenvolver uma nova maneira de driblar as restrições do WhatsApp para continuar atuando. Com a nova decisão, o aplicativo do Facebook, no entanto, quer tirar essa briga do âmbito do WhatsApp e levá-la para os tribunais. E isso, obviamente, não deve se restringir apenas ao Brasil, mas se estender a todos os lugares do mundo onde a prática ocorra.

Estamos cientes de que algumas empresas tentam iludir nossos sistemas de aprendizado de máquina, mesmo quando trabalhamos incansavelmente para melhorá-los (...) É por isso que, além da aplicação tecnológica, também tomamos medidas judiciais contra indivíduos ou empresas que estejam ligados a evidências de tais abusos na plataforma.
WhatsApp

Para o aplicativo, o uso de ferramentas de disparo automático de mensagens vai contra seus termos de uso. O WhatsApp proíbe expressamente a criação de contas de forma automática ou de maneiras para usar o app em diversos dispositivos ao mesmo tempo. A empresa diz que pode suspender ou encerrar a conta de alguém flagrado descumprindo suas regras.

O WhatsApp, no entanto, não deixa claro sob qual argumentou levaria à Justiça a empresa ou os responsáveis por trás de uma "máquina de spam".

Como prova de que quer mesmo levar o combate às mensagens automatizadas para fora da telinha do celular, a rede social informa que quando abrir ações legais contra uma empresa poderá considerar não só informações que tenham circulado pelo app mas também aquelas coletadas fora da plataforma. Em alguns casos, poderá levar em conta apenas "evidências" levantadas fora do app.

O WhatsApp ameaça responsabilizar judicialmente inclusive empresas que tiverem feitos disparos de mensagem automáticos ou em massa antes de 7 de dezembro deste ano. Isso pode incluir as empresas envolvidas nas campanhas políticas das eleições brasileiras de 2018. A empresa informa que age no Brasil para esclarecer os limites sobre como o app pode ser usado e isso inclui o envio de notificações judiciais às empresas de marketing no Brasil que abusaram da plataforma durante as eleições:

O WhatsApp foi feito para envio de mensagens privadas, então agimos no Brasil para prevenir mensagens em massa e reforçar os limites de como o WhatsApp pode ser usado. Também ampliamos nossa habilidade de identificar contas que fazem mau uso do WhatsApp, o que nos ajuda a banir mais de 2 milhões de contas globalmente por mês

Como funcionam as "máquinas de spam"

Antes de iniciar os disparos de mensagens, os interessados tinham de fazer um cadastro em uma plataforma online e comprar créditos. Um dos sites vendiam cada crédito por R$ 0,12, pagos com boleto ou transferência bancária.

Nesse serviço, gastava-se um crédito para enviar uma mensagem de texto, de até 1.000 caracteres, e dois créditos quando são incluídos fotos, vídeos, áudios e outros arquivos.

Só que o preço também variava conforme o pacote escolhido. No mais básico, de 5.000 créditos, por exemplo, enviar documentos de mídia custava o dobro do custo para mandar texto. Em um dos mais , que oferecia 200 mil créditos, não havia diferenciação.

Por lidarem com grandes quantidades de interações no WhatsApp, essas agências possuíam técnicas para escapar do filtro anti-spam do app, como evitar usar um mesmo número muitas vezes.

O conteúdo das mensagens, ou seja, texto e arquivos a serem enviados, era configurado pelos próprios clientes. Tudo isso era feito em uma plataforma online. Era nela também que deveriam ser informadas quais contas no WhatsApp deveriam receber aquela mensagem.

Isso quer dizer que uma lista de contatos deveria ser submetida à plataforma. Algumas dessas empresas, porém, ofereciam suas próprias bases de dados. Usá-las é controverso, porque a lei eleitoral permite apenas que eleitores que toparam receber propaganda sejam alvo desse tipo de conteúdo.