Bangun Bot Telegram Anda Sendiri untuk Memantau Daftar Hitam IPv4 di VPS
Menjaga alamat IP Anda tetap keluar dari daftar spam blacklist sangat penting untuk deliverability email, reputasi layanan, dan operasi tanpa gangguan. Baik Anda menjalankan mail server, platform SaaS, atau aplikasi web, satu entri blacklist dapat secara diam-diam memblokir email keluar Anda dan mengikis kepercayaan pelanggan dalam semalam. Dalam panduan komprehensif ini, Anda akan belajar cara membangun dan menerapkan bot Telegram yang sepenuhnya fungsional yang secara otomatis memeriksa alamat IPv4 apa pun terhadap database spam utama — semuanya berjalan di VPS yang andal.
Mengapa Mengotomatisasi Pemantauan Blacklist IPv4?
Pemeriksaan blacklist manual membosankan dan mudah dilupakan. Dengan mengotomatisasi proses melalui bot Telegram, Anda mendapatkan:
- Pemeriksaan instan sesuai permintaan — kueri IP apa pun langsung dari ponsel atau desktop Anda
- Umpan balik real-time — hasil disampaikan di dalam Telegram dalam hitungan detik
- Nol overhead infrastruktur — bot berjalan terus-menerus di server Anda di latar belakang
- Skalabilitas — perluas bot nanti dengan peringatan terjadwal, integrasi webhook, atau pemeriksaan batch multi-IP
IP yang terdaftar di database seperti Spamhaus, SpamCop, StopForumSpam, atau Blocklist.de dapat menyebabkan kegagalan pengiriman email, penangguhan layanan, dan kerusakan reputasi. Pemantauan proaktif jauh lebih murah daripada kontrol kerusakan reaktif.
Mengapa Deploy di AlexHost VPS?
Menjalankan bot Telegram memerlukan server yang tetap online 24/7, merespons dengan cepat, dan memberikan akses root penuh untuk menginstal dependensi kustom. AlexHost VPS Hosting memberikan tepat itu — penyimpanan NVMe SSD untuk I/O cepat, perlindungan DDoS tingkat enterprise, dan akses root penuh sehingga Anda dapat menginstal Python, Selenium, browser drivers, dan alat lainnya tanpa batasan.
Tidak seperti lingkungan bersama di mana batasan sumber daya dapat menghambat kinerja bot Anda, VPS khusus memberikan alokasi CPU dan RAM yang konsisten untuk aplikasi Anda. Jika Anda lebih suka pengalaman control panel yang dikelola, VPS dengan cPanel juga tersedia, membuat manajemen server dapat diakses bahkan bagi mereka yang kurang nyaman dengan command line.
Prasyarat
Sebelum menulis satu baris kode pun, pastikan hal berikut sudah ada di server Anda:
Persyaratan Sistem
| Persyaratan | Versi Minimum |
|---|---|
| Python | 3.7 atau lebih tinggi |
| pip | Stabil terbaru |
| Google Chrome | Stabil terbaru |
| ChromeDriver | Sesuai versi Chrome |
| OS | Ubuntu 20.04+ / Debian 11+ |
Instal Pustaka Python
Terhubung ke VPS Anda melalui SSH dan jalankan perintah berikut untuk menginstal paket Python yang diperlukan:
pip install selenium
pip install aiogram==3.4.1- Selenium — mengotomatisasi interaksi browser untuk mengikis hasil pemeriksaan daftar hitam dari MXToolbox
- aiogram 3.4.1 — kerangka kerja Python modern dan async-first untuk Telegram Bot API
Instal Google Chrome dan ChromeDriver (Headless)
Selenium memerlukan browser nyata untuk merender halaman yang berat dengan JavaScript. Instal Chrome dalam mode headless di server Linux Anda:
# 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 --versionKemudian instal ChromeDriver yang sesuai:
# 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/chromedriverLangkah 1 — Buat Bot Telegram Anda dengan BotFather
Setiap bot Telegram dimulai dengan BotFather — bot Telegram resmi untuk mendaftarkan dan mengelola bot.
1.1 Buka Telegram dan cari @BotFather (cari tanda centang biru yang terverifikasi).
1.2 Mulai percakapan dan kirim perintah:
/newbot1.3 Ikuti petunjuknya:
- Masukkan nama tampilan untuk bot Anda (misalnya,
IP Blacklist Monitor) - Masukkan nama pengguna unik yang diakhiri dengan
bot(misalnya,ip_blacklist_monitor_bot)
1.4 BotFather akan merespons dengan pesan konfirmasi serupa dengan:
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.Salin dan simpan token API ini dengan aman. Anda akan membutuhkannya di langkah berikutnya. Jangan pernah komitnya ke repositori publik.
Langkah 2 — Tulis Kode Bot
Di VPS Anda, buat file Python baru:
nano ~/my_bot.pyTempel kode lengkap dan siap produksi berikut:
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())Simpan dan keluar (Ctrl+O, Enter, Ctrl+X di nano).
Langkah 3 — Konfigurasi Bot Token dengan Aman
Ganti YOUR_BOT_TOKEN_HERE dalam skrip dengan token yang Anda terima dari BotFather. Untuk deployment produksi, sangat disarankan untuk menggunakan variabel lingkungan alih-alih hardcoding token:
export TELEGRAM_BOT_TOKEN="7123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Kemudian perbarui baris kode menjadi:
import os
BOT_TOKEN = os.environ.get('TELEGRAM_BOT_TOKEN')Ini mencegah paparan token yang tidak disengaja jika kode Anda pernah dibagikan atau dikontrol versi.
Langkah 4 — Jalankan Bot sebagai Layanan Latar Belakang
Untuk membuat bot tetap berjalan setelah Anda menutup sesi SSH, atur sebagai layanan systemd:
sudo nano /etc/systemd/system/ipblacklist-bot.serviceTempel konfigurasi berikut:
[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.targetAktifkan dan mulai layanan:
sudo systemctl daemon-reload
sudo systemctl enable ipblacklist-bot
sudo systemctl start ipblacklist-bot
# Verify it is running
sudo systemctl status ipblacklist-botBot Anda sekarang akan secara otomatis restart jika crash dan akan dimulai pada setiap reboot server.
Langkah 5 — Uji Bot
- Buka Telegram dan cari bot Anda berdasarkan nama penggunanya
- Kirim
/start— Anda akan menerima pesan sambutan - Kirim alamat IPv4 apa pun (misalnya,
8.8.8.8) - Dalam 15–20 detik, Anda akan menerima daftar terformat yang menunjukkan daftar hitam mana yang IP tercantum (❌) dan mana yang lulus (✅)
Gambaran Umum Arsitektur Kode
| Komponen | Peran |
|---|---|
aiogram | Framework Telegram Bot API asinkron — menangani perutean pesan dan polling |
Selenium + Chrome | Browser headless yang merender dan mengikis hasil MXToolbox |
get_chrome_driver() | Mengonfigurasi Chrome untuk operasi server headless |
get_results(ip) | Fungsi scraping inti — menavigasi MXToolbox dan mengekstrak data status |
handle_start() | Merespons /start dengan instruksi penggunaan |
handle_ip_check() | Menerima input IP, menjalankan pemeriksaan secara asinkron, mengembalikan output yang diformat |
run_in_executor() | Memindahkan panggilan Selenium yang memblokir ke thread pool, menjaga loop asinkron tetap responsif |
systemd service | Memastikan bot berjalan secara persisten dan restart otomatis saat terjadi kegagalan |
Pertimbangan Keamanan dan Kepatuhan
Menjalankan bot yang berinteraksi dengan layanan eksternal dari VPS memiliki tanggung jawab:
- Lindungi token bot Anda — perlakukan seperti kata sandi. Rotasi segera melalui BotFather jika terkompromikan.
- Validasi input pengguna — tambahkan validasi format alamat IP sebelum meneruskan input pengguna ke Selenium untuk mencegah perilaku yang tidak terduga.
- Rate limiting — pertimbangkan untuk menambahkan batasan laju per pengguna untuk mencegah penyalahgunaan bot dan sumber daya server Anda.
- Jaga dependensi tetap diperbarui — perbarui secara teratur
aiogram,selenium, dan Chrome untuk menambal kerentanan keamanan. - Firewall VPS Anda — batasi port inbound hanya untuk yang diperlukan (SSH, dan koneksi keluar bot Anda).
Jika infrastruktur Anda juga menangani email, memasangkan bot ini dengan lingkungan mail yang diamankan dengan baik sangat penting. AlexHost Email Hosting menyediakan lingkungan yang dikelola dan mematuhi kebijakan spam yang mengurangi risiko IP pengiriman Anda muncul di daftar hitam sejak awal.
Untuk proyek yang memerlukan domain yang diamankan SSL bersama infrastruktur bot Anda, AlexHost SSL Certificates dan Domain Registration membuat mudah untuk membangun kehadiran web yang sepenuhnya terpercaya.
Kebijakan Spam dan Blacklist AlexHost
AlexHost menerapkan kebijakan no-spam yang ketat di seluruh jaringannya. Setiap aktivitas yang mengakibatkan blacklist IP — termasuk email massal tanpa izin, forum spam, atau penyalahgunaan yang ditandai oleh Spamhaus, SpamCop, StopForumSpam, Blocklist.de, atau database serupa — sangat dilarang. Layanan yang ditemukan melanggar kebijakan ini akan segera ditangguhkan untuk melindungi integritas infrastruktur jaringan bersama dan reputasi semua pelanggan.
Ini membuat pemantauan proaktif dengan alat seperti bot yang dijelaskan dalam panduan ini tidak hanya berguna, tetapi penting untuk operasi server yang bertanggung jawab.
Memperluas Bot — Ide untuk Pengembangan Masa Depan
Setelah bot dasar Anda berjalan, pertimbangkan peningkatan berikut:
- Pemantauan terjadwal — gunakan
apscheduleruntuk secara otomatis memeriksa IP server Anda setiap 6 atau 24 jam dan memberi tahu Anda hanya ketika daftar baru terdeteksi - Pemeriksaan batch multi-IP — terima daftar IP yang dipisahkan koma dalam satu pesan
- Pencatatan persisten — simpan hasil pemeriksaan dalam database SQLite atau PostgreSQL untuk analisis tren historis
- Mode webhook — beralih dari long polling ke webhook untuk latensi lebih rendah dan beban server berkurang
- Sumber data tambahan — integrasikan API dari AbuseIPDB atau Spamhaus secara langsung untuk hasil yang lebih otoritatif tanpa otomasi browser
Kesimpulan
Membangun bot Telegram untuk memantau daftar hitam IPv4 adalah proyek otomasi praktis dan bernilai tinggi yang dapat diselesaikan oleh administrator sistem atau pengembang mana pun dalam satu sore. Dengan Python, aiogram, dan Selenium yang berjalan di AlexHost VPS, Anda mendapatkan alat pemantauan yang persisten dan responsif yang memberikan hasil langsung ke klien Telegram Anda — tidak ada dasbor untuk diperiksa, tidak ada pencarian manual yang diperlukan.
Manajemen reputasi IP yang proaktif melindungi kemampuan pengiriman email Anda, kepercayaan pelanggan Anda, dan uptime layanan Anda. Terapkan bot ini hari ini, jaga dependensi Anda tetap terbaru, dan perluas seiring waktu seiring pertumbuhan kebutuhan pemantauan Anda.
untuk semua layanan hosting