Question

How do you parse your user agent strings? I'm looking to get:

  • Browser
  • Browser Version
  • OS
  • OS Version

from a user agent string. My app is written in perl and was previously using HTTP::BrowserDetect. It's a bit dated and is no longer maintained. (Edit: it's since been updated.) I'm in no way tied to using perl for the actual lookup.

I've come to the conclusion that automagic parsing is a lost cause. I was thinking of writing a crud type app to show me a list of unclassified UA's and manually keep them up to date.

Does such an resource already exist that I can tap into? It would be awesome if I could make an HTTP call to look up the user agent info.

Thanks!

Was it helpful?

Solution

useragentstring.com has browser and OS information for its user agent strings. There's also an 'analyze' box to submit your own string. I don't know how easy it is to hook up to automatically, but it seems to have the sort of info you want.

Update from Original Posting (don't want to steal your upvotes):

I got this back from the author of http://useragentstring.com/:

I have a simple API, but I'm about to recode a lot of my site, so it might change in the near future. If you link to my site, you can send a useragentstring in a form field or in the querystring with the name 'uas':

http://www.useragentstring.com/?uas=Opera/9.70%20(Linux%20i686%20;%20U;%20en-us)%20Presto/2.2.0

this will automaticly parse the string. if you add &getText=all

http://www.useragentstring.com/?uas=Opera/9.70%20(Linux%20i686%20;%20U;%20en-us)%20Presto/2.2.0&getText=all

you will get a text file with key value pairs like agent_type=Browser;agent_name=Opera;agent_version=9.70...

OTHER TIPS

Browser Capabilities Project

The browscap.ini file is a database which provides a lot of details about browsers and their capabilities, such as name, versions, Javascript support and so on.

The browscap.ini, which provides a lot of details about browsers and their capabilities, such as name, versions, Javascript support and so on.

PHP's native get_browser() function parses this file and provides you with a complete set of information about every browser's details, But it requires the path to the browscap.ini file to be specified in the php.ini browscap directive which is flagged as PHP_INI_SYSTEM.

http://browscap.org/

I was looking for a searchable list of UA's. user-agents.org is searchable, but didn't have nearly enough data. I found http://www.botsvsbrowsers.com/. It is cluttered with ads, but there's a search bar on the right side that was exactly was I was looking for.

This thread is a few years old but here is a new resource in search for user agents: ua.theafh.net with 5.4 million agents. You could for example filter for browsers and use wildcard search: http://ua.theafh.net/list.php?s=%22%2A%22&include=yes&class=abr&do=desc - there is also the possibility to download search results as CSV

I found this JSON-encoded list of spiders/bots https://github.com/monperrus/crawler-user-agents appears to be regularly updated as of 2017.

Most updated resource in 2017:

https://techblog.willshouse.com/2012/01/03/most-common-user-agents/

They also provide their list in TXT format.

We have a huge database of user agents, organised by Software, Operating System, Platform, Hardware Type, Software Type and Rendering Engine:

https://developers.whatismybrowser.com/useragents/explore/

All the other user agent listings do a pretty average job of making it easy to browse related user agents, so when I built this listing, making this easy for users was one of the major priorities behind the design of it.

You can also sign up for the free API which will give you access to our User Agent Parser.

https://developers.whatismybrowser.com/api/

You can use http://botopedia.org. It also offers IP validation that helps prevent spoofing.

Since you posted your question, HTTP::BrowserDetect has since been updated. Once installed, here's how you could use it to parse a text file of user-agent strings:

cat user_agent_strings.txt | perl -nE 'use HTTP::BrowserDetect; $ua =  HTTP::BrowserDetect->new($_); say $ua->browser_string || "unknown";'
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top