⚠️ VERSÃO BETA - Este projeto está em fase ativa de desenvolvimento e testes. Use com cautela e sempre revise as ações antes da execução.
Agente local em Python para cancelar inscrições de e-mails de propaganda de forma segura, reversível e auditável usando a Gmail API.
- ✅ APIs oficiais apenas (Gmail API via OAuth Desktop App)
- ✅ Fluxo de unsubscribe correto com prioridades:
List-Unsubscribe-Post: List-Unsubscribe=One-Click
→ POST com headermailto:
→ e-mail automático "unsubscribe"- Sem cabeçalho → filtro Gmail (arquivar + marcar como lido)
- ✅ Dry-run obrigatório - sempre mostra o que será feito antes
- ✅ Confirmação antes de executar (batch ou individual)
- ✅ Whitelist inteligente - nunca descadastra bancos, governo, etc.
- ✅ Undo - permite reverter filtros aplicados
- ✅ Rate limiting - 30-60 ações por hora com delays aleatórios
- ✅ Logs JSONL - auditoria completa em
logs/unsubscribe_YYYYMMDD.jsonl
# Clone o repositório
git clone <seu-repositorio>
cd gmail-unsubscribe-agent
# Execute o setup
python setup.py
- Acesse Google Cloud Console
- Crie um novo projeto ou selecione um existente
- Ative a Gmail API
- Crie credenciais OAuth 2.0 (Aplicativo Desktop)
- Baixe o arquivo JSON e renomeie para
credentials.json
- Coloque o arquivo na pasta raiz do projeto
# Execute uma análise (dry run)
python main.py analisar
# Execute o descadastro
python main.py executar
python main.py analisar [--dias 30] [--max-emails 100]
- Analisa e-mails dos últimos N dias
- Mostra candidatos para descadastro
- Nunca executa ações - apenas mostra o que seria feito
python main.py executar [--dias 30] [--max-emails 100] [--lote]
- Executa o descadastro dos candidatos encontrados
--lote
: processa todos de uma vez (sem confirmação individual)- Sem
--lote
: confirma cada candidato individualmente
python main.py reverter [--count 1]
- Reverte as últimas N ações realizadas
- Funciona apenas para filtros Gmail criados
python main.py status
- Mostra status atual do sistema
- Lista ações recentes
- Informações sobre rate limiting
O sistema possui whitelist automática que NUNCA descadastra:
- Governo:
gov.br
,receita.fazenda.gov.br
,sefaz.gov.br
- Bancos:
bancodobrasil.com.br
,itau.com.br
,bradesco.com.br
, etc. - E-commerce:
amazon.com.br
,mercadolivre.com.br
,americanas.com.br
, etc. - Provedores:
gmail.com
,outlook.com
,yahoo.com
, etc. - Mídia:
globo.com
,folha.com.br
,g1.com.br
, etc.
banco
,financeiro
,cartão
,conta
nota fiscal
,nf-e
,fatura
,boleto
governo
,receita
,tribunal
,polícia
alerta
,urgente
,importante
,oficial
Todos os logs são salvos em formato JSONL em logs/unsubscribe_YYYYMMDD.jsonl
:
{
"timestamp": "2024-01-15T10:30:00",
"level": "ACTION",
"message": "Action: one_click_unsubscribe",
"data": {
"sender": "newsletter@example.com",
"url": "https://example.com/unsubscribe",
"status_code": 200,
"description": "One-click unsubscribe sent to newsletter@example.com"
}
}
Edite o arquivo .env
para personalizar:
# Rate Limiting
MAX_ACTIONS_PER_HOUR=50
MIN_DELAY_SECONDS=1
MAX_DELAY_SECONDS=3
# Logging
LOG_LEVEL=INFO
- Detecta header
List-Unsubscribe-Post: List-Unsubscribe=One-Click
- Envia POST com header
List-Unsubscribe: One-Click
- Mais seguro e eficiente
- Detecta links
mailto:
no headerList-Unsubscribe
- Envia e-mail automático com assunto "Unsubscribe"
- Método tradicional
- Quando não há headers de unsubscribe
- Cria filtro Gmail para arquivar e marcar como lido
- Reversível - pode ser desfeito com
reverter
⚠️ Sempre executeanalisar
antes deexecutar
⚠️ O sistema NUNCA clica em links HTML - apenas usa headers⚠️ Rate limiting automático - respeita limites da API⚠️ Whitelist rigorosa - protege e-mails importantes⚠️ Logs completos - auditoria de todas as ações
Em caso de problemas:
- Verifique os logs em
logs/
- Execute
python main.py status
para diagnóstico - Use
python main.py reverter
para desfazer ações - Verifique se
credentials.json
está configurado corretamente
Este projeto é para uso pessoal e educacional. Use com responsabilidade e sempre respeite os termos de serviço do Gmail.