Detecting Browser and Browser Capabilities with PHP

Introduction

Detecting browsers and collecting data about browser capabilites can be done with Javascript or Activex, but there is still a long way away from being 100% accurate.

There are thounsands of browser types to detect. In every update of IE/Firefox or etc. the specific version of the browsers are changing.

Now, there are over 120.000 known browser UserAgents.

So, It’s hard to collect all of the data about browsers, and testing-detecting.

What is Browscap

Gary Keith says in http://browsers.garykeith.com/index.asp ;

Microsoft had a good idea when they created browscap.dll and browscap.ini to use with their web server for browser identification.

In theory, someone at Microsoft would routinely update the browscap.ini file and make it available to its customers. As a result we would all have reliable browser identification in order to know exactly what features the client’s browser supports.

Sadly, Microsoft never made any attempt to keep the file up to date.

There was a brief wellspring of volunteers who did a good job of maintaining browscap.ini for a while. Those sources are now either intentionally out of date as a way to drive product sales, or no longer exist. I can’t blame them for giving up as this is not an easy project to maintain.

Here is what I do as part of my project.

Shortly after midnight on Sunday morning the website log files for this site and over thirty other sites of various types are downloaded for analysis. Once downloaded the log files are analyzed on a number of levels. Over the years I have developed a number of systems for automatically collecting the data I need for further analysis. The vast majority of new user agents each week are variations on existing user agents in my database, so when the analysis is complete I usually wind up with around two dozen truly new and unique user agents to investigate. I typically do my research on Sunday afternoon and only a few new user agents from major search engines and popular browsers are eventually added to the files in any given week.

User agent detection is still a long ways away from being 100% accurate though because there will always be new user agents that aren’t in the files yet and hence won’t be properly identified. There are also the bugs in both browscap.dll and PHP’s get_browser(), which my files also support, to contend with. And of course there are always spoofed user agents. User agents that claim to be one thing, but in fact are often badly behaved bots masquerading as well behaved bots like Googlebot.

Approximately once a week the raw data in my database is compiled into various reports, including the all-important browscap.ini file for browser identification, and gets uploaded to this website.

Compatibility

browscap.ini is compatible with IIS 5 and later,

browscap.ini is compatible with PHP 5 and later,

browscap.ini is compatible with Sun One Asp on Windows.

Download

http://browsers.garykeith.com/downloads.asp

Frequently Asked Questions

http://browsers.garykeith.com/faq.asp

Configuration (Optional)

When you checked your php.ini file on your php folder or serve, search for “browscap”, you will find this :

[browscap]
; http://php.net/browscap
; browscap = extra/browscap.ini

You can configure the settings, and the location for browscap file.

As I said in the tittle, this is optional.

Browscap Parser

You can use one of this parsers :

https://github.com/garetjax/phpbrowscap

http://alexandre.alapetite.fr/doc-alex/php-local-browscap/index.en.html

Setting Up

Put Browscap.php (the parser) and php_browscap.ini in the same folder. Next create a new file called test.php in the same directory and put this inside it:

Next create a sub-folder called cache, Browscap.php will store information for quick access here. Now if you visit test.php in your browser (assuming it is on your server) you should see your browser info displayed to the screen!

To access individual tidbits of information simply access $data as an object:

Update

Update your browscap.ini file  very often, I offer you to check the updates weekly, or twice in a week.

Leave a Reply