zurück zur Übersicht Mehr Artikel

Zeitzonen-Leck: Dein VPN verschiebt deine IP, nicht deine Uhr

Wird geladen...

Du schaltest ein VPN ein, wählst einen Server in Amsterdam und lädst eine Seite. Deine IP-Adresse geht auf jeder IP-Check-Seite, die du ausprobierst, als niederländisch durch. Und trotzdem hängt der Checkout einen zusätzlichen Verifizierungsschritt dran, der Streaming-Katalog bleibt der falsche, oder ein Login löst eine „Neues Gerät“-Mail aus. Was dich verraten hat, passt in eine Zeile JavaScript: Intl.DateTimeFormat().resolvedOptions().timeZone.

Dieser Aufruf liefert die Zeitzone, auf die dein Betriebssystem eingestellt ist, und darauf hat ein VPN exakt null Einfluss. Deine Pakete kommen jetzt aus Amsterdam; dein Browser meldet weiterhin fröhlich America/New_York. Das Widget auf dieser Seite führt genau den Vergleich aus, den auch ein Fraud-Script fahren würde: Es schlägt die Zeitzone nach, die deine IP-Adresse nahelegt, liest die Zeitzone aus, die dein Browser meldet, und prüft, ob die beiden übereinstimmen.

Die Kurzfassung: Eine Website bekommt zwei unabhängige Antworten auf die Frage „Wo ist dieser Besucher“: die Zeitzone der IP-Adresse und die Zeitzone des Betriebssystems. Ein VPN ändert nur die erste. Beide zu vergleichen kostet eine einzige Zeile Code, und die zweite nur halb zu spoofen ist der einzige Zug, der schlechter aussieht, als gar nicht zu spoofen.

Zwei Antworten auf eine Frage

Die erste Antwort kommt aus dem Netzwerk. Eine Website sieht die IP, mit der du dich verbindest, und schlägt sie in einer Geolocation-Datenbank nach: ipinfo.io, MaxMind und ihre Konkurrenten liefern alle zum Standort auch eine Zeitzone. Mit eingeschaltetem VPN zeigt diese Antwort auf den Exit-Server: Verbindest du dich über Amsterdam, sagt die Datenbank Europe/Amsterdam. Wie diese Datenbanken gebaut werden und wie weit sie bei deiner Straßenadresse danebenliegen können, haben wir in unserem Artikel zur IP-Geolokalisierung erzählt. Auf Zeitzonen-Ebene liegen sie aber so gut wie nie falsch.

Die zweite Antwort kommt aus deinem Betriebssystem. JavaScript kann den lokalen UTC-Offset seit den Neunzigern über new Date().getTimezoneOffset() auslesen, und moderne Browser rücken über die Intl-API den vollständigen IANA-Zonennamen heraus. Kein Berechtigungs-Prompt, keine Nutzergeste, kein Eintrag in irgendeinem Privacy-Dashboard. All das läuft unter gewöhnliche Metadaten, dieselbe Kategorie wie deine Bildschirmgröße.

Ein Besucher, zwei Antworten
Was deine Pakete sagen
VPN-Exit-IP 198.51.100.7 Geo-Datenbank Europe/Amsterdam
Was dein Browser sagt
Systemuhr-Einstellungen Intl.DateTimeFormat() America/New_York
Diskrepanz
Europe/AmsterdamAmerica/New_York — entlarvt von einem einzigen String-Vergleich, bevor du überhaupt etwas angeklickt hast.
Die Netzwerk-Antwort stammt aus einem Geolokations-Lookup der IP, von der aus du dich verbindest. Die Browser-Antwort stammt aus deinem Betriebssystem. Ein VPN ändert immer nur die erste.

Der Vergleich der beiden ist gratis, also macht ihn jeder, der einen Grund dazu hat: Payment-Fraud-Scoring, Regionssperren beim Streaming, Ad-Fraud-Filter, Account-Sicherheitssysteme und die Anti-Bot-Stacks, die sowieso schon ein Dutzend anderer Konsistenz-Checks fahren.

Warum das VPN das nicht reparieren kann

Ein VPN verschlüsselt deinen Traffic und tauscht die IP-Adresse aus, die Server zu sehen bekommen. Das ist die komplette Stellenbeschreibung. Alles andere, woran eine Seite das VPN erkennt, vom Eigentümer der IP bis zu WebRTC, steht in wie Websites dein VPN erkennen. Deine Zeitzone reist nie durch den Tunnel, weil sie überhaupt nicht reist. Sie liegt in deinen OS-Einstellungen, der Browser liest sie lokal aus und meldet sie jedem Script, das danach fragt.

Die Seite erfährt dabei nicht deine Uhrzeit, sondern den Zonen-Identifier. America/New_York ist eine Standortbehauptung, präzise bis auf einen vertikalen Streifen des Planeten, und sie liegt gut sichtbar neben navigator.language und dem Accept-Language-Header, die dieselbe Art von Behauptung darüber aufstellen, wo du wohnst.

Fairerweise: Ein Mismatch beweist für sich genommen gar nichts. Menschen fliegen mit Laptops herum, die noch glauben, zu Hause zu sein, und Remote-Worker behalten die Zeitzone ihres Teams mit Absicht. Detection-Systeme wissen das, weshalb der Mismatch in einen Risiko-Score einfließt, statt direkt eine Sperre auszulösen. Aber Scores summieren sich: Ein Zeitzonen-Mismatch plus eine Rechenzentrums-IP plus ein WebRTC-Leak ist nicht mehr mehrdeutig, und jedes Signal lässt das nächste schwerer wiegen.

Die Halb-Spoof-Falle

Der naheliegende Fix ist, bei der Zeitzone einfach mitzulügen, und es gibt einen ganzen Stapel Extensions, die genau das anbieten. Die meisten überschreiben Intl.DateTimeFormat, sodass resolvedOptions().timeZone zurückgibt, was immer du konfigurierst. Das Problem: Dein Browser verkündet seine Zeitzone an mehr als einer Stelle:

  • new Date().getTimezoneOffset() meldet über einen komplett anderen Codepfad, wie viele Minuten deine Uhr hinter UTC liegt.
  • Date.prototype.toString() buchstabiert die Zone in Worten aus: „GMT-0400 (Eastern Daylight Time)“.
  • Das Formatieren eines Datums für einen beliebigen Tag des Jahres legt deine Sommerzeitregeln offen, und die gehören zur Identität der Zone.

Ein fester Offset ist keine Zeitzone. Amsterdam liegt im Juli auf UTC+2, im Januar aber auf UTC+1, und es stellt an anderen Terminen um als New York: Die EU dreht am letzten Sonntag im März an der Uhr, die USA zwei bis drei Wochen früher. Ein Script kann fragen, welchen Offset du am ersten Januar und am ersten Juli hattest, und prüfen, ob das Paar zu der Zone passt, die du behauptest. Ein Spoof, der einen Offset das ganze Jahr über festnagelt, passt zu keinem Ort, der jemals an der Uhr dreht, und ganz sicher nicht zu dem Amsterdam, das er zu sein vorgibt.

Übersiehst du auch nur eine dieser Stellen, fängt dein Browser an, sich mit sich selbst zu streiten:

Zeitzone der IP (Geo-Lookup) vom VPN-Exit
Europe/Amsterdam konsistent
Was Intl.DateTimeFormat() behauptet direkt vom Betriebssystem
America/New_York inkonsistent
Aktueller Uhr-Offset via getTimezoneOffset()
UTC−4 inkonsistent
Diskrepanz
Die IP sagt Amsterdam, der Browser sagt New York. Liest sich wie ein VPN oder ein Proxy.
Die gezeigten Offsets gelten für Juli. Den Zeitzonennamen zu patchen, aber den Uhr-Offset zu vergessen, erzeugt einen Browser, der mit sich selbst streitet, und dieser Widerspruch ist ein stärkeres Signal, als es das VPN je war.

Diese Falle hat noch eine zweite Ebene. Ein überschriebenes Intl.DateTimeFormat sieht nicht mehr nativ aus, sobald ein Script seinen Quelltext inspiziert. Es ist dieselbe verräterische Signatur gepatchter Funktionen, die auch Stealth-Plugins auffliegen lässt und die wir im Artikel über Bot-Erkennung durchgegangen sind. Ein sauberer Mismatch sagt „wahrscheinlich ein VPN“. Eine gepatchte API sagt „diese Person manipuliert aktiv ihren Browser“, und jedes ernsthafte Scoring-System bepreist das höher.

Was du konkret tun solltest

  1. Erst testen, dann vertrauen. Das Widget auf dieser Seite vergleicht die Zeitzone deines Browsers genau jetzt mit der deiner IP, und der komplette Browser-Scan lässt den Check neben den WebRTC-, Plattform- und Fingerprint-Prüfungen laufen. Lass ihn mit eingeschaltetem VPN laufen. Wenn dich das Widget flaggt, flaggt dich auch jedes Fraud-Script.
  2. Stell deine Uhr mit deinem VPN um. Der langweilige Fix ist der solide: Setz deine OS-Zeitzone vor dem Verbinden auf die Exit-Stadt. Da gibt es nichts zu erkennen, weil nichts gefälscht ist: Jede API meldet dieselbe Zone aus derselben Quelle. Die Alternative für die Privacy-Fraktion ist der Tor Browser, der bei allen Nutzern UTC meldet; deine echte Zone bleibt verborgen, zum Preis, exakt wie der Tor Browser auszusehen.
  3. Wenn du mehrere Identitäten fährst, hör auf, das von Hand zu machen. Accounts über Regionen hinweg zu verwalten heißt: Jedes Profil braucht seine eigene IP, Zeitzone, Sprache und seinen eigenen Fingerprint, alles im Einklang miteinander, in jeder Session. Genau diese Buchhaltung automatisieren Anti-Detect-Browser: Incogniton leitet die Zeitzone jedes Profils aus dessen Proxy-IP ab, sodass die beiden Antworten aus diesem Artikel gar nicht erst auseinanderlaufen.

Der Zeitzonen-Check ist der billigste Geolocation-Quercheck, den ein Script fahren kann, und genau deshalb läuft er überall. Dreißig Sekunden mit dem Widget oben sagen dir, auf welcher Seite davon du stehst.

Incogniton-Logo

Bring deine Privatsphäre aufs nächste Level

Pfeil