SiberGüvenlik Başkanlığı — Blocklist API | Tağmaç - root@Tagoletta:~#

SiberGüvenlik Başkanlığı — Blocklist API

Exploit / Proje Detayları

Python Mon Jul 20 2026

T.C. Siber Güvenlik Başkanlığı tehdit istihbaratı listelerini otomatik çeken, zaman penceresine göre filtreleyen ve güvenlik duvarları için ham metin olarak yayınlayan açık kaynak araç. Beş adres tipi, zaman pencereli listeler (30/60/90/120 gün ve full), GitHub Actions ile saatlik güncelleme — sunucu gerekmez. pfSense, OPNsense, MikroTik, Pi-hole, ipset ve Squid'e doğrudan beslenebilen ~483.000 kayıt.

Detailed Write-up

Proje Özeti

SiberGüvenlik Başkanlığı — Blocklist API, https://siberguvenlik.gov.tr/api/address/index adresindeki genel API'den beş farklı adres tipini (domain, url, ip, ip6, ip6net) çeken, her kaydı orijinal tarihiyle bir veritabanında saklayan ve her çalışmada zaman penceresine göre güncel, güvenlik duvarına hazır blocklist'ler üreten açık kaynaklı bir araçtır.

Not: Bu, T.C. Siber Güvenlik Başkanlığı'nın resmî olmayan, topluluk tarafından bakımı yapılan bir yansıma (mirror) aracıdır. Tüm veriler resmî genel API'den alınır.

Sunucu gerekmez. GitHub Actions saatlik olarak çalışır, yenilenen listeleri data/ klasörüne commit eder; güvenlik duvarınız listeleri doğrudan ham GitHub URL'sinden çekebilir.


Canlı Kayıt Sayıları

Aşağıdaki tablo her bot commit'inde otomatik güncellenir ve her zaman penceresindeki yayınlanan listelerin gerçek, filtreleme sonrası satır sayılarını gösterir:

Tip 30g 60g 90g 120g Full
🌐 Domain 4.571 8.761 14.325 19.520 460.771
🔗 URL 0 0 0 0 6.927
📡 IPv4 294 675 1.050 1.244 14.966
🧭 IPv6 0 0 0 0 6
🕸️ IPv6 Ağ 0 0 0 0 0
Toplam 4.865 9.436 15.375 20.764 482.670

Çıktı Dosyaları

Her adres tipi ayrı bir dosyada, her zaman penceresi için ayrı ayrı tutulur (data/ klasörü):

Pencere Domainler URL'ler IPv4 IPv6 IPv6 Ağları
Tüm zamanlar full-domains.txt full-urls.txt full-ips.txt full-ip6.txt full-ip6net.txt
Son 30 gün days-30-domains.txt days-30-urls.txt days-30-ips.txt days-30-ip6.txt days-30-ip6net.txt
Son 60 gün days-60-domains.txt days-60-urls.txt days-60-ips.txt days-60-ip6.txt days-60-ip6net.txt
Son 90 gün days-90-domains.txt days-90-urls.txt days-90-ips.txt days-90-ip6.txt days-90-ip6net.txt
Son 120 gün days-120-domains.txt days-120-urls.txt days-120-ips.txt days-120-ip6.txt days-120-ip6net.txt

Her dosya: satır başına bir kayıt, tırnak yok, boşluk yok, LF satır sonu. Domain'ler alfabetik, IP'ler sayısal sıralı. database-*.jsonl (250.000 kayıtlık parçalar) ve _state.json dahili kayıt dosyalarıdır; güvenlik duvarları bunları görmezden gelir.


Güvenlik Duvarı Kullanımı

Listeleri doğrudan ham GitHub URL'sinden çekin:

https://raw.githubusercontent.com/Tagoletta/SiberGuvenlikBaskanligi-API/main/data/full-domains.txt
https://raw.githubusercontent.com/Tagoletta/SiberGuvenlikBaskanligi-API/main/data/days-30-domains.txt
https://raw.githubusercontent.com/Tagoletta/SiberGuvenlikBaskanligi-API/main/data/full-ips.txt
https://raw.githubusercontent.com/Tagoletta/SiberGuvenlikBaskanligi-API/main/data/full-urls.txt

pfSense, OPNsense, MikroTik, ipset, Pi-hole, Squid ve benzeri sistemlerle uyumludur.


Nasıl Çalışır?

  • İlk çalışma (henüz full liste yok): tüm tipler için tam tarama başlar. Her tip per-page=1000 parametresiyle çekilir (toplam ~481 sayfa). Ortalama 5–12 s/sayfa hızıyla ilk tarama ~1–2 saatte tamamlanır.
  • Tam tarama sonrası: her saatlik çalışmada yalnızca yeni sayfalar çekilir (incremental) ve listeler yeniden üretilir.
  • Her 7 günde bir: kaynaktan silinen kayıtları yakalamak için tam yeniden tarama yapılır. Silinen kayıtlar data/removed.log dosyasına eklenir.

Yaşlandırma mantığı: Listeler her çalışmada veritabanı + güncel saat üzerinden türetilir. 31 günlük olan bir kayıt days-30-*'dan düşer ama days-60-*, days-90-*, days-120-* ve full-*'da kalmaya devam eder. Hiçbir kayıt geniş pencerelerden kaybolmaz.


Yapılandırma

Değişken Varsayılan Açıklama
MIN_DELAY / MAX_DELAY 5 / 12 Tam tarama sırasında sayfalar arası saniye
INC_MIN_DELAY / INC_MAX_DELAY 2 / 6 Incremental sırasında sayfalar arası saniye
TIME_BUDGET_SECONDS 18000 Tam taramayı bu süre sonunda checkpoint'le
FULL_RESYNC_DAYS 7 Silinenleri yakalamak için tam yeniden tarama periyodu (0 = kapalı)
INCREMENTAL_MAX_PAGES 50 Çalışma başına tip başına incremental sayfa güvenlik sınırı
PER_PAGE 1000 API sayfa başına kayıt (API'nin desteklediği maksimum)
DATA_DIR data Çıktı klasörü
USER_AGENT Chrome/138 İstek User-Agent'ı

Kurulum ve Çalıştırma

Docker (isteğe bağlı): GitHub Actions kullanıyorsanız Docker gerekmez. Kendi sunucunuzda çalıştırmak için:

docker compose up -d --build
docker compose logs -f

Docker'sız yerel çalıştırma:

pip install -r scraper/requirements.txt
DATA_DIR=data python scraper/fetch.py

GitHub Actions: .github/workflows/update-lists.yml her saat çalışır. İlk çalışmalar devam ettirilebilir tam taramayı yapar; tamamlandıktan sonra her saatlik çalışma hızlı bir incremental güncellemedir ve README'deki canlı sayıları tazeler.


Veri Kaynağı

Tüm veriler resmî genel API'den alınır:

GET https://siberguvenlik.gov.tr/api/address/index?type={domain|url|ip|ip6|ip6net}&page={n}&per-page=1000

API dokümantasyonu: https://siberguvenlik.gov.tr/api/openapi.yaml


Teknoloji: Python 3.12 · GitHub Actions (saatlik) · Docker · JSONL veritabanı (250K kayıtlık parçalar) · GPLv3 lisansı

GitHub