Wêrom't in VPN-útgong en de taal fan dyn browser net oerienkomme
Accept-Language freget om in antwurdtaal; de VPN feroaret it boarneadres. As in side lokaliseare liket, beslute trije yngongen wa't wûn hat.
Iepenje de ûntwikkelersark, laad de side en lês de oanfreegkoppen foardatst wat oer de VPN konkludearret. Meastentiids fynst in rigel Accept-Language dy't in bepaalde set talen freget, en dy rigel komt út 'e ynstellingen fan dyn browser, net út dyn útgongsadres. In Frânsktalige op in útgong yn Tokio stjoert noch hieltyd Frânsk, en in side dy't yn it Frânsk antwurdet, antwurdet de kop. De tunnel lekket net allinnich om't de side yn in fertroude taal oankaam.
Lês earst de kop
Iepenje yn in desktopbrowser it paniel Netwurk, laad op 'e nij, klik op 'e dokumintoanfraach en sjoch ûnder de oanfreegkoppen. Fanôf in terminal kinst itselde sûnder browser sjen, en kinst de wearde oerskriuwe om it gedrach fan 'e side te testen:
curl -sS -D /tmp/h1 -o /tmp/b1 https://example.com
curl -sS -D /tmp/h2 -o /tmp/b2 -H 'Accept-Language: fr,en;q=0.6' https://example.com
grep -o 'lang="[^"]*"' /tmp/b1 /tmp/b2
diff /tmp/b1 /tmp/b2 | head -40
No leit it lichem op 'e skiif, dus de fergeliking giet oer de side en net oer in kop dy't miskien nea ferstjoerd wurdt. Sjoch nei it lang-attribút fan 'e html-tag en nei de sichtbere tekst, want Content-Language is opsjoneel en in protte servers litte it weil. In side dy't op deselde URL de hiele side fan Ingelsk nei Frânsk omskeakelet, kin dêrom yn in fergeliking fan allinnich koppen ûnferoare lykje. As de doeltaal fan it dokumint de kop folget wylst de útgong fêst bliuwt, wie de kop de beslissende yngong en is de VPN foar dy waarnimming irrelevant.
Brûk foar dizze test in twadde browserprofyl ynstee fan 'e taalskeakelder fan 'e side sels. In skeakelder skriuwt meastentiids in cookie, dat is in oare yngong, en dan mjitst de cookie ynstee fan 'e kop.
Wat de q-wearden betsjutte, en wat net
RFC 9110, paragraaf 12.5.4, definiearret Accept-Language as in list fan foarkarde natuerlike talen foar it antwurd. Elk item kin in gewicht fan 0 oant 1 drage, in berik sûnder gewicht hat gewicht 1, en in gewicht fan 0 markearret in taal as net akseptabel. Dat is in foarkarsfolchoarder en net mear.
De wearde is gjin lokaasjeberjocht, gjin betrouwensskoare en gjin identiteit. In server is frij om it te negearjen, de iennige oersetting te tsjinjen dy't er hat, of in lânsbasearre trochstjoering winne te litten. Ynhâldsûnderhanneling is de kar fan 'e server, en de kop is in yngong foar dy kar, net in befel.
Dat is it diel dat minsken misse as se in lokalisearre side as lokaasjetest behannelje. De kop seit hokker talen de persoan leaver lêst, en in foarkar kin oeral hinne reizgje.
Trije yngongen beslute hokker taalst echt krijst
Isolearje se ien foar ien, want fan bûten kinst net sjen hokker wûn hat:
- De kop. Test mei in twadde profyl dat op in oare taallist ynsteld is, en sjoch oft de side feroaret wylst al it oare konstant bliuwt.
- In bewarre kar. Test yn in priveefinster sûnder cookies, of wiskje de opslach fan 'e side. Accountynstellingen en items yn localStorage kinne in taal moannenlang fêsthâlde.
- In URL of trochstjoering. Test troch it eksplisite taalpaad op te freegjen, lykas
/fr/, en troch de statuskoaden te folgjen fan in trochstjoering op basis fan it boarneadres.
Fier de trije tests yn dy folchoarder út en skriuw op hokker it resultaat ferpleatst hat. Ien side-load dy't de taal feroaret neidatst de VPN oansette, is swak bewiis, want sawol in trochstjoering as in cachet cookie kinne dat byld meitsje.
Wat de VPN feroaret, en wat net
De tunnel feroaret it boarneadres dat in server sjocht, en dêrmei alles wat de server út IP-geolokaasje ôfliedt. Hy skriuwt de taalfoarkarren fan 'e browser net oer, wisket gjin bewarre ynstelling en feroaret de URL net dy'tst yntype hat. Dy yngongen bliuwe krekt wêr't se wiene, dus in side kin syn âlde taal hâlde neidat de útgong ferskood is.
Geolokaasje foeget syn eigen lûd ta. Adresdatabases binne it net iens, en in útgong dy't yn ien lân registrearre is, kin oan in oar tâne wurde, wat in lânsbasearre trochstjoering ferkeard lykje lit om redenen dy't neat mei dyn browser te meitsjen hawwe.
In flugge kontrôle skiedt se: freegje de side farsk op, notearje it adres datst presintearrest, en fergelykje dan de antwurdtaal mei dyn koppelist. As de taal by dyn list past ynstee fan by it útgongslân, wie de kop de beslissende yngong en is der neat yn 'e tunnel te reparearjen.
Wat in lokalisearre side bewissighet, en wat net
Hjir is in echte punt oer privacy, en hy is lytser as dy't minsken meastentiids meitsje. In folsleine list fan taalfoarkarren is in yngong foar fingerprinting en kin wat ferriede oer wa'tst bist of watst lêst. Dat is in echte iepenbaring fan foarkar, en it is net itselde as bewize dat ferkear út 'e tunnel ûntkommen is.
In lokalisearre side is gjin lek-yndikator. As't echt op in lek testje wolst, kontrolearje dan it útgongsadres dat de side sjocht, it resolverpaad dat brûkt wurdt foar namme-opfregen, en de kandidaten dy't in WebRTC-stapel bleatleit. Dy tests beantwurdzje de fraach dy't de taal fan 'e side net beantwurdzje kin.
De folgjende kear as in side liket te witten yn hokker lânst bist, iepenje dan earst de oanfreegkoppen. As de antwurdtaal by de list fan dyn browser past, is der neat lekt, en de laach dêr'tst nei sjen moatst is dy foar dy.