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 3apt install python3# Instalando pip do Python 3apt install python3-pip# Criando pasta para o código fontemkdir web_whats_api_sourcecd web_whats_api_source# Baixando o código fonte diretamente do githubwget https://github.com/mukulhase/WebWhatsapp-Wrapper/archive/master.zip# Dezipando o código fonteunzip master.zip# Instalando bibliotecas necessáriaspip3 install seleniumpip3 install python-dateutilpip3 install python-axolotl# Necessário para a biblioteca cryptographyapt install -y libssl-devpip3 install cryptographypip3 install aiohttppip3 install sixpip3 install typingpip3 install numpypip3 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 bitswget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux32.tar.gz# Extraindo o geckodriver do arquivo compactado .gztar -xvzf geckodriver-v0.24.0-linux32.tar.gz# Movendo o binário geckodriver para a pasta /usr/binsudo mv geckodriver /usr/bin

Instalando via apt e conda

sudo apt install -y libssl-devconda create -y --name whatsappconda activate whatsapp# conda activate ~/anaconda3/env/whatsappconda config --add channels conda-forgeconda config --set channel_priority strictconda install -y python=3.7conda install -y pippip install selenium# instalpip install python-dateutil# Instalando bibliotecas de criptografiapip install python-axolotlpip install cryptography# Instalando biblioteca de requests assíncronaspip install aiohttp# Instalando biblioteca para converter python 2 em python 3pip install six# Instalando tipagem para o Pythonpip install typingpip install numpypip install python-magicpip 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 bitswget https://github.com/mozilla/geckodriver/releases/download/v0.24.0/geckodriver-v0.24.0-linux32.tar.gz# Extraindo o geckodriver do arquivo compactado .gztar -xvzf geckodriver-v0.24.0-linux32.tar.gz# Movendo o binário geckodriver para a pasta /usr/binsudo 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:

[code language="bash"] firefox -profilemanager [/code]

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

[code language="bash"] cd ~/.mozilla/firefox/ [/code]

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).

[code language="python"] driver = WhatsAPIDriver(profile='/home/seu_usuario/.mozilla/firefox/algum_codigo.nome_do_seu_profile') [/code]

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

You should also read: