Im Log steht ja auch nur, was aus dem HTTP-Header ausgelesen wurde.
Und das CGI sollte als Input auch den kompletten HTTP-Header bekommen.
UserAgent:
Also ja, das sollte man da auslesen können. (falls er übertragen wurde)
Und nein, was der Browser zurückgibt muß nicht immer stimmen, auch wenn da meistens die Browser-Engine, das
OS und einige Addons mit erwähnt werden,
aber im Zuge des anonymen Surfens verschleiern/verfälschen immer mehr Browser/Firewalls diese Angaben.
Einige Webseiten lesen das über JavaScript, AJAX, Flash und wer weis über was sonst noch aus und übertragen es dann zum Webserver, bzw. hängen es an einen POST mit an.