Anonymität beim Lesen: Feedlane jetzt mit Media-Proxy
Simon
Beim Lesen eines Artikels passiert im Hintergrund mehr, als man denkt. Der Text kommt aus dem Feed und wird sauber von Feedlane ausgeliefert. Die Bilder im Artikel werden aber nicht mit ausgeliefert. Im Feed steht nur ein Verweis darauf, wo das jeweilige Bild auf der Originalseite liegt. Dein Browser holt sich die Bilder also einzeln und direkt vom Server der Quelle nach. Das fällt im Alltag nicht auf, ist aus Sicht der Privatsphäre aber nicht optimal: der Betreiber der Seite (und jedes Werbenetz im Hintergrund) sieht deine IP, deinen User-Agent, den Zeitpunkt, und Tracking-Pixel funktionieren so wie sie sollen. In einem Artikel können durchaus mehrere Bilder enthalten sein, und oft sind auch unsichtbare 1×1-Pixel-Tracker mit dabei. Bei einem Reader, der "Privacy-first" verspricht, ist das für mich eine Lücke und bisher nicht optimal gelöst.
Was sich ändert
Ab jetzt laufen alle Artikel-Bilder und alle Feed-Favicons durch den Feedlane-Server. Dein Browser fragt nicht mehr die Originalseite nach einem Bild, sondern feedlane.app. Wir holen die Bytes serverseitig und reichen sie an dich weiter. Die Quelle sieht nur noch eine einzige IP, nämlich unsere, egal wie viele Nutzer gerade lesen. Tracking-Pixel werden dadurch wertlos: sie sehen für jeden Leser gleich aus, ein konkretes Profil lässt sich daraus nicht mehr bauen.
Sichtbar ändert sich für dich beim Lesen erst mal nichts. Im Idealfall merkst du den Unterschied gar nicht. Bilder laden weiterhin, in vielen Fällen sogar etwas schneller, weil aggressivere Cache-Header gesetzt werden und Folge-Aufrufe direkt aus dem Browser-Cache kommen. Ein netter Nebeneffekt: HTTP-Bilder auf HTTPS-Seiten (das berüchtigte "Mixed Content") sind kein Problem mehr, weil wir alles über unseren HTTPS-Server ausliefern.
Wie das technisch läuft
Jede Bild-URL im Artikel wird beim Parsen ersetzt durch eine HMAC-signierte Proxy-URL (/api/v1/img?u=…&s=…). Beim Abruf prüft der Server die Signatur, validiert das Ziel (kein localhost, keine privaten IPs, also SSRF-Schutz) und streamt das Bild durch. Cookies und ähnliche Verräter-Header werden in beide Richtungen gestrippt. SVG ist explizit gesperrt, weil SVG-Dateien JavaScript enthalten können. Maximalgröße 10 MB, 30 Tage Browser-Cache.
Favicons funktionieren etwas anders, weil sie millionenfach geladen werden. Jeder Sidebar-Eintrag ist eines. Statt sie jedes Mal frisch zu proxien, lädt Feedlane sie einmalig beim Hinzufügen eines Feeds runter, speichert die Bytes in der Datenbank und liefert sie aus dem Cache. Ein Hintergrund-Job hält den Cache periodisch aktuell. Ändert eine Seite ihr Favicon, übernimmt Feedlane die neue Version automatisch beim nächsten Refresh.
Das Ganze funktioniert übrigens auch für Mobile-Apps, die Feedlane über die Fever-API anbinden. Bilder und Favicons werden auch dort durch unseren Server geladen. Wer Feedlane in einer App wie Reeder oder Unread nutzt, profitiert vom selben Schutz.
