Poupe 15% em todos os serviços de alojamento

Teste as suas habilidades e obtenha Desconto em qualquer plano

Utilizar o código: Skills Começar a trabalhar
Secções
Linux Segurança Servidores Virtuais

Construa Seu Próprio Bot do Telegram para Monitorar Listas Negras de IPv4 em um VPS

Manter seu endereço IP fora das listas negras de spam é crítico para a entregabilidade de e-mail, reputação do serviço e operações ininterruptas. Quer você execute um servidor de correio, uma plataforma SaaS ou um aplicativo web, uma única entrada na lista negra pode bloquear silenciosamente seus e-mails de saída e prejudicar a confiança do cliente da noite para o dia. Neste guia abrangente, você aprenderá como construir e implantar um bot Telegram totalmente funcional que verifica automaticamente qualquer endereço IPv4 contra principais bancos de dados de spam — tudo funcionando em um VPS confiável.

Por que Automatizar o Monitoramento de Listas Negras IPv4?

As verificações manuais de listas negras são tediosas e fáceis de esquecer. Ao automatizar o processo através de um bot Telegram, você obtém:

  • Verificações instantâneas sob demanda — consulte qualquer IP diretamente do seu telefone ou desktop
  • Feedback em tempo real — resultados entregues dentro do Telegram em segundos
  • Zero overhead de infraestrutura — o bot é executado persistentemente no seu servidor em segundo plano
  • Escalabilidade — estenda o bot posteriormente com alertas agendados, integrações webhook ou verificações em lote de múltiplos IPs

Um IP listado em bases de dados como Spamhaus, SpamCop, StopForumSpam ou Blocklist.de pode causar falhas na entrega de e-mail, suspensões de serviço e danos à reputação. O monitoramento proativo é muito mais barato do que o controle de danos reativo.

Por que implementar num VPS AlexHost?

Executar um bot Telegram requer um servidor que permaneça online 24/7, responda rapidamente e forneça acesso root completo para instalar dependências personalizadas. AlexHost VPS Hosting oferece exatamente isso — armazenamento NVMe SSD para I/O rápido, proteção DDoS de nível empresarial e acesso root completo para que você possa instalar Python, Selenium, drivers de navegador e qualquer outra ferramenta sem restrições.

Ao contrário de ambientes compartilhados onde os limites de recursos podem prejudicar o desempenho do seu bot, um VPS dedicado oferece alocação consistente de CPU e RAM para sua aplicação. Se preferir uma experiência de painel de controlo gerenciado, VPS com cPanel também está disponível, tornando a gestão do servidor acessível mesmo para quem se sente menos confortável com a linha de comandos.

Pré-requisitos

Antes de escrever uma única linha de código, certifique-se de que o seguinte está em vigor no seu servidor:

Requisitos do Sistema

RequisitoVersão Mínima
Python3.7 ou superior
pipÚltima versão estável
Google ChromeÚltima versão estável
ChromeDriverVersão correspondente ao Chrome
OSUbuntu 20.04+ / Debian 11+

Instalar Bibliotecas Python

Conecte-se ao seu VPS via SSH e execute os seguintes comandos para instalar os pacotes Python necessários:

pip install selenium
pip install aiogram==3.4.1
  • Selenium — automatiza interações do navegador para extrair resultados de verificação de lista negra do MXToolbox
  • aiogram 3.4.1 — um framework Python moderno e assíncrono para a API do Telegram Bot

Instalar Google Chrome e ChromeDriver (Headless)

Selenium requer um navegador real para renderizar páginas com muito JavaScript. Instale o Chrome em modo headless no seu servidor Linux:

# Install dependencies
sudo apt update
sudo apt install -y wget curl unzip fonts-liberation libappindicator3-1 libasound2 
  libatk-bridge2.0-0 libatk1.0-0 libcups2 libdbus-1-3 libgdk-pixbuf2.0-0 
  libnspr4 libnss3 libx11-xcb1 libxcomposite1 libxdamage1 libxrandr2 
  xdg-utils libgbm1

# Download and install Chrome
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
sudo dpkg -i google-chrome-stable_current_amd64.deb
sudo apt --fix-broken install -y

# Verify installation
google-chrome --version

Em seguida, instale o ChromeDriver correspondente:

# Get your Chrome version number first
CHROME_VERSION=$(google-chrome --version | grep -oP 'd+.d+.d+.d+')
CHROME_MAJOR=$(echo $CHROME_VERSION | cut -d. -f1)

# Download matching ChromeDriver
wget "https://chromedriver.storage.googleapis.com/LATEST_RELEASE_${CHROME_MAJOR}" -O latest_release
DRIVER_VERSION=$(cat latest_release)
wget "https://chromedriver.storage.googleapis.com/${DRIVER_VERSION}/chromedriver_linux64.zip"
unzip chromedriver_linux64.zip
sudo mv chromedriver /usr/local/bin/
sudo chmod +x /usr/local/bin/chromedriver

Passo 1 — Crie seu Bot do Telegram com BotFather

Todo bot do Telegram começa com BotFather — o bot oficial do Telegram para registrar e gerenciar bots.

1.1 Abra o Telegram e procure por @BotFather (procure pela marca de verificação azul).

1.2 Inicie uma conversa e envie o comando:

/newbot

1.3 Siga as instruções:

  • Digite um nome de exibição para seu bot (por exemplo, IP Blacklist Monitor)
  • Digite um nome de usuário único terminando em bot (por exemplo, ip_blacklist_monitor_bot)

1.4 BotFather responderá com uma mensagem de confirmação semelhante a:

Done! Congratulations on your new bot.
You will find it at t.me/ip_blacklist_monitor_bot.

Use this token to access the HTTP API:
7123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Keep your token secure and store it safely — it can be used by anyone to control your bot.

Copie e salve este token API com segurança. Você precisará dele na próxima etapa. Nunca o envie para um repositório público.

Passo 2 — Escrever o Código do Bot

No seu VPS, crie um novo ficheiro Python:

nano ~/my_bot.py

Cole o seguinte código completo e pronto para produção:

import asyncio
import time
from aiogram import Bot, Dispatcher, F
from aiogram.filters import CommandStart
from aiogram.types import Message
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.options import Options

# ─── Configuration ────────────────────────────────────────────────────────────
BOT_TOKEN = 'YOUR_BOT_TOKEN_HERE'  # Replace with your BotFather token
# ──────────────────────────────────────────────────────────────────────────────

bot = Bot(BOT_TOKEN)
dp = Dispatcher()

def get_chrome_driver():
    """Initialize a headless Chrome driver for server environments."""
    chrome_options = Options()
    chrome_options.add_argument('--headless')
    chrome_options.add_argument('--no-sandbox')
    chrome_options.add_argument('--disable-dev-shm-usage')
    chrome_options.add_argument('--disable-gpu')
    chrome_options.add_argument('--window-size=1920,1080')
    return webdriver.Chrome(options=chrome_options)

def get_results(ip: str) -> list:
    """
    Use Selenium to check an IPv4 address against blacklists via MXToolbox.
    Returns a list of [status, blacklist_name] pairs.
    """
    results = []
    driver = get_chrome_driver()

    try:
        # Navigate to MXToolbox blacklist checker
        url = f"https://mxtoolbox.com/SuperTool.aspx?action=blacklist%3a{ip}&run=toolpage"
        driver.get(url)
        time.sleep(6)  # Allow the page and results to fully load

        # Locate the IP input field and submit the query
        input_field = driver.find_element(By.NAME, 'ctl00$ContentPlaceHolder1$txtInput2')
        input_field.clear()
        input_field.send_keys(ip)
        time.sleep(3)

        search_button = driver.find_element(By.ID, 'btnAction3')
        search_button.click()
        time.sleep(6)  # Wait for results to render

        # Scrape up to 60 status and name columns
        status_results = driver.find_elements(By.CLASS_NAME, 'table-column-Status')[:60]
        name_results = driver.find_elements(By.CLASS_NAME, 'table-column-Name')[:60]

        if len(status_results) == len(name_results):
            for status, name in zip(status_results, name_results):
                results.append([status.text, name.text])
        else:
            print(f"[WARNING] Status/name count mismatch for IP: {ip}")

    except Exception as e:
        print(f"[ERROR] Failed to retrieve results for {ip}: {e}")
    finally:
        driver.quit()

    return results

@dp.message(CommandStart())
async def handle_start(message: Message):
    """Handle the /start command — greet the user and explain usage."""
    await message.answer(
        f"👋 Hello, {message.from_user.first_name}!nn"
        f"Send me any IPv4 address and I will check it against major spam blacklists.nn"
        f"Example: <code>192.168.1.1</code>",
        parse_mode="HTML"
    )

@dp.message(F.text)
async def handle_ip_check(message: Message):
    """Receive an IP address, run the blacklist check, and return formatted results."""
    ip = message.text.strip()
    await message.answer(f"🔍 Checking <code>{ip}</code> against blacklists. Please wait...", parse_mode="HTML")

    loop = asyncio.get_event_loop()
    # Run the blocking Selenium call in a thread pool to avoid blocking the event loop
    raw_results = await loop.run_in_executor(None, get_results, ip)

    if not raw_results:
        await message.answer("⚠️ No results returned. Please verify the IP address and try again.")
        return

    output_lines = []
    blacklisted_count = 0

    for status, name in raw_results:
        if status.strip().upper() == 'OK':
            output_lines.append(f"✅ {name}")
        else:
            output_lines.append(f"❌ {name}")
            blacklisted_count += 1

    summary = f"📊 <b>Results for {ip}</b>n"
    summary += f"🚫 Listed on {blacklisted_count} blacklist(s)nn"
    summary += "n".join(output_lines)

    # Telegram messages have a 4096-character limit — split if necessary
    if len(summary) > 4096:
        for i in range(0, len(summary), 4096):
            await message.answer(summary[i:i+4096], parse_mode="HTML")
    else:
        await message.answer(summary, parse_mode="HTML")

async def main():
    print("✅ Bot is running. Listening for messages...")
    await dp.start_polling(bot)

if __name__ == '__main__':
    asyncio.run(main())

Guarde e saia (Ctrl+O, Enter, Ctrl+X no nano).

Passo 3 — Configurar o Token do Bot com Segurança

Substitua YOUR_BOT_TOKEN_HERE no script pelo token que recebeu do BotFather. Para implementações em produção, é fortemente recomendado usar uma variável de ambiente em vez de codificar o token:

export TELEGRAM_BOT_TOKEN="7123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Depois atualize a linha de código para:

import os
BOT_TOKEN = os.environ.get('TELEGRAM_BOT_TOKEN')

Isto evita exposição acidental do token se o seu código for compartilhado ou versionado.

Passo 4 — Executar o Bot como um Serviço em Segundo Plano

Para manter o bot em execução persistentemente após fechar sua sessão SSH, configure-o como um serviço systemd:

sudo nano /etc/systemd/system/ipblacklist-bot.service

Cole a seguinte configuração:

[Unit]
Description=IPv4 Blacklist Monitor Telegram Bot
After=network.target

[Service]
Type=simple
User=root
WorkingDirectory=/root
ExecStart=/usr/bin/python3 /root/my_bot.py
Restart=on-failure
RestartSec=10
Environment="TELEGRAM_BOT_TOKEN=YOUR_BOT_TOKEN_HERE"

[Install]
WantedBy=multi-user.target

Ative e inicie o serviço:

sudo systemctl daemon-reload
sudo systemctl enable ipblacklist-bot
sudo systemctl start ipblacklist-bot

# Verify it is running
sudo systemctl status ipblacklist-bot

Seu bot agora será reiniciado automaticamente se falhar e será iniciado a cada reinicialização do servidor.

Passo 5 — Teste o Bot

  1. Abra o Telegram e procure pelo seu bot pelo seu nome de utilizador
  2. Envie /start — deverá receber a mensagem de boas-vindas
  3. Envie qualquer endereço IPv4 (por exemplo, 8.8.8.8)
  4. Dentro de 15–20 segundos, receberá uma lista formatada mostrando em quais listas negras o IP está listado (❌) e quais passou (✅)

Visão Geral da Arquitetura do Código

ComponenteFunção
aiogramFramework assíncrono de API do Telegram Bot — manipula roteamento de mensagens e polling
Selenium + ChromeNavegador headless que renderiza e faz scraping dos resultados do MXToolbox
get_chrome_driver()Configura Chrome para operação headless em servidor
get_results(ip)Função de scraping principal — navega MXToolbox e extrai dados de status
handle_start()Responde a /start com instruções de uso
handle_ip_check()Recebe entrada de IP, executa a verificação de forma assíncrona, retorna saída formatada
run_in_executor()Descarrega a chamada bloqueante do Selenium para um pool de threads, mantendo o loop assíncrono responsivo
systemd serviceGarante que o bot seja executado persistentemente e reiniciado automaticamente em caso de falha

Considerações de Segurança e Conformidade

Executar um bot que interage com serviços externos a partir de um VPS vem com responsabilidades:

  • Proteja o token do seu bot — trate-o como uma senha. Rotacione-o imediatamente via BotFather se comprometido.
  • Valide a entrada do utilizador — adicione validação de formato de endereço IP antes de passar a entrada do utilizador para Selenium para evitar comportamento inesperado.
  • Rate limiting — considere adicionar limites de taxa por utilizador para evitar abuso do seu bot e dos recursos do seu servidor.
  • Mantenha as dependências atualizadas — atualize regularmente aiogram, selenium e Chrome para corrigir vulnerabilidades de segurança.
  • Firewall do seu VPS — restrinja as portas de entrada apenas ao necessário (SSH e as conexões de saída do seu bot).

Se a sua infraestrutura também lidar com email, parear este bot com um ambiente de correio adequadamente protegido é essencial. AlexHost Email Hosting fornece um ambiente gerido e em conformidade com a política de spam que reduz o risco de os seus IPs de envio aparecerem em listas negras em primeiro lugar.

Para projetos que requerem um domínio protegido por SSL juntamente com a sua infraestrutura de bot, AlexHost SSL Certificates e Domain Registration tornam simples estabelecer uma presença web totalmente confiável.

Política de Spam e Blacklist da AlexHost

A AlexHost aplica uma política rigorosa de proibição de spam em toda a sua rede. Qualquer atividade que resulte em blacklisting de IP — incluindo email em massa não solicitado, spam em fóruns ou abuso sinalizado pela Spamhaus, SpamCop, StopForumSpam, Blocklist.de ou bases de dados similares — é estritamente proibida. Os serviços encontrados em violação são prontamente suspensos para proteger a integridade da infraestrutura de rede compartilhada e a reputação de todos os clientes.

Isto torna a monitorização proativa com uma ferramenta como o bot descrito neste guia não apenas útil, mas essencial para uma operação responsável do servidor.

Estender o Bot — Ideias para Desenvolvimento Futuro

Depois que seu bot básico estiver em execução, considere estes aprimoramentos:

  • Monitoramento agendado — use apscheduler para verificar automaticamente seus IPs de servidor a cada 6 ou 24 horas e alertá-lo apenas quando uma nova listagem for detectada
  • Verificações em lote de múltiplos IPs — aceite uma lista de IPs separados por vírgula em uma única mensagem
  • Registro persistente — armazene resultados de verificação em um banco de dados SQLite ou PostgreSQL para análise de tendências históricas
  • Modo webhook — mude de long polling para webhooks para menor latência e carga reduzida do servidor
  • Fontes de dados adicionais — integre APIs do AbuseIPDB ou Spamhaus diretamente para resultados mais autoritários sem automação de navegador

Conclusão

Construir um bot Telegram para monitorar listas negras IPv4 é um projeto de automação prático e de alto valor que qualquer administrador de sistemas ou desenvolvedor pode concluir numa tarde. Com Python, aiogram e Selenium em execução num AlexHost VPS, obtém uma ferramenta de monitorização persistente e responsiva que entrega resultados diretamente no seu cliente Telegram — sem painéis para verificar, sem pesquisas manuais necessárias.

A gestão proativa da reputação de IP protege a sua capacidade de entrega de e-mail, a confiança dos seus clientes e o tempo de atividade do seu serviço. Implemente este bot hoje, mantenha as suas dependências atualizadas e estenda-o ao longo do tempo conforme as suas necessidades de monitorização crescerem.