Accept-Language Reduction ist ein Versuch, passives Fingerprinting zu reduzieren.
angezeigt wird, indem die Spracheinstellungen der Nutzer
Accept-Language
und nur die bevorzugte Sprache des Nutzers (nur eine Sprache) senden.
Ab Chrome 109
In der Betaversion öffnen wir
Ursprungstest
für die Option „Accept-Language Reduction“
Accept-Language
-Header. Dadurch können Websites Probleme erkennen und beheben
bevor die reduzierte Accept-Language
-Einstellung in einem
zukünftige Version. Um die Funktion zu testen, bevor sie in einer stabilen Bevölkerungszahl eingeführt wird,
sollten Sie Chrome 109 vor dem Veröffentlichungsdatum aktivieren und testen (derzeit
geplant für den 10. Januar 2023).
Unten findest du Beispiele für den Accept-Language
-Header vor und nach der Reduzierung.
Accept-Language: en-GB,en;q=0.9,de;q=0.8,fr;q=0.7
Accept-Language: en-GB
Im Folgenden finden Sie einen Überblick über den Ursprungstest und weitere Informationen. Sie können Ihre Feedback zu dieser Änderung oder zu Problemen, die während des Ursprungstests in den GitHub-Artikel über Accept-Language Reduction .
Was ist Accept-Language?
Die Akzeptieren – Sprache String bei jeder HTTP-Anfrage gemeinsam genutzt und in JavaScript allen Ressourcen, die vom Browser geladen werden. Derzeit enthält es alle bevorzugten Sprachen.
Warum wird die Einstellung „Accept-Language“ reduziert?
Accept-Language Reduction ist ein Versuch, passives Fingerprinting zu reduzieren. Oberflächen in Chrome.
Derzeit wird der Accept-Language
-Header standardmäßig für jede HTTP-Verbindung freigegeben
-Anforderung und wird in JavaScript allen vom Browser geladenen Ressourcen zur Verfügung gestellt. Es
enthält alle Spracheinstellungen des Nutzers. Anstatt den Browser
die vollständige Liste der vom Nutzer konfigurierten Sprachen für den Fall, dass Websites
mehrsprachige Inhalte bieten, führen wir eine neue Möglichkeit ein,
mehrsprachigen Content und der Browser übernimmt die
Verhandlungsgeschick und zeigen die bevorzugte Sprache an.
Ein weiterer Grund ist, dass viele Websites die Accept-Language
-Header möglicherweise nicht verwenden.
für Sprachverhandlungen erforderlich sind (z. B. eine
Studie zeigt, dass nur 7,2% der
Top-10.000-Websites verwenden Accept-Language
). Der Inkognitomodus von Chrome reduzierte
Accept-Language
in eins.
Was bedeutet das für Webentwickler?
Websites, die für die Sprachverhandlung Accept-Language
nutzen, sollten
Bereiten Sie sich auf reduzierte Accept-Language
vor und ziehen Sie eine Teilnahme am
Ursprungstest. Die reduzierten Accept-Language
-Werte werden angezeigt an:
- Der HTTP-Anfrageheader
Accept-Language
. - Der JavaScript-Getter
navigator.languages
.
Der Browser übernimmt die Sprachverhandlung, um die
bevorzugte Sprache des Nutzers, die an Websites gesendet werden soll. Dazu müssen Websites
zwei Überschriften hinzufügen
Variants
(eine neue Kopfzeile zeigt Websites an, die Sprachen unterstützen) Accept-Language
und
Content-Language
im
(siehe detailliertes Beispiel unten).
Die reduzierten Accept-Language
-Abos umfassen iOS und WebView derzeit nicht und
diese Plattformen auch weiterhin die vollständige Liste der Accept-Language
.
Die Unterstützung für diese Plattformen ist für einen späteren Zeitpunkt geplant.
Ursprungstest für Accept-Language-Reduction
Für einen Ursprungstest muss die teilnehmende Website ein Token in ihrem
, mit der der Browser aufgefordert wird, den angegebenen Test zu aktivieren. Dieses
bedeutet, dass der Browser bei der ersten Anfrage an die Website nicht weiß,
Die Website nimmt an einem Ursprungstest teil. Das bedeutet, dass der anfängliche
Anfrage in einer Sitzung wird der reduzierte Accept-Language header
nicht gesendet.
Anfragen für Unterressourcen auf dieser Seite, sowohl ursprungs- als auch ursprungsübergreifend,
erhalten den reduzierten Accept-Language
-Header. Nachfolgende Navigationen am selben Ursprung
erhält auch den reduzierten Accept-Language
-Header. Ursprungsübergreifende Navigation
wird wieder der vollständige Header gesendet, während für ursprungsübergreifende Anfragen innerhalb der
(z. B. Drittanbieter-iFrame-Anfragen) dennoch die reduzierte Accept-Language
-Header, wenn die Frame-Anfrage der obersten Ebene ein gültiges Ursprungstesttoken hat.
Das ähnelt dem Ursprungstest zur Reduzierung des User-Agent. Weitere Informationen zur internen Chromium-Implementierung findest du hier: Implementieren Sie den Reduce-Accept-Language-HTTP-Header.
Am Ursprungstest von Accept-Language Reduction teilnehmen
Weitere Informationen finden Sie in Erste Schritte mit den Ursprungstests von Chrome, Die wesentlichen Schritte sind jedoch unten aufgeführt.
Schritt 1
So registrieren Sie sich für den Ursprungstest und erhalten ein Token für Ihre Domains: besuchen Sie die Testzeitraum für die Reduzierung der Sprache (Accept) Seite.
Schritt 2
Aktualisieren Sie Ihre HTTP-Antwortheader:
- Der HTTP-Antwort
Origin-Trial: <ORIGIN TRIAL TOKEN>
hinzufügen Header, wobei <ORIGIN TRIAL TOKEN
> enthält das Token, das Sie erhalten haben, als Sie für den Ursprungstest registriert. - Füge deinem HTTP-Antwortheader
Content-Language
hinzu, um anzugeben, die Sprache(n) für die Zielgruppe. - Füge deinem HTTP-Antwortheader
Variants
hinzu, um Websites anzugeben unterstützten Sprachen. - [Optional] Fügen Sie Ihrer HTTP-Antwort
Vary: Accept-Language
hinzu. um einen Cache-Schlüssel für die Inhaltsverhandlung zu erstellen. - Durch Festlegen dieser Header wird nur die Browsersprache ausgelöst (potenzieller Neustart für die ursprüngliche Anfrage) für die Ursprung. Damit Websites die richtige Sprachdarstellung für Websites, auf denen die Inhalte basierend auf den den Header Accept-Language des Nutzers (siehe Beispiel unten).
Schritt 3
Laden Sie Ihre Website in Chrome M109 Beta (oder höher) und erhalten Sie die reduzierten String für Accept-Language.
Probleme oder Feedback an den GitHub-Support von Accept-Language Reduction senden .
Demo
Für eine Demonstration einer mehrsprachigen Website mit aktiviertem Ursprungstest (zusammen mit dem Quellcode) siehe https://reduce-accept-language.glitch.me/.
Demonstration der Aktivierung und Deaktivierung des Ursprungstests (zusammen mit den Quellcode) siehe https://reduce-accept-language-ot.glitch.me/.
Beispielsweise unterstützt example.com
ja
(Japanisch) und en
(Englisch). A
kann Folgendes sein:
GET / HTTP/1.1
Host: example.com
Accept-Language: en
die Website erkennt, dass der Nutzer englischsprachige Inhalte bevorzugt. akzeptable Sprache. Die Antwortheader können Folgendes enthalten:
HTTP/1.1 200 OK
Content-Language: en
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token
Wenn der Nutzer Inhalte in japanischer Sprache bevorzugt, sieht die Anfrage wie folgt aus:
GET / HTTP/1.1
Host: example.com
Accept-Language: ja
In diesem Fall antwortet die Website mit Headern für japanische Inhalte:
HTTP/1.1 200 OK
Content-Language: ja
Variants: Accept-Language=(en ja)
Origin-Token: a-valid-token
Auf der Serverseite sucht die Website unter Umständen nach Unterstützung in bestimmten Sprachen, Es wird auf eine Standardeinstellung zurückgesetzt, wenn keine Unterstützung erkannt wird:
if(accept_language == 'ja') {
res.response('ja_page')
}
else {
res.response('en_page')
}
Im obigen Beispiel antwortet example.com
entweder en
oder ja
, je nachdem,
Accept-Language
-Wert. Der Standardwert ist en
, wenn keine Übereinstimmung gefunden wird. In diesem Fall
können auch Weiterleitungen zu Seiten der entsprechenden Sprache enthalten, entweder /en
oder
/ja
basierend auf dem Wert Accept-Language
. Detaillierte Beispiele für
Weiterleitungen ein
Implementierungsdokumentation.
Unterstützung für Ursprungstests von Drittanbietern
Die Registrierung Ihrer Domains als
Drittanbieter-Apps für den Testzeitraum.
Wenn Sie einen Dienst betreiben, der als Unterressource für mehrere Quellen implementiert ist
wie Anzeigenbereitstellung oder Analytics nutzen, erhalten Sie nur den reduzierten
Accept-Language
-Header, wenn die Website der obersten Ebene am Ursprung beteiligt ist
.
Prüfen, ob der Ursprungstest funktioniert
Der Leitfaden zur Fehlerbehebung bei Ursprungstests von Chrome finden Sie eine vollständige Checkliste, mit der Sie überprüfen können, ob Ihr Token richtig konfiguriert ist.
Sie konfigurieren mehrere Sprachen und deren Priorität von
chrome://settings/languages
oder „Einstellungen“ → „Sprachen“. Wählen Sie eine
Sprache, die Ihre Website nicht unterstützt, und an den Anfang der Liste verschoben wird
um sicherzustellen, dass die zusätzliche Neuverhandlung ausgelöst wird.
Die Header der ersten Antwort, die das Token für den Ursprungstest enthalten, sollten so aussehen: wie:

Nachfolgende Anfrageheader mit dem reduzierten Accept-Language-Wert sehen wie folgt aus:

Teilnahme am Ursprungstest beenden
Während des Testzeitraums kannst du die Teilnahme beenden und die vollständige Liste der Accept-Language des Nutzers erhalten. So beenden Sie die Teilnahme:
- Den
Origin-Trial
-Header für die Accept-Language-Reduction entfernen aus der HTTP-Antwort aus. - [Optional] Entfernen Sie den
Variants
-Header, der hinzugefügt wurde, um die Ursprungstest in Ihrer HTTP-Antwort verwenden, wenn Sie diesem Header. Sie können auchVariants
mit einem leeren Wert verwenden, um dies. - [Optional]
Content-Language
-Header entfernen, der hinzugefügt wird zu Aktivieren Sie in Ihrer HTTP-Antwort den Ursprungstest, wenn Sie kein Interesse an das Senden dieses Headers.
Dauer des Ursprungstests
Der Ursprungstest „Accept-Language Reduction“ läuft mindestens sechs Monate, was ungefähr sechs Chrome-Meilensteinen entspricht. Der Ursprungstest wird angezeigt M109 und enden mit M114 (die letzte Chrome-Version mit der Testversion). verfügbar). Dann wertet Chrome das Feedback der Quelle aus. bevor Sie den reduzierten Accept-Language-String in einem Gestaffelte Methode: Reduzieren Sie zuerst den Accept-Language-HTTP-Header und dann JS-Schnittstelle. Wenn eine Website mehr Zeit zum Testen benötigt, kann sie eine weitere Ursprungstest zur Einstellung, mit dem sie auf den vollen Accept-Language-String für mindestens weitere sechs Monate. Wir werden weitere Details zum Test zur Einstellung, wenn er bereit ist.
Feedback geben
Probleme oder Feedback an den GitHub-Support von Accept-Language Reduction senden .