Carregando...
Sem categoria

Enviar e ler mensagens do WhatsApp pelo Python

Um projeto fez uma biblioteca em Python para criar uma API que facilita o envio e leitura de mensagens pelo WhatsApp Web.

O projeto está hospedado no GitHub com o nome de WebWhatsapp-Wrapper ou WebWhatsAPI:

Ele utiliza o Python 3 e recomenda o uso do driver do Firefox geckodriver.

Instalando o WebWhatsAPI

Há algumas formas diferentes de instalar o WebWhatsAPI, aqui vou listar algumas:

Instalando via apt e pip3

# Instalando Python 3
apt install python3
# Instalando pip do Python 3
apt install python3-pip
# Criando pasta para o código fonte
mkdir web_whats_api_source
cd web_whats_api_source
# Baixando o código fonte diretamente do github
wget https://github.com/mukulhase/WebWhatsapp-Wrapper/archive/master.zip
# Dezipando o código fonte
unzip master.zip
# Instalando bibliotecas necessárias
pip3 install selenium
pip3 install python-dateutil
pip3 install python-axolotl
# Necessário para a biblioteca cryptography
apt install -y libssl-dev
pip3 install cryptography
pip3 install aiohttp
pip3 install six
pip3 install typing
pip3 install numpy
pip3 install python-magic
# Instalando o gecko driver (browser firefox que pode ser operado por bot)
# A última versão do binário é encontrada aqui https://github.com/mozilla/geckodriver/releases/latest
# Instalando a versão para Linux 32 bits
wget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux32.tar.gz
# Extraindo o geckodriver do arquivo compactado .gz
tar -xvzf geckodriver-v0.24.0-linux32.tar.gz
# Movendo o binário geckodriver para a pasta /usr/bin
sudo mv geckodriver /usr/bin

Instalando via apt e conda

sudo apt install -y libssl-dev
conda create -y --name whatsapp
conda activate whatsapp
# conda activate ~/anaconda3/env/whatsapp
conda config --add channels conda-forge
conda config --set channel_priority strict
conda install -y python=3.7
conda install -y pip
pip install selenium
# instal
pip install python-dateutil
# Instalando bibliotecas de criptografia
pip install python-axolotl
pip install cryptography
# Instalando biblioteca de requests assíncronas
pip install aiohttp
# Instalando biblioteca para converter python 2 em python 3
pip install six
# Instalando tipagem para o Python
pip install typing
pip install numpy
pip install python-magic
pip install jupyter

# Instalando o gecko driver (browser firefox que pode ser operado por bot)
# A última versão do binário é encontrada aqui https://github.com/mozilla/geckodriver/releases/latest
# Instalando a versão para Linux 32 bits
wget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux32.tar.gz
# Extraindo o geckodriver do arquivo compactado .gz
tar -xvzf geckodriver-v0.24.0-linux32.tar.gz
# Movendo o binário geckodriver para a pasta /usr/bin
sudo mv geckodriver /usr/bin

Criando um Firefox Profile para não ter que carregar o QRCode toda a vez

Ao iniciar o driver na biblioteca WebWhatsAPI, o browser sempre abrirá o QR code para que se autentique pelo app do WhatsAPP no celular. Para não precisar ficar autenticando toda hora, faça o seguinte:

Feche todas as janelas do Firefox abertas no computador e inicie o Firefox profile manager com o seguinte comando:

firefox -profilemanager

Uma janela abrirá para que você possa gerenciar os profiles no Firefox. Cada profile poderá guardar uma e apenas uma sessão do WhatsApp. Crie um novo profile (se quiser) e anote o nome dele (por exemplo “nome_do_seu_profile“), precisaremos desse nome para descobrir em que pasta os arquivos de configuração e cookies ficarão guardados.

  • Inicie o Firefox com esse profile
  • Entre em https://web.whatsapp.com
  • Escaneie o QR com com a conta de WhatsApp desejada e espere conectar
  • Feche o Firefox
  • Vá até a pasta de profiles de firefox e descubra o nome completo da pasta do profile
cd ~/.mozilla/firefox/

O nome do profile será algo tipo “algum_codigo.nome_do_seu_profile “. Anote o nome dessa pasta, usaremos ela para informar ao driver do WebWhatsAPI (estas pastas tem cerca de 15mb).

driver = WhatsAPIDriver(profile='/home/seu_usuario/.mozilla/firefox/algum_codigo.nome_do_seu_profile')

Pronto, agora você não precisará mais carregar o QR code ao chamar o WhatsAPIDriver.

3 comentários
    1. tiagosmx

      Até agora essa é a melhor biblioteca que encontrei, ela costuma funcionar muito bem.
      Quando para de funcionar é porque o WhatsApp mudou alguma configuração no site do WhatsApp Web, geralmente fica por uns 2 dias e alguém lança uma atualização no GIT ou um pull request (atualização de terceiros) pra corrigir. Me parece que tem pessoas usando ela comercialmente, então o suporte da comunidade é bem ativo 🤔

    2. tiagosmx

      Eu uso no Linux com o driver do Firefox no Selenium, usando o Conda (anaconda/miniconda) como gerenciador de ambientes Python.
      Não usei o Docker, achei melhor usar o Conda e puxar a última versão direto do git.

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *