Firefox-Erweiterung
Privacy Monitor
Firefox-Erweiterung · Version 1.3.0 · observe-only Privacy-Auditor. Sie zeichnet auf und erklärt. Sie blockiert keine Cookies, bricht keine Requests ab, schreibt Seiten nicht um und sendet Berichte nirgendwohin.
Wofür diese Erweiterung da ist
Privacy Monitor beantwortet eine Frage: was hat diese Site versucht, über mich zu speichern, zu kontaktieren, zu laden oder zu tracken? Jeder überwachte Tab bekommt einen Live-Report. Das Toolbar-Badge zeigt eine Zahl, farbig nach Schwere: bekannte Tracker und Fingerprinting mit hoher Konfidenz in Rot, Third-Party-Cookies in Gelb, andere Third-Party-Requests in Orange.
- Erweiterungsversion
- 1.3.0
- Mindestens Firefox
- 140+
- Max. gespeicherte Besuche
- 80
- Besuchsspeicherung
- 30 Tage
Auto monitor ist standardmäßig an und zeichnet jeden HTTP(S)-Tab beim Surfen auf. Schalten Sie es aus, wird nichts aufgezeichnet, bis Sie Scan this site im Popup oder in der Sidebar klicken. Dieser Scan macht ein Snapshot von Cookies und Storage für den aktuellen Tab und beobachtet ihn, bis der Tab geschlossen wird.
- Observe-only: kein Blockieren, Umschreiben oder Remote-Reporting
- Live-Report pro Tab plus eine gespeicherte Besuchshistorie auf diesem Gerät
- Toolbar-Badge nach dem stärksten Signal auf der Seite eingefärbt
- Scan this site, wenn Auto monitor aus ist
Was sie beobachtet
Zwei unabhängige Collector speisen einen Background-Observer. Netzwerk- und Cookie-Events kommen von Firefox-APIs. Storage- und Fingerprinting-Events kommen von Content-Scripts, die bei document_start in jedem HTTP(S)-Frame injiziert werden.
| Signal | Was aufgezeichnet wird | Warum es zählt |
|---|---|---|
| Cookies | Erstellt, aktualisiert, gesendet oder bereits vorhanden. First vs Third Party. Partitioniert vs unpartitioniert. Ablauf. | Unpartitionierte Third-Party-Cookies können Sie über Sites hinweg verfolgen. |
| Third-Party-Requests | Hosts, die von der Seite kontaktiert werden. Scripts, Bilder, XHR/fetch, Iframes, Websockets, Beacons, Pixel. | So laufen die meisten Tracker, Ads und Analytics tatsächlich. |
| Storage | localStorage-, sessionStorage- und IndexedDB-Keys, wenn sie geschrieben, entfernt oder bereits vorhanden sind. | Sites lagern Visitor-IDs oft hier, wenn Cookies eingeschränkt sind. |
| Fingerprinting-APIs | Canvas, WebGL, Audio, WebRTC, Plugins, Fonts, Battery, Device Enumeration. Dem aufrufenden Script zugeordnet, wenn der Stack es zulässt. | Diese APIs können einen stabilen Geräte-Fingerprint ohne Cookies bauen. |
| Click IDs | Werbeparameter in der Seiten-URL (gclid, fbclid, utm_* und ähnlich). | Zeigt, dass der Besuch aus einer bezahlten oder getrackten Kampagne kam. |
| Bekannte Tracker | Hosts gegen Disconnect Tracking Protection plus eine kurze Extras-Liste gematcht. | Trennt Advertising/Analytics von CDNs und eigener Unternehmens-Infrastruktur. |
| CNAME-Cloaking | First-Party-Subdomains, deren DNS-CNAME auf einen Tracker zeigt. | Ein Tracker kann sich hinter einer Subdomain verstecken, die first-party wirkt. |
Die Sidebar folgt dem aktiven Tab mit derselben UI wie das Popup, sodass der Report offen bleiben kann, während Sie auf einer Site klicken.
Wie Daten fließen
Der Website-Tab spricht mit page-hook.js. Firefox-Netzwerk-APIs und bridge.js speisen beide background.js, das den Live-Report schreibt, den Popup, Sidebar und Full Report aus storage.local lesen.
webRequest beobachtet Requests, ohne zu blockieren. Third-Party-Hosts werden gespeichert; First-Party-Hosts werden übersprungen, außer DNS zeigt einen CNAME zu einem Tracker. Request- und Response-Header Cookie / Set-Cookie werden geparst. cookies.onChanged und ein Snapshot des Cookie-Jars bei Navigation füllen Cookies, die Header verpasst haben. Partitionierung kommt aus Set-Cookie Partitioned und aus Firefox partitionKey.
Quelle: Erweiterungsarchitektur in manifest.json, background/background.js, content/page-hook.js und content/bridge.js.
- Netzwerk und Cookies über Firefox-APIs (beobachten, nie blockieren)
- Storage und Fingerprinting über document_start Content-Scripts
- Ein Background-Observer besitzt Report und lokale Snapshots
Wie eine Domain gelabelt wird
Die Suche ist suffix-basiert, daher matcht pixel.facebook.com facebook.com. Tracker-Extras werden vor Disconnect geprüft, sodass Consent-Manager und Bot-Defense-CDNs countAsTracker: false bekommen können.
| Regel | Ergebnis |
|---|---|
| Gleiche registrierbare Domain wie die Seite | First-Party. Kein Tracker. |
| Gleiche Company-Map (Google, Meta, LinkedIn, …) | Eigene Infrastruktur. Kein Tracker. |
| Disconnect Advertising / Analytics / Social | Bekannter Tracker. Gezählt und hervorgehoben. |
| Disconnect Consent oder Content, oder Extras mit countAsTracker false | Gelabelt (Consent, CDN, Bot Defense), aber nicht als Tracker gezählt. |
| Bekanntes CDN (jsDelivr, CloudFront, Google Fonts, …) | Library-CDN / Content Delivery. |
| Beacon, Ping oder 1x1 / /pixel / /collect-URL | Tracking-Beacon, auch wenn der Host unbekannt ist. |
| CNAME eines First-Party-Hosts zeigt auf einen Tracker | Getarnter Tracker. Zweck enthält (CNAME). |
Cookie-Namen werden außerdem per Regex klassifiziert (_ga, _fbp, Session-IDs, theme/lang). Storage-Keys, die wie Visitor-IDs aussehen, werden als verdächtig markiert.
Fingerprinting und die Tracker-Liste
Canvas oder WebGL einmal zu nutzen, ist kein Beweis für Fingerprinting. Die Konfidenz steigt, wenn ein bekanntes Tracker-Script eine High-Signal-API aufruft, mehrere Signale auf einem Third-Party-Host erscheinen oder der Aufrufer nicht zur eigenen Firma der Seite gehört.
Die Hauptliste ist Disconnect Tracking Protection (etwa 4.400 Domains) in lib/disconnect-list.js. Eine kurze Extras-Datei deckt Lücken wie googletagmanager.com, app-measurement.com und HUMAN- / DataDome-Bot-Defense-Hosts.
- High-Signal: Canvas.toDataURL, toBlob, getImageData, WebGL.readPixels, OfflineAudioContext, RTCPeerConnection
- Medium: WebGL.getParameter, AudioContext, Plugins, Fonts
- Low: Battery, enumerateDevices, Voices
- Niedrige Konfidenz heißt: diese API lief - nicht: Sie wurden gefingerprinted
Oberflächen
Derselbe Report ist als kompaktes Popup, persistente Firefox-Sidebar und breitere Full-Report-Seite mit Besuchshistorie verfügbar. Settings bleiben bewusst klein: Auto monitor, andere Oberflächen öffnen und gespeicherte Besuche löschen.
| Oberfläche | Rolle |
|---|---|
| Toolbar-Popup | Live-Zusammenfassung, Verdict, filterbare Tabelle, Scan this site wenn Auto monitor aus ist, Full Report, Settings, JSON kopieren. |
| Firefox-Sidebar | Dieselbe UI wie das Popup, immer über das Firefox-Sidebar-Menü erreichbar. Folgt dem aktiven Tab. |
| Full Report | Breitere Tabelle mit Detail-Spalte, Suche und linker Liste gespeicherter Besuche gruppiert nach Site. |
| Settings | Auto monitor an/aus, Sidebar öffnen, Reports öffnen, gespeicherte Besuchsdaten löschen. Erklärt die 80-Besuche- / 30-Tage-Grenze. |
Was gespeichert wird, und wie lange
Nichts verlässt das Gerät. Besuchssnapshots liegen in browser.storage.local unter visits. Laufende Tab-Reports nutzen Session Storage, wenn Firefox es bereitstellt. Settings sind ein einziges autoMonitor-Flag.
| Eintrag | Limit | Typische Größe |
|---|---|---|
| Gespeicherte Besuche | 80 Besuche oder 30 Tage, was zuerst kommt | 1-2 MB typisch |
| Zeilen pro Besuch | 250 | 10-30 KB typisch |
| Worst-Case-Historie | 80 schwere Seiten | etwa 4-8 MB |
| Firefox-Local-Storage-Quota | etwa 10 MB ohne unlimitedStorage | Spielraum bleibt |
Die Größe wird aus JSON-Snapshots von Cookies, Request-Hosts, Storage-Keys und API-Namen geschätzt. Seiten-HTML, Screenshots und Cookie-Werte werden nicht gespeichert.
- Nur lokal: kein Sync und kein Remote-Backup
- Ältere Besuche werden automatisch gelöscht
- Gespeicherte Besuchsdaten löschen leert die Historie in Settings
Berechtigungen
Jede Berechtigung dient dem Beobachten, nicht dem Verändern der Seite. Die Erweiterung injiziert keine Ads und postet keine Daten nach außen.
| Berechtigung | Verwendet für | Nicht verwendet für |
|---|---|---|
| cookies | Namen, Domains, Ablauf, Partitionierungsstatus lesen | Cookies ändern oder löschen |
| webRequest | Third-Party-Requests und Set-Cookie- / Cookie-Header sehen | Requests blockieren oder ändern |
| webNavigation | Wissen, wann ein Tab eine neue Seite startet | Navigation umleiten |
| tabs | Aktiven Tab erkennen und die Report-Seite öffnen | Tabs schließen oder umschreiben |
| storage | Settings und Besuchshistorie auf diesem Gerät speichern | Sync oder Remote-Backup |
| dns | CNAME auflösen, um getarnte Tracker zu erkennen | DNS ändern |
| <all_urls> | Jede geöffnete http/https-Site beobachten | Ads injizieren oder Daten nach außen posten |
Grenzen, Hinweise und Installation
Sie kann Dinge verpassen. Tabs, die vor der Installation schon offen waren, brauchen einen Reload, damit Content-Scripts andocken. Service Worker und manche sandboxed Frames führen den Page-Hook vielleicht nicht aus. Script-Zuordnung über Stack-Traces ist Best-Effort. Die Company-Map wird per Hand gepflegt und deckt nicht jede Marke ab.
Sie kann über-reporten. Fingerprinting-APIs werden auch für Spiele, Video und Fonts genutzt. Google Tag Manager steht als Analytics, weil es oft der Loader für Tracker ist, selbst wenn der Container first-party ist.
Kein Adblocker. Privacy Monitor lässt Sites nicht weniger Tracker laden. Nutzen Sie es, um zu sehen, was passiert ist. Kombinieren Sie es mit Firefox Enhanced Tracking Protection oder einem Blocker, wenn Requests gestoppt werden sollen.
In Firefox about:debugging#/runtime/this-firefox öffnen, Load Temporary Add-on wählen und manifest.json auswählen. Bereits offene Tabs neu laden. Die Gecko-ID ist privacy-monitor@web-analyse.local. Temporäre Add-ons werden entladen, wenn Firefox neu startet, bis Sie sie erneut laden.
- Bestehende Tabs nach der Installation neu laden
- Niedrige Konfidenz heißt “diese API lief”, nicht “Sie wurden gefingerprinted”
- Temporäres Add-on, bis es signiert und dauerhaft installiert ist