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 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-devconda 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:
[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.