De meesten van jullie weten waarschijnlijk wel dat een browser bij het opvragen van een webpagina een 'useragent'-string meestuurt. Dit ziet er bijvoorbeeld zo uit bij Internet Explorer 6.0:
Nu wil ik ook informatie meesturen over het besturingssysteem. Delphi heeft standaard informatie over de Windows-versie in SysUtils staan, dus die kon ik mooi gebruiken. Op een pagina bij Microsoft is te lezen welk versienummer overeenkomt met een bepaalde Windows-versie.
Ik heb nu een functie geschreven die op basis van de versie-informatie een string teruggeeft zoals "Windows NT 5.1", "Windows 98" etc.
Nu is mijn vraag: komen deze strings overeen met wat de verschillende browsers onder die besturingssystemen ook echt in de useragent-string zetten? Ik heb zelf alleen Windows XP om het op te testen, en daar krijg ik inderdaad "Windows NT 5.1" terug als ik getOsDescription() aanroep.
Ik zou graag willen weten of mijn functie de correcte waarden teruggeeft en of ik misschien Windows-versies over het hoofd heb gezien, die ook apart moeten worden opgegeven.
Of zo bij Firefox:Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1)
Ik heb in Delphi een programma geschreven dat pagina's opvraagt via HTTP, en hierbij stuur ik mijn eigen useragent mee, zodat later te herkennen is welke requests er precies door mijn programma zijn gemaakt. Tot voor kort had ik mijn useragent als volgt opgebouwd:Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.7) Gecko/20040608 Firefox/0.8.0+
waarbij 1.0 staat voor het versienummer, dat dus steeds veranderde bij nieuwe versies.ProgrammaNaam/1.0
Nu wil ik ook informatie meesturen over het besturingssysteem. Delphi heeft standaard informatie over de Windows-versie in SysUtils staan, dus die kon ik mooi gebruiken. Op een pagina bij Microsoft is te lezen welk versienummer overeenkomt met een bepaalde Windows-versie.
Ik heb nu een functie geschreven die op basis van de versie-informatie een string teruggeeft zoals "Windows NT 5.1", "Windows 98" etc.
Delphi:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
| function getOsDescription(): String; begin Result := 'Windows'; if (Win32Platform = VER_PLATFORM_WIN32_WINDOWS) then begin if (Win32MajorVersion = 4) and (Win32MinorVersion = 0) then Result := 'Windows 95' // Windows 95 else if (Win32MajorVersion = 4) and (Win32MinorVersion = 10) then Result := 'Windows 98' // Windows 98 else if (Win32MajorVersion = 4) and (Win32MinorVersion = 90) then Result := 'Windows Me' // Windows Me end else if (Win32Platform = VER_PLATFORM_WIN32_NT) then begin Result := 'Windows NT'; if (Win32MajorVersion = 3) and (Win32MinorVersion = 51) then Result := 'Windows NT 3.51' // Windows NT 3.51 else if (Win32MajorVersion = 4) and (Win32MinorVersion = 0) then Result := 'Windows NT 4.0' // Windows NT 4.0 else if (Win32MajorVersion = 5) and (Win32MinorVersion = 0) then Result := 'Windows NT 5.0' // Windows 2000 else if (Win32MajorVersion = 5) and (Win32MinorVersion = 1) then Result := 'Windows NT 5.1' // Windows XP else if (Win32MajorVersion = 5) and (Win32MinorVersion = 2) then Result := 'Windows NT 5.2' // Windows 2003 end; end; |
Nu is mijn vraag: komen deze strings overeen met wat de verschillende browsers onder die besturingssystemen ook echt in de useragent-string zetten? Ik heb zelf alleen Windows XP om het op te testen, en daar krijg ik inderdaad "Windows NT 5.1" terug als ik getOsDescription() aanroep.
Ik zou graag willen weten of mijn functie de correcte waarden teruggeeft en of ik misschien Windows-versies over het hoofd heb gezien, die ook apart moeten worden opgegeven.