Waarom voegt Edge Safari toe aan de User-Agent?
20 jaar geleden: de bizarre erfenis van de browserstrijd
Als je serverlogs hebt geanalyseerd, heb je waarschijnlijk zo’n string gezien.
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/101.0.4951.64
Safari/537.36
Edg/101.0.1210.47
"Edge, maar Safari?"
"Chrome, maar Mozilla?"
Hoe kan één browser zich tegelijkertijd als vier voordoen?
Het is geen simpele grap; het is een fossiel uit de meest hevige browserstrijd in de webgeschiedenis.
En de gevolgen van die strijd zijn nog steeds zichtbaar in serverlogs in 2025.
In dit artikel gaan we dieper in op:
- Waarom alle browsers nog steeds beginnen met
Mozilla/5.0 - Waarom Chromium‑gebaseerde Edge verplicht Safari in de User-Agent opneemt
- En hoe deze chaos uiteindelijk door standaarden wordt afgebroken
1. Alles begon met de Netscape vs IE‑strijd
In het late jaren ’90 was de markt voor browsers praktisch een tweekamp.
- Netscape Navigator
- Internet Explorer
De User-Agent van Netscape zag er zo uit:
Mozilla/4.0 (compatible; ...)
Het probleem?
Webontwikkelaars begonnen te denken:
"Als het een Mozilla‑browser is, kunnen we moderne functies gebruiken. Anders tonen we oudere code."
Dus werd de User-Agent‑string een manier om browserfuncties te detecteren.
// 1990s‑style pseudocode
if (ua.includes("Mozilla")) {
// code voor moderne browsers
} else {
// code voor oude browsers
}
Andere browsers waren boos:
"We zijn ook Netscape‑achtig, waarom worden we gediscrimineerd?"
Daarom begonnen alle browsers Mozilla aan het begin van hun User-Agent toe te voegen.
Het werd een compatibiliteits‑merk.
De oorsprong van "Mozilla"
- "Mosaic + Godzilla" → "Mozilla"
- Een parodie op een krachtige browser
In werkelijkheid betekende het simpelweg:
"Ik ben Netscape‑achtig. Behandel me niet als een oude browser."
Daarom beginnen bijna alle browsers nog steeds met Mozilla/5.0.
2. WebKit, Gecko, Trident… de strijd om de engine
In het begin van de jaren 2000 verdeelden de browser‑engines zich als volgt:
- IE → Trident
- Firefox → Gecko
- Safari → WebKit
Ontwikkelaars gebruikten opnieuw de User-Agent om browsers te onderscheiden.
const ua = navigator.userAgent;
if (ua.includes("Safari")) {
// code voor Safari/WebKit
}
if (ua.includes("Gecko")) {
// code voor Firefox
}
if (ua.includes("Trident")) {
// code voor IE
}
De logica werd al snel rommelig.
De komst van Chrome
Toen Chrome verscheen, was het probleem simpel:
Websites kenden Chrome niet en stuurden het naar de Safari‑code.
Chrome besloot:
"Laten we gewoon doen alsof we Safari zijn."
Daarom ziet de User-Agent van Chrome er zo uit:
Mozilla/5.0 (...)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/xx.xx.xx
Safari/537.36
De betekenis:
Mozilla/5.0– "Ik ben Netscape‑achtig"AppleWebKit/537.36– "Mijn rendering‑engine is WebKit‑achtig"(KHTML, like Gecko)– "Ik kan ook lijken op Gecko"Safari/537.36– "Ik moet eruit zien als Safari"Chrome/xx– "Ik ben echt Chrome"
Een vier‑in‑één‑masker.
3. De komst van Edge: een compromis tussen identiteit en overleving
Microsoft begon met EdgeHTML, maar schakelde uiteindelijk over op Chromium‑gebaseerde Edge.
Microsoft wist al dat er tientallen duizenden sites waren die User‑Agent‑detectie gebruikten.
Als Edge simpelweg Edge/101.0.0.0 had, zou het:
- Niet herkend worden
- Niet in legacy‑branch‑detecties passen
- Gebruikers een foutmelding geven
Daarom koos Microsoft voor een User-Agent die Chrome en Safari lijkt, maar toch Edge is:
Mozilla/5.0 (Windows NT 10.0; Win64; x64)
AppleWebKit/537.36 (KHTML, like Gecko)
Chrome/101.0.4951.64
Safari/537.36
Edg/101.0.1210.47
Interpretatie:
Mozilla– "Ik ben een moderne browser"AppleWebKit– "Ik render als WebKit"Chrome– "Ik ben Chromium‑gebaseerd"Safari– "Ik moet eruit zien als Safari"Edg– "Mijn merk is Edge"
Het is een survival‑masker om compatibiliteit te garanderen.
4. De User‑Agent‑string ontleed: 30 jaar geschiedenis in één regel
Laten we de tokens van de User-Agent bekijken:
| Token | Werkelijke betekenis (parafrase) |
|---|---|
Mozilla/5.0 |
"Ik ben Netscape‑achtig. Laat me niet als oud behandelen." |
AppleWebKit/537.36 |
"Ik render als WebKit (Safari)." |
KHTML, like Gecko |
"Ik kan ook lijken op Gecko (Firefox)." |
Safari/537.36 |
"Ik moet eruit zien als Safari." |
Chrome/101.0... |
"Mijn engine is Chromium." |
Edg/101.0... |
"Mijn merk is Edge." |
In één regel zie je:
- De Netscape vs IE‑strijd
- De engine‑strijd (Gecko vs WebKit vs Trident)
- Chrome’s dominantie
- Edge’s overlevingsstrategie
5. User‑Agent wordt een "historisch afval"
Het huidige User‑Agent‑systeem is een verouderd ontwerp:
- Browsers maskeren elkaar → vertrouwen 0
- Legacy‑code dwingt strings groter te worden
- Te veel apparaat/OS‑informatie → privacy‑risico
- Onmogelijk om nauwkeurig te bepalen welke functies beschikbaar zijn
Daarom verplaatsen W3C en browser‑leveranciers zich naar User‑Agent Client Hints.
Client Hints: eerlijkheid in de toekomst
Nieuwe headers worden de helden:
Sec-CH-UA
Sec-CH-UA-Platform
Sec-CH-UA-Mobile
Werking:
- Server vraagt om gestructureerde browser‑informatie.
- Browser geeft alleen de gevraagde data terug.
- Geen noodzaak voor een lange, misleidende string.
Voordelen:
- Geen meer “Safari‑masker” nodig.
- Minder privacy‑lekken.
- Simpler code.
Webstandaarden worden opnieuw ontworpen om browsers eerlijk te laten zijn.
6. Conclusie – een nieuwe kijk op die vreemde regel in serverlogs
Kijk nogmaals naar die regel:
Mozilla/5.0 ... Safari/537.36 ... Edg/101
Het is geen willekeurige string; het is een samenvatting van:
- Browser‑strijd en machtsverhoudingen
- Compromissen met legacy‑code
- Markt‑strategieën
- De evolutie van standaarden
En het blijft een klein historisch document, zelfs in 2025.
De volgende keer dat je een log ziet met Mozilla/5.0 ... Safari ... Edg/..., kun je glimlachen en denken: "Een nieuwe fossiel is voorbij gegaan." 🙂

댓글이 없습니다.