Escolar Documentos
Profissional Documentos
Cultura Documentos
INSTITUTO DE MULTISDICIPLINAR
Apresentado por:
Aprovado por:
Emitido em 04/05/2021
Para verificar a autenticidade deste documento entre em https://sipac.ufrrj.br/documentos/ informando seu número:
5622, ano: 2021, tipo: DOCUMENTOS COMPROBATÓRIOS, data de emissão: 04/05/2021 e o código de
verificação: 649a400943
Agradecimentos
ii
Estendo ainda meus agradecimento a Beatriz, minha queria esposa, que conheci
nos corredores da universidade e desde então tem sido minha companheira na
jornada da vida, tornando-a mais alegre, mais amável e mais divertida. Beatriz
foi fundamental ao fazer a cobrança na medida certa para que eu me dedicasse ao
trabalho que estou entregando. Obrigado Bia por dividir essa vida comigo e me amar
da forma que me ama, a você só posso garantir a reciprocidade de cada sentimento.
iii
Wilson de Oliveira Mendonça
Primeiramente gostaria de agradecer aos meus pais Heraldo e Zilma por sempre
terem me dado apoio em tudo que fiz desde que nasci, por terem feito sacrifícios
para me dar condições necessárias para estudar. São sem duvidas os principais
responsáveis pela minha formação pessoal e acadêmica e são meus maiores exemplos.
Gostaria de agradecer também ao meu colega Lucas Ferreira por toda a ajuda
que me deu e pela dedicação a este trabalho.
iv
RESUMO
WppScrapper: Uma ferramenta para a extração de mensagens do WhatsApp
Lucas Ribeiro Ferreira e Wilson de Oliveira Mendonça
Maio/2021
v
ABSTRACT
WppScrapper: Uma ferramenta para a extração de mensagens do WhatsApp
Lucas Ribeiro Ferreira and Wilson de Oliveira Mendonça
Maio/2021
WhatsApp is the most used instant messaging application in Brazil. Its main use
is private among users, but recent studies have shown the increasing importance of
the platform as a source of information, including misinformation, and as a tool for
organizing and agitating great social relevance events, such as strikes and protests.
In this context, it has been demonstrated the importance of studying the messages
exchanged within the platform and, through these studies, helping to understand
the different determinations of social reality. Many works have performed the task
of extracting messages from the platform using WebScrapping techniques or even
decrypting the messages contained in a Smartphone database. In this way, the present
work seeks to collaborate with this task by presenting a tool that can connect to the
WhatsApp server and download all messages exchanged by an account, it has a simple
and objective programming interface that allows its use for the implementation of
different forms of user interfaces, being agnostic to any form. An application with a
graphical user interface for home computers is also presented here, implemented using
the API mentioned above, which is easy to use to help researchers and journalists to
carry out their work more easily. The goal that is expected to be achieved with these
tools is that more studies are done and, therefore, that they can better understand
our society.
vi
Lista de Figuras
Figura 2.1: Uma visão geral dos passos que compõem um processo KDD.
Adaptado de Fayyad, Piatetsky-Shapiro e Smyth (1996) . . . . . 4
vii
Figura 4.9: Parte da função buildHeader do tipo MainView que cria os botões
que inicia a extração, pausa a mesma e reinicia. Parte da função
foi omitida. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33
Figura 4.10: Trecho de código que define funções para o tipo MainView. Nesse
trecho é possível encontrar a implementação das interfaces da API
WppScrapper. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 34
viii
Lista de Tabelas
Tabela 4.1: Tabela de nome dos grupos que tiveram mensagens extraídas com
a quantidade de membros e a quantidade de mensagens extraídas
por grupo. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 36
ix
Sumário
Agradecimentos ii
Resumo v
Abstract vi
Lista de Tabelas ix
1 Introdução 1
2 Fundamentação 3
3.1 Motivação . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
3.3 Proposta . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16
x
4 WppScrapper 22
5 Conclusão 38
Referências 41
xi
Capítulo 1
Introdução
Marfianto e Riadi (2018) afirmam que muitas pessoas utilizam da rede para
crimes digitais como fraudes, redes de drogas e pornografia. Machado et al. (2019)
demonstraram que 13% das mensagens trocadas em grupos públicos de cunho politico
na rede social durante o período da campanha eleitoral de 2018 no Brasil difundiam
informações falsas. Das mensagens que possuem link para vídeos do Youtube 2 , 31%
foram consideradas desinformação.
Fundamentação
Figura 2.1: Uma visão geral dos passos que compõem um processo KDD. Adaptado
de Fayyad, Piatetsky-Shapiro e Smyth (1996)
2.1. MINERAÇÃO DOS DADOS 5
A fase de preparação dos dados pode ocupar, sozinha, a maior parte do processo
(CAMILO; SILVA, 2009). Para melhor entender os dados de forma a auxiliar na
escolha de como prepará-los, são utilizados diversas técnicas de visualização de dados
(CAMILO; SILVA, 2009). Após obtido conhecimento sobre dados, é possível escolher
a melhor forma de prepará-lo para a mineração. Na preparação se realiza a limpeza
de dados, integração de dados, transformação dos dados e redução dos dados (HAN;
PEI; KAMBER, 2011).
Existem diversas técnicas para auxiliar a alcançar os objetivos. Dentre elas estão:
classificação, regressão, descrição, agrupamento, associação e predição (FAYYAD;
PIATETSKY-SHAPIRO; SMYTH, 1996). Cada uma dessas técnicas possuem
diversos métodos e algoritmos, que podem ser supervisionados, não-supervisionados
2.1. MINERAÇÃO DOS DADOS 7
Marfianto e Riadi (2018) apresentam o que pode ser usado com um exemplo de
uso de mineração de texto. O trabalho utiliza de técnicas de mineração de texto
para fazer uma análise forense das mensagens do WhatsApp de um suspeito com o
intuito de ajudar a extrair evidências criminalísticas.
Uma das fontes de texto mais comuns são as redes sociais. Elas permitem que as
pessoas se expressem de forma rápida e livre em contextos muito abrangentes. Para
minerar texto dessas fontes é necessário técnicas específicas, pois podem conter um
vocabulário coloquial e sem padronização. Métodos que fazem uso tanto das conexões
da rede social quanto do conteúdo, por exemplo, conseguem prover resultados mais
eficientes que os que usam apenas o conteúdo ou conexões (AGGARWAL; ZHAI,
2012).
Outra possibilidade para recuperar essas informações seria por meio das APIs
(Application Program Interface). Uma API define uma sintaxe padronizada que
permite uma parte de um software se comunicar com uma outra parte, mesmo que
eles tenham sido escritos em linguagens diferentes ou estruturados de forma diferente
(MITCHELL, 2018). É possível encontrar APIs de diversos tipos de dados que
podem ser utilizados, e.g. postagens do Twitter 1 , paginas do Wikipedia 2 . Apesar de
ser preferível fazer uso das APIs, elas podem não existir para o dado desejado ou
possuir limitações de acesso, e.g quantidade de acessos por dia (MITCHELL, 2018).
(...) a prática de recuperar dados por meio de qualquer outro meio que
não um programa interagindo com uma API (ou, obviamente, por meio
de um humano usando um navegador). Normalmente, isso é alcançado
1
www.twitter.com
2
www.wikipedia.com
2.2. WEB SCRAPING 10
3
http://craigslist.org/
Capítulo 3
3.1 Motivação
Com a facilidade de trocar mensagens e criar grupos de forma gratuita por meio
de aplicativos mensageiros, criou-se um novo meio de formação de comunidades.
Essas comunidades normalmente giram em torno de um tema, que são diversos, e.g.
família, política, esportes, animes, ativismo, negócios, trocas e educação, grupos que
podem ser públicos ou privados (GARIMELLA; TYSON, 2018).
Usando uma estratégia de coleta de dados semelhante à proposta por Resende et al.
(2018), o estudo de Caetano et al. (2018) se caracteriza pelo o que afirma acreditar ser,
na literatura científica, a primeira análise significante do comportamento de grupos
no WhatsApp. O trabalho introduz um framework e métricas para caracterizar o
comportamento de grupos de comunicação em aplicativos de troca de mensagem
móveis como o WhatsApp. Diferente de outros trabalho, esse não se preocupa com
o conteúdo em si, mas sim com dados como a frequência de mensagens, nível de
atividade de usuários em grupos, proporção de mensagens trocadas em forma de
arquivo de mídia, emoji e textual, dentre outros. O estudo exemplifica a utilidade
das métricas as utilizando para comparar grupos políticos a não políticos.
Vale a pena mencionar que, apesar do cenário desse artigo ser contrastar
grupos públicos políticos e não políticos de WhatsApp, nós acreditamos
que nossa metodologia pode ser aplicável em diversos cenários e também
em outras plataformas de mensagem instantânea. (...)
Nós esperamos que os achados desse artigo possam contribuir para clarear
a forma que o WhatsApp funciona e reduzir a opacidade de serviços moder-
3.3. PROPOSTA 16
3.3 Proposta
extração de mensagens e outras informações relevantes desses grupos. Para isso, tal
ferramenta deverá contar com mecanismos de interface gráfica e poder ser usada em
um computador pessoal.
pois também faz uso da estratégia de duas etapas. Na primeira etapa, de coleta
das mensagens, o usuário deverá configurar um dispositivo móvel com uma conta
de WhatsApp e subscrever em todos os grupos que deseja coletar mensagens. Uma
vez que o aplicativo estiver devidamente configurado, ele começará a receber as
mensagens e guardá-las localmente em um banco de dados. Na segunda etapa, de
extração das mensagens coletadas, que é onde o presente trabalho se concentra,
deverá ser usada a ferramenta aqui proposta, que será capaz de extrair todas as
mensagens coletadas na primeira etapa e seu uso se dará através de uma interface
gráfica de usuário em um computador pessoal. Nos próximos parágrafos será descrito
com mais detalhes as características, funcionalidades desse software.
O usuário do software aqui proposto deverá poder utilizá-lo para extrair todas as
mensagens de WhatsApp enviadas e recebidas por uma determinada conta que, no
aplicativo, é identificada por um número de celular. As mensagens extraídas deverão
estar devidamente ordenada pelo sistema e a elas deve ser atribuído informação
3.3. PROPOSTA 19
Todas essas informações deverão ficar armazenadas em local de fácil acesso pelo
usuário e em um formato que possa ser facilmente lido e manipulado por outras
ferramentas. Esses dados deverão poder ser usados em manipulação direta do usuário
usando editores de texto ou ferramentas de planilha, e.g. LibreOffice Calc, como
dados de entrada para programas de análise de dados, aprendizado de máquina ou
outros programas escritos exclusivamente para a finalidade desejada, dentre outras
vastas possibilidade de utilidades. Para atender esses requisitos, propõe-se que
todas as informações estejam em formato CSV (Comma-separated values 5 ). Cada
conversa terá seu próprio arquivo de mensagens e, caso seja um grupo, também
haverá outros dois arquivos adicionais, um com a lista de membros e outro com as
demais informações.
e deverá salvar essa sessão para que possa ser usada novamente no futuro, pulando
a etapa de autenticação. Após um usuário estar com a conta autenticada junto à
ferramenta, com a sessão ativa, a ferramenta deverá apresentar para ele, através
da interface gráfica, a possibilidade de finalizar encerrar a sessão. Com a sessão
encerrada o usuário poderá autenticar uma nova conta seguindo os mesmos passos
descritos anteriormente neste parágrafo.
Ao fazer uso dessa API, o programador terá o benefício de não precisar reim-
plementar diversas lógicas do domínio da aplicação principal e poder se concentrar
no código de interface. Dentre essas lógicas estarão a ordenação das mensagens, os
tratamentos necessários para pausar uma extração e continuar novamente no mesmo
ponto, os tratamentos necessários para recuperar um QRCode de autenticação e a
realização da recuperação de uma sessão salva. A formatação do arquivo CSV, sua
criação, destruição, adição de novas mensagens, cabeçalho, dentre outras manipu-
lações necessárias ao arquivo também deverão se encontrar encapsuladas pela API.
Além das funções mais importantes, que serão as que inicia a operação de extração
e a que finaliza, a API também deverá dispor de métodos para que o código que
a consome possa receber informações como a lista de todos os chats e qual estado
(extraindo, extraído ou esperando) atual do mesmo. Também poderá receber a
informação de que a extração terminou tal como retornos de erro.
Capítulo 4
WppScrapper
Como parte da proposta também consta a criação de uma API capaz das mesmas
tarefas, mas que deve ser implementada de forma agnóstica a como será apresentada
para o usuário ou a sua interface de usuário. A essa API dá-se o nome de WppScrapper.
Para a implementação deste trabalho ficou decido utilizar uma API de terceiro que
provê uma reimplementação da API do WhatsApp Web. Essa API, a GOWhatsApp 1 ,
consiste na implementação da engenharia reversa da API do WhatsApp Web de
forma que tal implementação é capaz de se comunicar diretamente com o servidor
do WhatsApp Web e prover uma interface de programação igual, ou próxima, à
interface WebSocket usada internamente pelo WhatsApp Web.
Além disso, também foi avaliado o fato de ser uma linguagem de código aberto,
ter uma comunidade ativa dando suporte não só na manutenção e desenvolvimento
da linguagem em si, mas também a uma sorte enorme de APIs e ferramentas feitas
com e para a linguagem, uma documentação bem escrita e uma sintaxe limpa e
familiar.
extração foi concluída. A figura 4.4 exemplifica esse processo. De maneira análoga,
ocorre com os demais eventos, todos descritos no diagrama de classes da figura 4.2
com o sufixo Listener.
que atenda as necessidades. Ou seja, essa biblioteca deveria permitir que o programa
resultante seja executado nos diferentes sistemas operacionais, (e.g. Windows, Linux ),
que seja estável, tenha uma interface de programação bem documentada e estruturada,
possua o conjunto de funcionalidades e elementos visuais e interativos necessários,
(e.g Botão, Texto, Tabela, Imagem) e que a interface gráfica gerada por ela seja
agradável aos olhos do usuário.
figura 4.6. Essa função é responsável por requisitar o QRCode para o WppScrapper
e então passá-lo para a função que irá apresentá-lo na janela. Essa função está
ilustrada na figura 4.7 e a janela resultado da função na figura 4.8. A função ainda
trata que, caso ocorra algum erro, ela será chamada novamente de forma recursiva
para que um novo QRCode seja requisitado apresentado ao usuário.
Caso não ocorra erros, ou seja, o usuário realize a leitura do QRCode corretamente,
é apresentado ao usuário a janela de carregando novamente enquanto o WppScrapper
não termina de inicializar. Uma vez inicializado, o programa chama a função
showMainView, que é responsável por requisitar a apresentação da segunda tela, a
tela onde é possível iniciar a extração das mensagens.
os botões que iniciam a extração das mensagens quando o programa já está extraindo
as mensagens e apresentar apenas o botão que pausa essa execução.
O primeiro passo realizado foi a inscrição dessa conta nos grupos públicos. Como
a intenção era realizar apenas uma pequena amostra, foi feita a inscrição em 10
grupos de temas variados, e.g. futebol, jogos. As inscrições foram feitas às 20h de
um dia e deixou-se coletando as mensagens até às 13h do dia seguinte, quando foi
feito o uso do WppScrapperGUI para realizar a extração das mensagens.
Nas figuras 4.11, 4.12 e 4.13 encontra-se exemplo do programa aberto em seus
três diferentes estados. No primeiro o programa acabara de ser aberto e tem listado
todas as conversas encontradas em estado de espera, apresentado na figura 4.11.
Em seguida, após acionado pelo usuário a realizar a extração, o programa modifica
parte da sua interface para indicar seu estado, apresentar as opções de ação possível
e indicar a conversa que está sendo extraído no momento, tal como seu indicador
4.3. DEMONSTRAÇÃO DO WPPSCRAPPERGUI 33
Figura 4.9: Parte da função buildHeader do tipo MainView que cria os botões que
inicia a extração, pausa a mesma e reinicia. Parte da função foi omitida.
Figura 4.10: Trecho de código que define funções para o tipo MainView. Nesse trecho
é possível encontrar a implementação das interfaces da API WppScrapper.
diferentes grupos que possuem, no total, 1311 usuários não necessariamente distintos.
Na tabela 4.1 é possível encontrar esses dados descritos para cada grupo tal como
seu nome.
Tabela 4.1: Tabela de nome dos grupos que tiveram mensagens extraídas com a
quantidade de membros e a quantidade de mensagens extraídas por grupo.
Nome do Chat Quantidade de Membros Quantidade de Mensagens
Free Fire Campeonato 150 65
EU SOU CRUZEIRO , MEU PAI 10 27
Loucos Por Futebol 176 25
Free Fire Cl 61 32
HOSPÍCIO DOS AMIGOS 233 1301
XBOX BRASIL 71 19
FUTEBOL DA RESENHA 206 0
Futebol brasileiro 2021 206 0
Rádio Nacional 198 3
4.3. DEMONSTRAÇÃO DO WPPSCRAPPERGUI 37
Figura 4.16: Captura de tela da parte inicial do conteúdo um arquivo CSV de lista
de membros de um grupo gerado pela extração.
Capítulo 5
Conclusão
remotos ou até a criação de novas formas de interface, e.g. WebSocket, REST, CLI
etc.
Existe uma infinidade de estudos que podem ser feitos utilizando os dados
2
https://aws.amazon.com/pt/s3/
3
https://json.org/json-pt.html
4
https://github.com/ribeiroferreiralucas/wpp-scrapper
5
https://github.com/ribeiroferreiralucas/wpp-scrapper-gui
6
https://github.com/features/actions
40
AGGARWAL, C. C.; ZHAI, C. Mining text data. [S.l.]: Springer Science & Business
Media, 2012.
BOEING, G.; WADDELL, P. New insights into rental housing markets across the
united states: Web scraping and analyzing craigslist rental listings. Journal of
Planning Education and Research, SAGE Publications Sage CA: Los Angeles, CA,
v. 37, n. 4, p. 457–476, 2017.
GARIMELLA, K.; TYSON, G. Whatapp doc? a first look at whatsapp public group
data. In: Twelfth International AAAI Conference on Web and Social Media. [S.l.:
s.n.], 2018.
HAN, J.; PEI, J.; KAMBER, M. Data mining: concepts and techniques. [S.l.]:
Elsevier, 2011.
MITCHELL, R. Web Scraping with Python: Collecting More Data from the Modern
Web. [S.l.]: "O’Reilly Media, Inc.", 2018.
NEWMAN, N. et al. Reuters institute digital news report 2019. [S.l.]: Reuters
Institute for the Study of Journalism, 2019. v. 2019.
SEVIT, D. Mobile Messaging App Map – February 2018. 2018. Disponível em:
<https://www.similarweb.com/blog/mobile-messaging-app-map-2018>.
SHI, Z.; MA, H.; HE, Q. Web mining: Extracting knowledge from the world wide
web. In: Data Mining for Business Applications. [S.l.]: Springer, 2009. p. 197–208.