Node.js'te Link Unfurler Yazmak: OG Tag Fallback'leri ve Güvenlik
Bir sohbet uygulaması, yorum kutusu ya da bookmark servisi yapıyorsan ve yapıştırılan linklerin otomatik olarak kartlara dönüşmesini istiyorsan, link unfurler yazman gerekir. Yayıncılar Open Graph taglarını kendi sayfalarına nasıl koysun diye yazılar yazarlar; ama sen başkasının sayfasını çekip bu tagları okuyacaksın. Sorun şu: taglar eksik olabilir, yanlış kodlamada olabilir, URL'ler göreceli olabilir ya da hiç olmayabilir.
OG Scope gibi link preview araçları yapan kişi, gerçek dünyada sayfaların bu tagları ne kadar kötü yayınladığını görüyor. Makalede paylaşılan Node.js unfurler'ı beş temel işi yapıyor: sayfayı timeout ve boyut sınırıyla çekiyor, yönlendirmeleri elle yönetiyor, private ya da local adreslerden kaçınıyor (her yönlendirme hopunda), byte'ları doğru charset'le decode ediyor ve tag fallback'lerini akıllıca uyguluyor.
Örneğin, `og:image` yoksa `twitter:image`'a bakıyor, onun da yoksa sayfadaki ilk resme fallback yapıyor. Göreceli resim URL'lerini (ör. `/images/thumb.jpg`) tam URL'ye dönüştürüyor. En önemli güvenlik kısmı: 127.0.0.1, 192.168.x.x gibi private range'lere istek göndermeyip, her redirect'i kontrol ediyor, böyle saldırganlar unfurler'ı internal network taraması için kullanamıyor.
Kütüphane kullanmadan yazılı bir unfurler, her kararı görünür kılıyor. Charset detection, HTML parsing, fallback logic, hepsi senin kontrolünde. Gerçek production'da battle-tested bir kütüphane (cheerio, jsdom) kullanmak daha güvenli ama bu yaklaşım öğrenme açısından değerli: hangi edge case'lerin önemli olduğunu anlarsın.
0 yorum