Hoşgeldin Misafir

Web Siteleri İçin Kırık Link Tespit Aracı (Dead Link Checker CLI) - JSON/CSV Raporlama

müminbiri

müminbiri

Ne kadar sessiz olursan, o kadar çok işitebilirsin
13 Ağu 2025
1,330 Mesaj
TIM Görevleri
1

Aktiflik

Seviye

Deneyim

TIM / GÖREV:
İndirme;


Web sitelerindeki kırık linkleri tespit etmek hem SEO hem de kullanıcı deneyimi için oldukça önemli, ancak manuel kontrol epey zaman alıyor.
siteyi tarayıp çalışmayan linkleri bulan, sonuçları da JSON veya CSV formatında raporlayan bir CLI aracı hazırladık.


Node.js tabanlı bu araç, eşzamanlı tarama (concurrency) desteği sayesinde büyük sitelerde de hızlı çalışıyor ve gereksiz linkleri (mailto, tel vb.) otomatik eliyor.

KURULUM
git clone https://github.com/mehmeterenyasar/dead-link-checker.git
cd dead-link-checker
npm install

Node.js 18 veya daha yeni bir sürümünü kullanın (Node 20 önerilir).

Özellikler​

  • Aynı anda birden fazla sayfayı tarar.
    Daha büyük sitelerin daha hızlı tamamlanması için kuyruk ve eşzamanlılık kullanır.

  • Önemsiz bağlantıları atlar. mailto:, tel:, javascript:, hash bağlantılarını ve Cloudflare yollarını (örneğin .) yok sayar/cdn-cgi/* .
  • Aynı sayfayı tekrar tekrar taramayı önler.
    URL'leri normalleştirir (örneğin /, /index.html, , ve /eğik çizgiyle) ve ziyaret edilenler kümesini tutar.
  • JSON ve CSV raporları.results/
    Her rapor satırında şunlar yer alır:
    • Kaynak sayfa URL'si
    • Hedef URL
    • HTTP durumu
    • Tamam / kırık bayrak
    • Bağlantı metni (hangi bağlantı olduğunu görebilmeniz için kısaltılmıştır)
  • Test edilmiş temel URL mantığı,
    URL yardımcıları normalizeUrlve resolveUrlJest testleri mevcut.

Kurulum​

git clone https://github.com/mehmeterenyasar/dead-link-checker.git
cd dead-link-checker
npm install

Node.js 18 veya daha yeni bir sürümünü kullanın (Node 20 önerilir).


Kullanım​

Temel tarama​

Bir siteye karşı basit bir tarama işlemi gerçekleştirin:

node src/index.js https://example.com

Bu şunları sağlayacak:

  • İç sayfaları taramaya şuradan başlayarak devam ethttps://example.com
  • İç ve dış bağlantıları kontrol edin.
  • İşlem sırasında küçük bir dönen simge gösterin.
  • Terminalde özet raporu yazdırın.

Eşzamanlılık​

Aynı anda kaç sayfanın taranacağını kontrol edebilirsiniz:

node src/index.js https://example.com --concurrency 10

Daha yüksek değerler daha hızlıdır ancak hedef siteye daha fazla yük bindirir. Lütfen nazik olun ve kötüye kullanmayın.

Çıkış formatı (etkileşimli olmayan)​

Aracın her zaman raporu kaydetmesini sağlayabilirsiniz:

# Save a JSON report into results/
node src/index.js https://example.com --output json

# Save a CSV report into results/
node src/index.js https://example.com --output csv

results/Raporlar şu isimlere sahip klasörlere kaydedilir :

  • results/result-example.com-2026-01-28_13-34.json
  • results/result-example.com-2026-01-28_13-34.csv

Etkileşimli mod​

Eğer testi geçemezseniz ve aracı normal bir terminalde çalıştırırsanız, şu --outputsoruyu soracaktır:

Would you like to save the results? (json/csv/enter for console only):


  • Yazın json→ bu, JSON formatında bir rapor yazacaktır results/.
  • Yazın csv→ bu komut CSV raporunu . klasörüne yazacaktır results/.
  • Enter tuşuna basın veya başka bir şey yazın → bu işlem yalnızca konsola çıktı verecek ve dosya oluşturmayacaktır.

Proje yapısı​

Dosyaların kısa özeti:

.
├─ src/
│ ├─ index.js # CLI entry point: args, spinner, summary, calling other modules
│ ├─ crawler.js # Crawling logic: queue, workers, link extraction, visited set
│ ├─ network.js # HTTP helpers (axios config, User-Agent, status checks)
│ ├─ reporter.js # Writes JSON/CSV reports into the results/ folder
│ ├─ url.js # URL helpers: normalizeUrl, resolveUrl, getDomain
│ └─ utils.js # Small shared helpers (e.g. readline prompt)

├─ test-sandbox/ # Small static demo site for local testing
├─ tests/
│ └─ url.test.js # Jest tests for URL helpers

├─ results/ # Output reports (created at runtime)
│ └─ result-*.json / result-*.csv

├─ eslint.config.js # ESLint configuration
├─ package.json # Scripts and dependencies
└─ .github/
└─ workflows/
└─ ci.yml # GitHub Actions workflow (lint + test on push/PR)



Gelişim​

Kod denetimi ve biçimlendirme​

ESLint'i çalıştırın:

npm run lint

Kaynak dosyaları Prettier ile biçimlendirin:

npm run format

Test​

Jest test paketini çalıştırın:

npm test

Testler, temel URL mantığına odaklanır ve daha fazla uç durum eklemek için iyi bir başlangıç noktasıdır.


Lisans​

Bu proje MIT Lisansı altında yayınlanmıştır .
Kişisel veya ticari projelerinizde kullanabilirsiniz. Sadece lisans dosyasını saklayın.