müminbiri
- 13 Ağu 2025
- 1,330 Mesaj
- TIM Görevleri
- 1
Aktiflik
Seviye
Deneyim
İ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).
cd dead-link-checker
npm install
Node.js 18 veya daha yeni bir sürümünü kullanın (Node 20 önerilir).
node src/index.js https://example.com
Bu şunları sağlayacak:
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.
# 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 :
Would you like to save the results? (json/csv/enter for console only):
.
├─ 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)
npm run lint
Kaynak dosyaları Prettier ile biçimlendirin:
npm run format
npm test
Testler, temel URL mantığına odaklanır ve daha fazla uç durum eklemek için iyi bir başlangıç noktasıdır.
Kişisel veya ticari projelerinizde kullanabilirsiniz. Sadece lisans dosyasını saklayın.
İçeriği görüntülemek için Giriş yapın veya Kayıt olun.
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.gitcd 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.
