What Does Your User Agent Say About You?


A user agent is a computer program representing a person, for example, a browser in a Web context.

Besides a browser, a user agent could be a bot scraping webpages, a download manager, or another app accessing the Web. Along with each request they make to the server, browsers include a self-identifying User-Agent HTTP header called a user agent (UA) string. This string often identifies the browser, its version number, and its host operating system.

Spam bots, download managers, and some browsers often send a fake UA string to announce themselves as a different client. This is known as user agent spoofing.

The user agent string can be accessed with JavaScript on the client side using the navigator.userAgent property.

A typical user agent string looks like this: "Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:35.0) Gecko/20100101 Firefox/35.0".


User Agent String

Browser Data

Php Check User Agent

Bob Roberts
• Wednesday, 06 July, 2022
• 8 min read

Making statements based on opinion; back them up with references or personal experience. Anonymous ¶ Follow up to Francesco R's post from 2016. His function works for most human traffic; added a few lines to cover the most common bot traffic.



Also fixed issue with function failing to detect strings at position 0 due to strops behavior. Ruudrp at live dot NL ¶ To my surprise I found that none of the get_browser alternatives output the correct name / version combination that I was looking for using Opera or Chrome.

They either give the wrong name e.g. Safari when in fact it should be Chrome and if the UA string includes a version number as with the latest versions of Chrome and Opera the wrong number is reported. So I took bits and pieces from the various examples and combined them and added a check for version.

“;} return array('sergeant' EU_ agent,'name' name,'version' version,'platform' platform,'pattern' pattern);} UA=browser();$yourbrowser= “Your browser: ". Francesco R ¶ If you ONLY need a very fast and simple function to detect the browser name (update to May 2016):function get_browser_name($ user _ agent){ if (strops($ user _ agent, 'Opera') || strops($ user _ agent, 'Or/')) return 'Opera'; else if (strops($ user _ agent, 'Edge')) return 'Edge'; else if (strops($ user _ agent, 'Chrome')) return 'Chrome'; else if (strops($ user _ agent, 'Safari')) return 'Safari'; else if (strops($ user _ agent, 'Firefox')) return 'Firefox'; else if (strops($ user _ agent, 'MSI') || strops($ user _ agent, 'Trident/7')) return 'Internet Explorer'; return 'Other';}echo get_browser_name($_SERVER);?>This function also resolves the trouble with Edge (that contains in the user agent the string “Safari” and “Chrome”), with Chrome (contains the string “Safari”) and IE11 (that do not contain 'MSI' like all other IE versions). Note that “strops” is the fastest function to check a string (far better than “prey_match”) and Opera + Edge + Chrome + Safari + Firefox + Internet Explorer are the most used browsers today (over 97%).

The latest version of PHP has a performance fix for this function. Jeff Williams ¶ To automatically update your browscap.ini file on Linux servers, you can use this simple shell script:You can put it in the weekly cron job folder usually located in /etc/iron.weekly just don't forget to make the script executable (ch mod 775 script name).

Tim at digital dot DE ¶ Be aware that loading PHP _browscap.ini via the brows cap PHP .ini setting may consume a non-trivial amount of memory. Current versions are several MB in size (even the “lite” one) and can eat tens of MB of RAM in each PHP process.

agent user log entries learned analyzed billion

I’d recommend comparing your processes’ memory consumption with and without PHP _browscap.ini being loaded. If necessary, consider creating your own stripped-down copy of PHP _browscap.ini with just the browsers that are important to you.

'UserAgent' EU_ agent,'name' name,'version' version,'platform' platform,'pattern' pattern);} UA=browser();$yourbrowser= “Your browser: ". Max at expert dot DE ¶ Be aware of the fact that this function shows what a specific browser might be able to show, but NOT what the user has turned on/off. So maybe this function tells you that the browser is Abel to JavaScript even when JavaScript is turned off by the user.

If (strops($ user _ agent, 'Trident/7.0; RV:')) {content_nav = 'Trident/7.0; RV:';} else if (strops($ user _ agent, 'Trident/7')) {content_nav = 'Trident/7';} else {content_nav = 'Opera';} Good practice would be to include HTML if-statements for IE stylesheets as well as dynamically checking the browser type.

P2 at eduardoruiz dot BS ¶ BE CAREFUL WITH THIS FUNCTION! ! This function uses a lot of CPU and RAM on the whole server resources. Perhaps if you use this function a few times then no problem, but NOT if you use at any page request, or once per session. Also, this function doesn't work correctly and may returns wrong values, wildcards or empty, so it's not very useful for web statistics.

Jeremie dot Legrand at komori-chambon dot for ¶ Be careful if you use the “Full” Brows cap In file in your PHP .ini config: I wondered why each Apache thread took 350 MB RAM on my server until I changed the “Full” version by the “Lite” one (45 MB to 0.7 MB)Now, each thread takes only 16 MB... So if it is enough for you, use the Lite version! Armed with this information, you can develop richer and more dynamic websites that deliver different experiences based on the user agent that is visiting.

agent user option

Providing regularly updated browscap.ini and related downloads since 1998! I was wondering, until now, why someone had not posted a slight alteration of the accepted answer to the use of implode() in order to have a better readability of the code.

Look up the browscap.ini file and return the capabilities of the browser: You can bypass this parameter with NULL return_array Optional.

If this parameter is set to TRUE, the function will return an array instead of an object Return Value:Returns an object or an array with information about the user's browser on success, or FALSE on failure PHP Version:4+Change log:The return_array parameter was added in PHP 4.3.2 There's no “standard” way of writing an user agent string, so different web browsers use different formats (some are wildly different), and many web browsers cram loads of information into their user agents.

I see how they got the Browser and IP, but could not figure out the Operating System part! The code below could explain in its own right, how is able to show which operating system someone is using.

What it does is that, it sniffs your core operating system model, for example Windows NT 5.1 as my own. Footnotes: (Jan. 19/14) There was a suggested edit on Jan. 18, 2014 to add /MSI|trident/i buy Soft a new member on SO.

user agent

I researched this for a bit, and found a few links explaining the Trident string. Although the edit was rejected (not by myself, but by some other editors), it's worth reading up on the links above, and to use your proper judgement.

As per a question asked about detecting SUSE, have found this piece of code at the following URL: Another edit, and adding a reference link that was asked (and answered/accepted today, Nov. 4/16) which may be of use.

Time Bovine 44.8k3333 gold badges124124 silver badges124124 bronze badges When you go to a website, your browser sends a request to the web server including a lot of information.

This information was all used by the web server to determine how to handle the request; the preferred language and whether compression is allowed. To see what you're sending to a web server, create a new PHP file and print out everything from the array.

This will give you a nice representation of everything that's being sent to the server, from where you can extract the desired information, e.g. $_SERVER to get the operating system and browser. The browser array has platform information included which gives you the specific Operating System in use.


As KBA explained in his answer, your browser sends a lot of information to the server while loading a webpage. $_SERVER is an array containing information such as headers, paths, and script locations.

That said, many these variables are accounted for in the CGI/1.1 specification, so you should be able to expect those. Note that few, if any, of these will be available (or indeed have any meaning) if running PHP on the command line.

' PHP _SELF The filename of the currently executing script, relative to the document root. The __FILE__ constant contains the full path and filename of the current (i.e. included) file.

SERVER_PROTOCOL Name and revision of the information protocol via which the page was requested; e.g. HTTP/1.0 '; REQUEST_METHOD Which request method was used to access the page; e.g. GET ', ' HEAD ', POST ', PUT '. PHP's script is terminated after sending headers (it means after producing any output without output buffering) if the request method was HEAD.

DOCUMENT_ROOT The document root directory under which the current script is executing, as defined in the server's configuration file. ' Not all user agents will set this, and some provide the ability to modify HTTP_REFERER as a feature.

app moodle plugins webservice filter directory mobile filtering agent user

If a script is executed with the CLI, as a relative path, such as file. ' SERVER_ADMIN The value given to the SERVER_ADMIN (for Apache) directive in the web server configuration file.

For default setups, this will be 80 '; using SSL, for instance, will change this to whatever your defined secure HTTP port is. Note : Under the Apache 2, you must set UseCanonicalName = On, as well as UseCanonicalPhysicalPort = On in order to get the physical (real) port, otherwise, this value can be spoofed and it may or may not return the physical port value.

' SERVER_SIGNATURE String containing the server version and virtual host name which are added to server-generated pages, if enabled. ' PATH_TRANSLATED File system- (not document root-) based path to the current script, after the server has done any virtual-to-real mapping.

PATH_INFO Contains any client-provided path name information trailing the actual script filename but preceding the query string, if available. For instance, if the current script was accessed via the URL PHP /path_info.

Related Videos

Other Articles You Might Be Interested In

01: Best Wget User Agent
02: Screen Reader User Agent
03: Vivaldi Change User Agent String
1 -
2 -
3 -
4 -
5 -
6 -
7 -
8 -
9 -