Economisiți 15% la toate serviciile de găzduire

Testează-ți abilitățile și obține Reducere la orice plan de găzduire

Utilizați codul: Skills Începeți
Secțiuni
Linux Securitate Servere virtuale

Construiți-vă propriul bot Telegram pentru a monitoriza liste negre IPv4 pe un VPS

Menținerea adresei IP off spam blacklists este critică pentru deliverabilitatea email-ului, reputația serviciului și operațiunile neîntrerupte. Indiferent dacă rulezi un mail server, o platformă SaaS sau o aplicație web, o singură intrare pe blacklist poate bloca în tăcere email-urile tale de ieșire și poate eroda încrederea clienților peste noapte. În acest ghid cuprinzător, vei învăța cum să construiești și să implementezi un bot Telegram complet funcțional care verifică automat orice adresă IPv4 împotriva bazelor de date majore de spam — toate rulând pe un VPS fiabil.

De ce să automatizezi monitorizarea listei negre IPv4?

Verificările manuale ale listei negre sunt obositoare și ușor de uitat. Prin automatizarea procesului printr-un bot Telegram, obții:

  • Verificări instantanee la cerere — interogheaza orice IP direct din telefonul sau desktopul tău
  • Feedback în timp real — rezultate livrate în Telegram în câteva secunde
  • Zero overhead de infrastructură — botul rulează persistent pe serverul tău în fundal
  • Scalabilitate — extinde botul mai târziu cu alerte programate, integrări webhook sau verificări batch multi-IP

Un IP listat în baze de date precum Spamhaus, SpamCop, StopForumSpam sau Blocklist.de poate cauza eșecuri în livrarea e-mailurilor, suspendarea serviciilor și daune reputaționale. Monitorizarea proactivă este mult mai ieftină decât controlul daunelor reactiv.

De ce să implementezi pe un VPS AlexHost?

Rularea unui bot Telegram necesită un server care rămâne online 24/7, răspunde rapid și oferă acces root complet pentru instalarea dependențelor personalizate. AlexHost VPS Hosting oferă exact asta — stocare NVMe SSD pentru I/O rapid, protecție DDoS de nivel enterprise și acces root complet, astfel încât poți instala Python, Selenium, drivere de browser și orice alt instrument fără restricții.

Spre deosebire de mediile partajate unde limitele de resurse pot încetini performanța botului tău, un VPS dedicat oferă aplicației tale o alocare consistentă de CPU și RAM. Dacă preferi o experiență cu panou de control gestionat, VPS cu cPanel este de asemenea disponibil, făcând gestionarea serverului accesibilă chiar și pentru cei mai puțin confortabili cu linia de comandă.

Cerințe preliminare

Înainte de a scrie o singură linie de cod, asigurați-vă că următoarele sunt în vigoare pe serverul dvs.:

Cerințe de sistem

CerințăVersiune minimă
Python3.7 sau mai recent
pipCea mai recentă versiune stabilă
Google ChromeCea mai recentă versiune stabilă
ChromeDriverVersiune corespunzătoare Chrome
OSUbuntu 20.04+ / Debian 11+

Instalați bibliotecile Python

Conectați-vă la VPS-ul dvs. prin SSH și executați următoarele comenzi pentru a instala pachetele Python necesare:

pip install selenium
pip install aiogram==3.4.1
  • Selenium — automatizează interacțiunile browserului pentru a extrage rezultatele verificării listei negre de pe MXToolbox
  • aiogram 3.4.1 — un framework modern, async-first Python pentru Telegram Bot API

Instalați Google Chrome și ChromeDriver (Headless)

Selenium necesită un browser real pentru a reda pagini cu conținut JavaScript intens. Instalați Chrome în modul headless pe serverul 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

Apoi instalați ChromeDriver corespunzător:

# 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

Pasul 1 — Creează-ți Botul Telegram cu BotFather

Fiecare bot Telegram începe cu BotFather — botul oficial Telegram pentru înregistrarea și gestionarea boturilor.

1.1 Deschide Telegram și caută @BotFather (caută bifă albastră de verificare).

1.2 Începe o conversație și trimite comanda:

/newbot

1.3 Urmează instrucțiunile:

  • Introdu un nume de afișare pentru botul tău (de ex., IP Blacklist Monitor)
  • Introdu un nume de utilizator unic care se termină în bot (de ex., ip_blacklist_monitor_bot)

1.4 BotFather va răspunde cu un mesaj de confirmare similar cu:

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.

Copiază și salvează acest token API în siguranță. Vei avea nevoie de el în pasul următor. Nu-l comite niciodată într-un depozit public.

Pasul 2 — Scrieți Codul Bot-ului

Pe VPS-ul dvs., creați un nou fișier Python:

nano ~/my_bot.py

Lipiți următorul cod complet, gata pentru producție:

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

Salvați și ieșiți (Ctrl+O, Enter, Ctrl+X în nano).

Pasul 3 — Configurați Token-ul Bot în Mod Securizat

Înlocuiți YOUR_BOT_TOKEN_HERE din script cu token-ul pe care l-ați primit de la BotFather. Pentru implementările în producție, se recomandă cu tărie să utilizați o variabilă de mediu în loc să hardcodificați token-ul:

export TELEGRAM_BOT_TOKEN="7123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"

Apoi actualizați linia de cod la:

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

Aceasta previne expunerea accidentală a token-ului dacă codul dvs. este vreodată partajat sau controlat de versiuni.

Pasul 4 — Rulați Botul ca Serviciu de Fundal

Pentru a menține botul în funcțiune persistent după ce închideți sesiunea SSH, configurați-l ca serviciu systemd:

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

Lipiți următoarea configurație:

[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

Activați și porniți serviciul:

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

# Verify it is running
sudo systemctl status ipblacklist-bot

Botul dvs. va reporni automat dacă se blochează și va porni la fiecare repornire a serverului.

Pasul 5 — Testează Botul

  1. Deschide Telegram și caută botul după username-ul acestuia
  2. Trimite /start — ar trebui să primești mesajul de bun venit
  3. Trimite orice adresă IPv4 (de ex., 8.8.8.8)
  4. În 15–20 de secunde, vei primi o listă formatată care arată pe care blacklist-uri este listată IP-ul (❌) și pe care le-a trecut (✅)

Prezentare generală a arhitecturii codului

ComponentăRol
aiogramFramework asincron Telegram Bot API — gestionează rutarea mesajelor și polling
Selenium + ChromeBrowser headless care redă și extrage rezultatele MXToolbox
get_chrome_driver()Configurează Chrome pentru operare headless pe server
get_results(ip)Funcția de scraping principală — navighează MXToolbox și extrage datele de stare
handle_start()Răspunde la /start cu instrucțiuni de utilizare
handle_ip_check()Primește intrare IP, execută verificarea asincron, returnează rezultat formatat
run_in_executor()Descarcă apelul Selenium blocant într-un pool de thread-uri, păstrând bucla asincronă responsivă
systemd serviceAsigură rularea persistentă a bot-ului și repornire automată în caz de eșec

Considerații de Securitate și Conformitate

Rularea unui bot care interacționează cu servicii externe de pe un VPS vine cu responsabilități:

  • Protejează-ți tokenul botului — tratează-l ca o parolă. Rotește-l imediat prin BotFather dacă a fost compromis.
  • Validează intrarea utilizatorului — adaugă validarea formatului adresei IP înainte de a transmite intrarea utilizatorului la Selenium pentru a preveni comportamentul neașteptat.
  • Rate limiting — ia în considerare adăugarea limitelor de rată per utilizator pentru a preveni abuzul botului tău și al resurselor serverului tău.
  • Ține dependențele actualizate — actualizează regulat aiogram, selenium și Chrome pentru a corecta vulnerabilități de securitate.
  • Firewall-ul VPS-ului tău — restricționează porturile de intrare doar la ceea ce este necesar (SSH și conexiunile de ieșire ale botului tău).

Dacă infrastructura ta gestionează și email, asocierea acestui bot cu un mediu de poștă corespunzător securizat este esențială. AlexHost Email Hosting oferă un mediu gestionat, conform politicii anti-spam, care reduce riscul ca IP-urile tale de trimitere să apară pe liste negre de la început.

Pentru proiecte care necesită un domeniu securizat cu SSL alături de infrastructura botului tău, AlexHost SSL Certificates și Domain Registration fac ușor să stabilești o prezență web pe deplin de încredere.

Politica AlexHost privind Spam și Blacklist

AlexHost aplică o politică strictă de interzicere a spam-ului pe întreaga sa rețea. Orice activitate care rezultă în blacklistarea IP — inclusiv email-uri în masă nesolicitate, spam pe forumuri sau abuzuri marcate de Spamhaus, SpamCop, StopForumSpam, Blocklist.de sau baze de date similare — este strict interzisă. Serviciile care încalcă această politică sunt suspendate imediat pentru a proteja integritatea infrastructurii rețelei partajate și reputația tuturor clienților.

Aceasta face monitorizarea proactivă cu un instrument precum botul descris în acest ghid nu doar util, ci esențial pentru operarea responsabilă a serverului.

Extinderea Bot-ului — Idei pentru Dezvoltare Viitoare

Odată ce bot-ul dvs. de bază funcționează, luați în considerare aceste îmbunătățiri:

  • Monitorizare programată — utilizați apscheduler pentru a verifica automat IP-urile serverului dvs. la fiecare 6 sau 24 de ore și pentru a vă alerta doar atunci când este detectată o nouă listare
  • Verificări batch multi-IP — acceptați o listă de IP-uri separate prin virgulă într-un singur mesaj
  • Jurnalizare persistentă — stocați rezultatele verificării într-o bază de date SQLite sau PostgreSQL pentru analiza tendințelor istorice
  • Modul webhook — comutați de la long polling la webhooks pentru latență mai mică și încărcare redusă a serverului
  • Surse de date suplimentare — integrați API-uri de la AbuseIPDB sau Spamhaus direct pentru rezultate mai autoritare fără automatizare browser

Concluzie

Construirea unui bot Telegram pentru monitorizarea listelor negre IPv4 este un proiect de automatizare practic și de valoare ridicată pe care orice administrator de sisteme sau dezvoltator îl poate finaliza într-o după-amiază. Cu Python, aiogram și Selenium rulând pe un AlexHost VPS, obții un instrument de monitorizare persistent și receptiv care oferă rezultate direct în clientul tău Telegram — fără tablouri de bord de verificat, fără căutări manuale necesare.

Gestionarea proactivă a reputației IP-ului protejează capacitatea ta de livrare a e-mailurilor, încrederea clienților tăi și disponibilitatea serviciului tău. Implementează acest bot astazi, ține dependențele tale actualizate și extinde-l în timp pe măsură ce nevoile tale de monitorizare cresc.