UserAgent string parser