Bilgisayarınız arka planda hangi programların internete bağlandığını hiç merak ettiniz mi? İndirme ve yükleme hızlarınız neden düşük? Hangi uygulama ne kadar bant genişliği kullanıyor? Bu sorulara cevap vermek için genellikle pahalı yazılımlar veya karmaşık araçlar gerekiyor gibi görünse de, aslında sadece birkaç satır Python kodu ile kendi ağ izleme aracınızı yazabilirsiniz.
Bu yazıda, Python ile geliştirdiğim “AG İzleyici” adlı ağ izleme aracını tanıtacağım. Bu araç sayesinde bilgisayarınızdaki tüm ağ bağlantılarını, anlık download/upload hızlarını, hangi programların internete bağlandığını ve ağ arayüzlerinizin durumunu gerçek zamanlı olarak izleyebilirsiniz.
AG İzleyici Nedir?
AG İzleyici, Python programlama dili ile yazılmış, terminal tabanlı bir ağ izleme aracıdır. Özellikle:
- Anlık internet hızınızı (download/upload) görmenizi sağlar
- Arka planda internete bağlanan tüm programları listeler
- Her programın hangi IP adresine bağlandığını gösterir
- Ağ arayüzlerinizin (Ethernet, Wi-Fi) durumunu izler
- 10 saniyede bir otomatik olarak güncellenir
- Tek bir sayfada, kaymadan sabit görüntü sunar
Ne İşe Yarar?
- Güvenlik Kontrolü
Bilgisayarınızda çalışan gizli bir program var mı? Hangi uygulama bilinmeyen bir sunucuya bağlanıyor? AG İzleyici sayesinde tüm bağlantıları anlık olarak görebilir, şüpheli bağlantıları tespit edebilirsiniz.
Örneğin aşağıdaki ekran çıktısında:
- Epic Games, Steam, OneDrive gibi tanıdık programlar görünüyor
- claude.exe’nin 160.79.104.10 adresine bağlandığı görülüyor
- qbittorrent.exe’nin aktif bağlantı beklediği görülüyor
Bu bilgiler sayesinde tanımadığınız bir program sunucuya bağlanıyorsa hemen fark edebilirsiniz.
- İnternet Hızı İzleme
Download ve upload hızlarınızı anlık olarak takip edebilirsiniz. Özellikle büyük dosya indirirken veya yüklerken hangi programın ne kadar bant genişliği kullandığını görmek çok değerlidir. - Ağ Sorunlarını Tespit Etme
İnternet yavaşladığında hangi programın ağı doldurduğunu kolayca bulabilirsiniz. Örneğin arka planda çalışan bir güncelleme servisi tüm bant genişliğini kullanıyor olabilir. - Sistem Yönetimi
Svchost.exe, lsass.exe gibi sistem süreçlerinin hangi portları dinlediğini ve nereye bağlandığını görebilirsiniz. Bu bilgiler sistem yöneticileri için çok değerlidir. - Oyun ve Uygulama Performansı
Oyun oynarken veya video konferans yaparken arka plandaki uygulamaların ağ kullanımını izleyebilir, gereksiz uygulamaları kapatarak performansı artırabilirsiniz.
Ne Zaman Kullanılmalı?
- İnternet yavaş geldiğinde: Hangi program ağı tıkıyor?
- Güvenlik endişesi olduğunda: Bilmediğim bir program mı bağlanıyor?
- Oyun oynarken ping yüksekse: Arka planda ne var?
- Büyük dosya indirirken hız düşükse: Başka neler indiriyor?
- Sistem yöneticisiyseniz: Sunucuyu kim kullanıyor?
- Ağ yapılandırması değiştirdikten sonra: Her şey doğru çalışıyor mu?
Araçtan Gerçek Ekran Görüntüsü
Aşağıda AG İzleyici’nin gerçek bir bilgisayarda çalışırken aldığı çıktıyı görebilirsiniz:
======================================================================
AG IZLEYICI - 15:16:34 (10 saniyede bir guncellenir)
Download Hizi : 233.0 B/s
Upload Hizi : 695.0 B/s
Toplam Alinan : 3.8 GB
Toplam Gonden : 353.2 MB
Paket Alinan : 3,123,138
Paket Gonden : 1,053,511
PROGRAM PID DURUM UZAK ADRES
EpicGamesLauncher.exe 15980 ESTABLISHED 52.206.16.89:443
EpicWebHelper.exe 5520 ESTABLISHED 104.18.124.108:443
OneDrive.exe 12968 ESTABLISHED 98.66.133.184:443
msedge.exe 6908 ESTABLISHED 2.19.196.88:443
opera.exe 10940 ESTABLISHED 87.250.250.119:443
steam.exe 9672 ESTABLISHED 155.133.229.20:443
explorer.exe 7740 ESTABLISHED 2.19.196.113:443
Network Arayuzleri:
Ethernet IP: 192.168.0.90 Hiz: 1000 Mbps AKTIF
VMware Network Adapter VMnet1 IP: 192.168.24.1 Hiz: 100 Mbps AKTIF
VMware Network Adapter VMnet8 IP: 192.168.65.1 Hiz: 100 Mbps AKTIF
Loopback Pseudo-Interface 1 IP: 127.0.0.1 Hiz: 1073 Mbps AKTIF
Ctrl+C ile durdurun
Bu çıktıdan neler okuyabiliriz?
- Download hızı çok düşük (233 B/s): Şu an aktif bir indirme yok
- Upload hızı biraz daha yüksek (695 B/s): Küçük veriler gönderiliyor
- Toplam 3.8 GB veri alınmış: Sistem açılışından bu yana
- Epic Games, Steam, OneDrive aktif bağlantıda
- claude.exe (Claude yapay zeka uygulaması) 160.79.104.10 adresine bağlı
- Ethernet 1000 Mbps hızında aktif
- VMware sanal ağ adaptörleri de aktif görünüyor
Kurulum Gereksinimleri
Bu aracı kullanabilmek için bilgisayarınızda şunların kurulu olması gerekiyor:
Adım 1: Python Kur
python.org adresinden Python 3.x sürümünü indirin.
Kurulum sırasında “Add Python to PATH” seçeneğini mutlaka işaretleyin.
Adım 2: Gerekli Paketleri Kur
CMD veya PowerShell’i yönetici olarak açın ve şu komutu çalıştırın:
python -m pip install psutil windows-curses
Bu iki paket ne işe yarar?
- psutil: Sistem ve ağ bilgilerini okur (CPU, RAM, ağ bağlantıları)
- windows-curses: Terminal ekranını sabit tutarak kaymadan güncelleme yapar
Adım 3: Scripti Çalıştır
python deneme.py
Not: Tüm programları görmek için CMD veya PowerShell’i yönetici olarak çalıştırmanız önerilir. Aksi halde bazı sistem süreçleri görünmeyebilir.
Kodun Tamamı
Aşağıda AG İzleyici’nin tam kaynak kodunu bulabilirsiniz. Bu kodu deneme.py adıyla kaydedin ve çalıştırın:
import psutil
import time
import curses
from datetime import datetime
def bytes_to_human(n):
for unit in ['B', 'KB', 'MB', 'GB']:
if n < 1024:
return f"{n:.1f} {unit}"
n /= 1024
return f"{n:.1f} TB"
def get_network_processes():
processes = {}
for conn in psutil.net_connections(kind='all'):
try:
if conn.pid and conn.pid != 0:
proc = psutil.Process(conn.pid)
name = proc.name()
status = conn.status if conn.status else "UDP"
raddr = f"{conn.raddr.ip}:{conn.raddr.port}" if conn.raddr else "-"
if name not in processes:
processes[name] = []
processes[name].append({
"pid": conn.pid,
"status": status,
"raddr": raddr
})
except (psutil.NoSuchProcess, psutil.AccessDenied):
pass
return processes
def draw(stdscr):
curses.curs_set(0)
stdscr.nodelay(True)
while True:
net1 = psutil.net_io_counters()
time.sleep(10)
net2 = psutil.net_io_counters()
download = (net2.bytes_recv - net1.bytes_recv) // 10
upload = (net2.bytes_sent - net1.bytes_sent) // 10
stdscr.erase()
h, w = stdscr.getmaxyx()
row = 0
def yaz(metin):
nonlocal row
if row < h - 1:
stdscr.addstr(row, 0, metin[:w-1])
row += 1
yaz("=" * 70)
yaz(f" AG IZLEYICI - {datetime.now().strftime('%H:%M:%S')} (10 saniyede bir guncellenir)")
yaz("=" * 70)
yaz(f" Download Hizi : {bytes_to_human(download)}/s")
yaz(f" Upload Hizi : {bytes_to_human(upload)}/s")
yaz(f" Toplam Alinan : {bytes_to_human(net2.bytes_recv)}")
yaz(f" Toplam Gonden : {bytes_to_human(net2.bytes_sent)}")
yaz(f" Paket Alinan : {net2.packets_recv:,}")
yaz(f" Paket Gonden : {net2.packets_sent:,}")
yaz("=" * 70)
yaz("")
yaz(f" {'PROGRAM':<25} {'PID':<8} {'DURUM':<15} {'UZAK ADRES'}")
yaz("-" * 70)
processes = get_network_processes()
for name, conns in sorted(processes.items()):
for conn in conns[:2]:
yaz(f" {name:<25} {conn['pid']:<8} {conn['status']:<15} {conn['raddr']}")
yaz("")
yaz(" Network Arayuzleri:")
yaz("-" * 70)
for iface, stats in psutil.net_if_stats().items():
addrs = psutil.net_if_addrs().get(iface, [])
ip = next((a.address for a in addrs if a.family == 2), "-")
durum = "AKTIF" if stats.isup else "KAPALI"
yaz(f" {iface:<20} IP: {ip:<18} Hiz: {stats.speed} Mbps {durum}")
yaz("")
yaz(" Ctrl+C ile durdurun")
stdscr.refresh()
key = stdscr.getch()
if key == ord('q'):
break
def main():
try:
curses.wrapper(draw)
except KeyboardInterrupt:
print("\nDurduruldu.")
if __name__ == "__main__":
main()
Kodun Açıklaması
- bytes_to_human() fonksiyonu
- Ham byte değerini okunabilir formata çevirir.
- Örnek: 1048576 → 1.0 MB
- get_network_processes() fonksiyonu
- Sistemdeki tüm ağ bağlantılarını tarar.
- Her bağlantı için program adı, PID, durum ve uzak adres bilgisini toplar.
- Erişim hatalarını sessizce geçer.
- draw() fonksiyonu
- curses kütüphanesi ile terminal ekranını yönetir.
- 10 saniyede bir ağ verilerini ölçer ve ekranı günceller.
- Ekran boyutuna göre otomatik uyum sağlar.
- main() fonksiyonu
- Programı başlatır ve Ctrl+C ile düzgün şekilde kapatır.
Bağlantı Durumları Ne Anlama Gelir?
- ESTABLISHED – Program şu an aktif olarak bir sunucuya bağlı
- LISTEN – Program bağlantı bekliyor (sunucu modu)
- TIME_WAIT – Bağlantı kapanıyor, temizleniyor
- CLOSE_WAIT – Karşı taraf bağlantıyı kapattı
- NONE – UDP bağlantısı (bağlantısız protokol)
- SYN_SENT – Bağlantı kurmaya çalışıyor
Sık Karşılaşılan Sorular
- Bazı programlar neden görünmüyor?
- Yönetici yetkisi olmadan çalıştırırsanız sistem süreçleri gizlenebilir.
- Çözüm: CMD veya PowerShell’i “Yönetici olarak çalıştır” ile açın.
- windows-curses neden gerekli?
- Python’un standart curses kütüphanesi Windows’ta çalışmaz.
- windows-curses bu sorunu çözen özel bir pakettir.
- Ekran neden 10 saniyede bir güncelleniyor?
- 10 saniyelik ölçüm daha doğru ortalama hız hesabı yapar.
- 1 saniye çok kısa olduğu için anlık sapmalar yanıltıcı olabilir.
Geliştirme Fikirleri
Bu aracı daha da geliştirebilirsiniz:
- Belirli bir programa göre filtreleme eklenebilir
- Şüpheli IP adresleri kırmızıyla işaretlenebilir
- Günlük log dosyasına kayıt eklenebilir
- Belirli bir hız eşiği aşıldığında sesli uyarı verilebilir
- Grafik arayüz (GUI) ile daha görsel hale getirilebilir
Sonuç
AG İzleyici, sadece birkaç satır Python kodu ile bilgisayarınızdaki tüm ağ trafiğini şeffaf hale getiren güçlü bir araçtır. Güvenlik, performans izleme veya basit merak için olsun, bu araç size bilgisayarınızın ağ dünyasına açılan bir pencere sunar.
Kodu indirin, çalıştırın ve bilgisayarınızın arka planda neler yaptığını keşfedin. Belki de fark etmediğiniz bir program şu an sizin adınıza bir yerlere bağlanıyor olabilir.
Yorumlar