SiberGüvenlik Başkanlığı — Blocklist API
Exploit / Proje Detayları
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=1000parametresiyle ç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.logdosyası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ı