
Die Identifizierung von Syndication-Feeds (RSS, Atom, JSON) stellt Entwickler oft vor Herausforderungen. Trotz Standards wie dem <link rel="alternate">-Tag ist die Implementierung im Web inkonsistent.
Das Problem: Inkonsistente Metadaten
Viele Webseiten verzichten auf korrekte Header-Deklarationen oder nutzen proprietäre Pfade für ihre Feeds. Ein einfacher GET-Request auf /rss reicht in der Produktion nicht aus. feedseeker löst dies durch eine mehrstufige Heuristik:
1. Meta-Links
Die schnellste Methode. Sucht nach <link>-Tags mit rel="alternate" und Feed-MIME-Typen:
application/rss+xmlapplication/atom+xmlapplication/json
2. Anker-Analyse (Anchor Analysis)
Durchsucht Anker-Tags (<a>) nach URLs, die aufgrund folgender Merkmale wie Feeds aussehen:
- Häufige Feed-Pfade (
/feed,/rss,/atom, etc.) - Feed-typische Dateiendungen (
.xml,.rss,.atom) - Feed-Schlüsselwörter in den URLs
3. Blindsuche (Blind Search)
Testet hunderte gängiger Muster für Feed-Endpunkte:
/feed,/rss,/atom,/feeds- WordPress-Muster (
/feed/,/comments/feed) - Kategorie- oder Tag-Feeds (
/category/*/feed) - Pfade mit Jahreszahlen (
/2024/feed) - Und viele weitere Variationen
4. Tiefensuche (Deep Search / Crawling)
Durchsucht die Website rekursiv (Crawling), um Feeds zu entdecken:
- Folgt internen Links bis zu einer festgelegten Tiefe
- Prüft jede Seite auf Feeds
- Konfigurierbare Tiefe und Link-Limits
- Berücksichtigt die Same-Domain-Beschränkung
Installation
npm install feedseekerProgrammatische Implementierung
Ein einfaches Beispiel:
const seeker = new FeedSeeker("https://example.com");
await seeker.initialize();
// Meta links (fastest, checks HTML <link> tags)
const metaFeeds = await seeker.metaLinks();
// Anchor search (checks <a> tags for feed-like URLs)
const anchorFeeds = await seeker.checkAllAnchors();
// Blind search (tries common feed endpoint patterns)
const blindFeeds = await seeker.blindSearch();
// Deep search (crawls website for feeds)
// Options are passed via constructor, e.g. new FeedSeeker(url, { maxDepth: 2, maxLinks: 50 })
const deepFeeds = await seeker.deepSearch();Eine detalliertere Beschreibung befindet sich auf der npm-Seite.
Client
Das Paket enthält einen ausführlichen Client, mit dem man in der Kommandazeile eines Terminals nach den Feeds einer Webseite suchen kann:
node feedseeker-cli.js elektroelch.de
____________ .____________ __
\_ _____/___ ____ __| _/ _____/ ____ ____ | | __ ___________
| __)/ __ \_/ __ \ / __ |\_____ \_/ __ \_/ __ \| |/ // __ \_ __ \
| \\ ___/\ ___// /_/ |/ \ ___/\ ___/| <\ ___/| | \/
\___ / \___ >\___ >____ /_______ /\___ >\___ >__|_ \\___ >__|
\/ \/ \/ \/ \/ \/ \/ \/ \/
Starting Meta Links ......... Found 5 feeds.
Comments on: Main
https://elektroelch.de/main-2/feed/json/
Kommentare für elektro:elch
https://elektroelch.de/comments/feed/
elektro:elch
https://elektroelch.de/feed/
Kommentare zu: Main
https://elektroelch.de/main-2/feed/
elektro:elch
https://elektroelch.de/feed/json/👉 Jetzt ausprobieren auf npmjs.com/package/feedseeker
Schreibe einen Kommentar