Some of the strings in here were taken from: HTTP::BrowserDetect HTML::ParseBrowser HTTP::DetectUserAgent test suites. Others were taken from various web sites (like useragentstring.com) and the rest from the logs.