Telegram Botunuzu Oluşturun ve VPS’de IPv4 Kara Listelerini İzleyin
IP adresinizi spam kara listelerinden uzak tutmak, e-posta teslim edilebilirliği, hizmet itibarı ve kesintisiz işlemler için kritik öneme sahiptir. İster bir mail sunucusu, ister bir SaaS platformu veya bir web uygulaması çalıştırıyor olun, tek bir kara liste girişi giden e-postalarınızı sessizce engelleyebilir ve müşteri güvenini bir gecede zedeleleyebilir. Bu kapsamlı kılavuzda, herhangi bir IPv4 adresini ana spam veritabanlarına karşı otomatik olarak kontrol eden ve güvenilir bir VPS üzerinde çalışan tam işlevli bir Telegram botu nasıl oluşturacağınızı ve dağıtacağınızı öğreneceksiniz.
IPv4 Kara Listesi İzlemesi Neden Otomatikleştirilmeli?
Manuel kara liste kontrolleri sıkıcı ve unutması kolay. Süreci bir Telegram botu aracılığıyla otomatikleştirerek şunları elde edersiniz:
- Anında talep üzerine kontroller — telefonunuzdan veya masaüstünüzden herhangi bir IP’yi sorgulayın
- Gerçek zamanlı geri bildirim — sonuçlar Telegram içinde saniyeler içinde iletilir
- Sıfır altyapı yükü — bot sunucunuzda arka planda sürekli çalışır
- Ölçeklenebilirlik — botu daha sonra zamanlanmış uyarılar, webhook entegrasyonları veya çoklu IP toplu kontrolleriyle genişletin
Spamhaus, SpamCop, StopForumSpam veya Blocklist.de gibi veritabanlarında listelenen bir IP, e-posta teslim hatalarına, hizmet askıya almalarına ve itibar kaybına neden olabilir. Proaktif izleme, reaktif hasar kontrolünden çok daha ucuzdur.
AlexHost VPS’de Neden Dağıtım Yapmalısınız?
Bir Telegram botunu çalıştırmak, 24/7 çevrimiçi kalan, hızlı yanıt veren ve özel bağımlılıkları yüklemek için tam root erişimi sağlayan bir sunucu gerektirir. AlexHost VPS Hosting tam olarak bunu sağlar — hızlı I/O için NVMe SSD depolama, kurumsal düzeyde DDoS koruması ve Python, Selenium, tarayıcı sürücüleri ve diğer herhangi bir aracı kısıtlama olmaksızın yükleyebilmeniz için tam root erişimi.
Kaynak sınırlamalarının botunuzun performansını kısıtlayabileceği paylaşılan ortamların aksine, özel bir VPS uygulamanıza tutarlı CPU ve RAM tahsisi sağlar. Yönetilen bir kontrol paneli deneyimini tercih ederseniz, cPanel ile VPS de mevcuttur ve komut satırı ile daha az rahat olanlar için bile sunucu yönetimini erişilebilir hale getirir.
Ön Koşullar
Kod yazmaya başlamadan önce, sunucunuzda aşağıdakilerin hazır olduğundan emin olun:
Sistem Gereksinimleri
| Gereksinim | Minimum Sürüm |
|---|---|
| Python | 3.7 veya üstü |
| pip | En son kararlı sürüm |
| Google Chrome | En son kararlı sürüm |
| ChromeDriver | Chrome sürümüyle eşleşen |
| OS | Ubuntu 20.04+ / Debian 11+ |
Python Kütüphanelerini Yükleyin
VPS’inize SSH üzerinden bağlanın ve gerekli Python paketlerini yüklemek için aşağıdaki komutları çalıştırın:
pip install selenium
pip install aiogram==3.4.1- Selenium — MXToolbox’tan kara liste kontrol sonuçlarını kazımak için tarayıcı etkileşimlerini otomatikleştirir
- aiogram 3.4.1 — Telegram Bot API için modern, async-first Python çerçevesi
Google Chrome ve ChromeDriver’ı Yükleyin (Headless)
Selenium, JavaScript-ağır sayfaları işlemek için gerçek bir tarayıcı gerektirir. Linux sunucunuzda Chrome’u headless modda yükleyin:
# 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 --versionArdından eşleşen ChromeDriver’ı yükleyin:
# 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/chromedriverAdım 1 — BotFather ile Telegram Bot’unuzu Oluşturun
Her Telegram bot’u BotFather ile başlar — bot’ları kaydetmek ve yönetmek için resmi Telegram bot’u.
1.1 Telegram’ı açın ve @BotFather araması yapın (doğrulanmış mavi onay işaretini arayın).
1.2 Bir sohbet başlatın ve şu komutu gönderin:
/newbot1.3 İstemleri izleyin:
- Bot’unuz için bir görünen ad girin (örneğin,
IP Blacklist Monitor) botile biten bir benzersiz kullanıcı adı girin (örneğin,ip_blacklist_monitor_bot)
1.4 BotFather şuna benzer bir onay mesajı ile yanıt verecektir:
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.Bu API token’ını güvenli bir şekilde kopyalayın ve kaydedin. Bir sonraki adımda buna ihtiyacınız olacak. Asla bunu genel bir depoya yüklemeyin.
Adım 2 — Bot Kodunu Yazın
VPS’inizde yeni bir Python dosyası oluşturun:
nano ~/my_bot.pyAşağıdaki tam, üretime hazır kodu yapıştırın:
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())Kaydedin ve çıkın (Ctrl+O, Enter, Ctrl+X nano’da).
Adım 3 — Bot Token’ını Güvenli Şekilde Yapılandırın
Komut dosyasındaki YOUR_BOT_TOKEN_HERE yerine BotFather’dan aldığınız token’ı yazın. Üretim dağıtımları için, token’ı sabit kodlamak yerine bir ortam değişkeni kullanmanız şiddetle önerilir:
export TELEGRAM_BOT_TOKEN="7123456789:AAFxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"Ardından kod satırını şu şekilde güncelleyin:
import os
BOT_TOKEN = os.environ.get('TELEGRAM_BOT_TOKEN')Bu, kodunuz hiç paylaşılırsa veya sürüm kontrolüne alınırsa token’ın yanlışlıkla açığa çıkmasını önler.
Adım 4 — Botu Arka Plan Hizmeti Olarak Çalıştırın
SSH oturumunuzu kapattıktan sonra botu sürekli olarak çalışır durumda tutmak için, bunu bir systemd hizmeti olarak ayarlayın:
sudo nano /etc/systemd/system/ipblacklist-bot.serviceAşağıdaki yapılandırmayı yapıştırın:
[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.targetHizmeti etkinleştirin ve başlatın:
sudo systemctl daemon-reload
sudo systemctl enable ipblacklist-bot
sudo systemctl start ipblacklist-bot
# Verify it is running
sudo systemctl status ipblacklist-botBotunuz artık çökmesi durumunda otomatik olarak yeniden başlayacak ve her sunucu yeniden başlatılışında başlayacaktır.
Adım 5 — Botu Test Edin
- Telegram’ı açın ve botunuzu kullanıcı adıyla arayın
/startgönderin — hoş geldiniz mesajını almalısınız- Herhangi bir IPv4 adresi gönderin (örneğin,
8.8.8.8) - 15–20 saniye içinde, IP’nin hangi kara listelerde yer aldığını (❌) ve hangilerini geçtiğini (✅) gösteren biçimlendirilmiş bir liste alacaksınız
Kod Mimarisi Özeti
| Bileşen | Rol |
|---|---|
aiogram | Asenkron Telegram Bot API çerçevesi — mesaj yönlendirmesi ve yoklamayı yönetir |
Selenium + Chrome | MXToolbox sonuçlarını işleyen ve kazıyan başsız tarayıcı |
get_chrome_driver() | Chrome’u başsız sunucu işlemi için yapılandırır |
get_results(ip) | Temel kazıma işlevi — MXToolbox’a gider ve durum verilerini çıkarır |
handle_start() | /start ile kullanım talimatlarıyla yanıt verir |
handle_ip_check() | IP girişi alır, kontrolü asenkron olarak çalıştırır, biçimlendirilmiş çıktı döndürür |
run_in_executor() | Engelleme Selenium çağrısını bir iş parçacığı havuzuna aktarır, asenkron döngüyü duyarlı tutar |
systemd hizmeti | Botun sürekli çalışmasını sağlar ve hata durumunda otomatik olarak yeniden başlatır |
Güvenlik ve Uyum Konuları
Bir VPS’den harici hizmetlerle etkileşime giren bir bot çalıştırmak sorumluluklar getirir:
- Bot tokeninizi koruyun — bunu bir şifre gibi değerlendirin. Tehlikeye girerse BotFather aracılığıyla hemen döndürün.
- Kullanıcı girişini doğrulayın — beklenmeyen davranışları önlemek için kullanıcı girişini Selenium’a geçirmeden önce IP adresi biçimi doğrulaması ekleyin.
- Hız sınırlaması — botunuzun ve sunucunuzun kaynaklarının kötüye kullanılmasını önlemek için kullanıcı başına hız sınırları eklemeyi düşünün.
- Bağımlılıkları güncel tutun — güvenlik açıklarını yamalamak için
aiogram,seleniumve Chrome’u düzenli olarak güncelleyin. - VPS’inizi güvenlik duvarıyla koruyun — gelen bağlantı noktalarını yalnızca gerekli olanlara kısıtlayın (SSH ve botunuzun giden bağlantıları).
Altyapınız ayrıca e-posta işliyorsa, bu botu düzgün şekilde güvenli bir posta ortamıyla eşleştirmek gereklidir. AlexHost Email Hosting yönetilen, spam politikasına uygun bir ortam sağlar ve gönderme IP’lerinizin baştan kara listeye girmesi riskini azaltır.
Botunuzun altyapısının yanında SSL ile güvenli bir alan gerektiren projeler için, AlexHost SSL Certificates ve Domain Registration tam olarak güvenilir bir web varlığı oluşturmayı kolaylaştırır.
AlexHost’un Spam ve Kara Liste Politikası
AlexHost, tüm ağı genelinde katı bir spam yasağı politikası uygular. IP kara listelemesine neden olan herhangi bir faaliyet — toplu istenmeyen e-posta, forum spam veya Spamhaus, SpamCop, StopForumSpam, Blocklist.de veya benzer veritabanları tarafından işaretlenen istismar dahil — kesinlikle yasaktır. İhlal bulunan hizmetler, paylaşılan ağ altyapısının bütünlüğünü ve tüm müşterilerin itibarını korumak için derhal askıya alınır.
Bu, bu kılavuzda açıklanan bot gibi bir araçla proaktif izlemeyi, yalnızca yararlı değil, aynı zamanda sorumlu sunucu işletimi için gerekli kılar.
Botu Genişletme — Gelecek Geliştirme İçin Fikirler
Temel botunuz çalışmaya başladığında, şu geliştirmeleri göz önünde bulundurun:
- Zamanlanmış izleme — sunucu IP’lerinizi her 6 veya 24 saatte otomatik olarak kontrol etmek ve yalnızca yeni bir listeleme algılandığında sizi uyarmak için
apschedulerkullanın - Çoklu IP toplu kontrolleri — tek bir mesajda virgülle ayrılmış IP listesini kabul edin
- Kalıcı günlüğe kaydetme — kontrol sonuçlarını SQLite veya PostgreSQL veritabanında depolamak için tarihsel trend analizi yapın
- Webhook modu — uzun yoklama yerine webhook’lara geçerek daha düşük gecikme süresi ve azaltılmış sunucu yükü sağlayın
- Ek veri kaynakları — tarayıcı otomasyonu olmadan daha yetkili sonuçlar için AbuseIPDB veya Spamhaus API’lerini doğrudan entegre edin
Sonuç
IPv4 kara listelerini izlemek için bir Telegram botu oluşturmak, herhangi bir sistem yöneticisinin veya geliştiricisinin bir öğleden sonra içinde tamamlayabileceği pratik, yüksek değerli bir otomasyon projesidir. Python, aiogram ve Selenium ile bir AlexHost VPS üzerinde çalışan, Telegram istemcinize doğrudan sonuç sunan kalıcı, duyarlı bir izleme aracı elde edersiniz — kontrol edilecek pano yok, manuel arama gerekli değil.
Proaktif IP itibar yönetimi, e-posta teslim edilebilirliğinizi, müşterilerinizin güvenini ve hizmetinizin çalışma süresini korur. Bu botu bugün dağıtın, bağımlılıklarınızı güncelleyin ve izleme ihtiyaçlarınız büyüdükçe zaman içinde genişletin.
tasarruf edin