9c142fa0f8005254ede614b2755f6a175b5af376
Anahtar sabit kodluydu (EKAP_R8FACT_KEY ile gecilebiliyordu). EKAP anahtari
donemsel degistiriyor; degistigi anda ihale havuzu tamamen karariyor ve birinin
elle yeni anahtari bulup env'e yazmasi gerekiyordu.
Artik kimlik dogrulama hatasindan sonra anahtar portalin kendi paketinden
kesfediliyor. Zincir canli EKAP'ta dogrulandi:
/ekap/search → <script src="main.<hash>.js">
main.<hash>.js → webpack chunk haritasi; 2076 ozel olarak "common" adiyla
yayimlaniyor: y=>(2076===y?"common":y)+"."+{...}
common.<hash>.js → r8fact:"<32 baytlik anahtar>"
Kesfedilen deger su anki sabit anahtarla birebir ayni cikti — zincir dogru.
- Kesif YALNIZCA yedek: normalde sabit/env anahtar kullanilir, kesif ancak
401/403/5xx sonrasi ve istek basina BIR KEZ denenir (gercek sunucu hatasinda
her denemede portalden uc dosya indirmeyelim)
- 5xx de tetikliyor: EKAP gecersiz anahtari bazen 401, bazen 500 ile bildiriyor
(imza cozulemeyince sifre cozme katmani patliyor); yalnizca 401'e bakmak
rotasyonun yarisini kacirirdi
- Basari 1 sa, basarisizlik 5 dk onbellekleniyor
- Anahtar 32 bayt degilse kullanilmiyor — sema degismis demektir, korlemesine
denemek yerine mevcut anahtarla devam edilir
- SPA fallback tuzagi: bilinmeyen yol HTTP 200 + index.html donduruyor; JS
beklenen isteklerde HTML gelirse hata veriliyor (sessiz basarisizlik olmasin)
Sahte rotasyon testi: bozuk anahtarla EKAP 500 dondu → kesif devreye girdi →
dogru anahtar bulundu → tekrar denendi → arama basarili (860 ms).
Bulgu kaynagi: saidsurucu/ihale-mcp taramasinda gorulen imza semasi ve
firatbadur/ihaletakip-api'nin belgeledigi rotasyon davranisi. Ilgili depo
lisanssiz oldugu icin kod kopyalanmadi, uygulama sifirdan yazildi.
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Description
ihaleist canlı ihale takip (ilan.gov.tr + EKAP doğrudan temin)
2.7 MiB
Languages
JavaScript
98.9%
HTML
0.7%
CSS
0.3%
Dockerfile
0.1%