This document describes version 0.39 of Parse::HTTP::UserAgent
released on 2 December 2013.
" ... and then Google built Chrome, and Chrome used Webkit, and it was like
Safari, and wanted pages built for Safari, and so pretended to be Safari.
And thus Chrome used WebKit, and pretended to be Safari, and WebKit pretended
to be KHTML, and KHTML pretended to be Gecko, and all browsers pretended to
be Mozilla, (...) , and the user agent string was a complete mess, and near
useless, and everyone pretended to be everyone else, and confusion
User agent strings are a complete mess since there is no standard format for
them. They can be in various formats and can include more or less information
depending on the vendors (or the users) choice. Also, it is not dependable
since it is some arbitrary identification string. Any user agent can fake
another. So, why deal with such a useless mess? You may want to see the choice
of your visitors and can get some reliable data (even if some are fake) and
generate some nice charts out of them or just want to send an HttpOnly cookie
if the user agent seems to support it (and send a normal one if this is not the
case). However, browser sniffing for client-side coding is considered a bad
This module implements a rules-based parser and tries to identify
MSIE, FireFox, Opera, Safari & Chrome first. It then tries to identify Mozilla,
Netscape, Robots and the rest will be tried with a generic parser. There is
also a structure dumper, useful for debugging.