- User-Agent Strings
- # Chrome for Android
- # Chrome for iOS
- # WebView on Android
- How to Correctly Form User-Agents for Mobile Apps
- The User-Agent
- How to form a meaningful User-Agents for mobile apps
- Native Android App
- Native iOS App
- Objective-C
- Swift
- Windows Phone
- Final Thoughts
- List of User Agent strings
- User-Agent list for different device types
- Android Mobile User Agents
- iPhone User Agents
- MS Windows Phone User Agents
- Tablet User Agents
- Desktop User Agents
- Set Top Boxes User Agents
- Game Consoles User Agents
- Bots and Crawlers User Agents
- E Readers User Agents
- Learn more about User-Agents
User-Agent Strings
Published on Friday, February 28, 2014 • Updated on Tuesday, November 9, 2021
With Privacy Sandbox, an origin trial is in progress for reduced User-Agent strings, designed to remove sensitive information which may be used for fingerprinting.
A browser’s User-Agent string (UA) helps identify which browser is being used, what version, and on which operating system. When feature detection APIs are not available, use the UA to customize behavior or content to specific browser versions.
Like all other browsers, Chrome for Android sends this information in the User-Agent HTTP header every time it makes a request to any site. It’s also available in the client through JavaScript using the navigator.userAgent call.
# Chrome for Android
Chrome for Android reports its UA in the following formats, depending on whether the device is a phone or a tablet.
Phone UA:
Tablet UA:
Here’s an example of the Chrome user agent string on a Galaxy Nexus:
If you are parsing user agent strings using regular expressions, the following can be used to check against Chrome on Android phones and tablets:
- Phone pattern: ‘Android’ + ‘Chrome/[.0-9]* Mobile’
- Tablet pattern: ‘Android’ + ‘Chrome/[.0-9]* (?!Mobile)’
# Chrome for iOS
The UA in Chrome for iOS is the same as the Mobile Safari user agent, with CriOS/ instead of Version/ .
Here’s an example of the Chrome UA on iPhone:
For comparison, the Mobile Safari UA:
Up to Chrome 84, when the Request Desktop Site feature is enabled, the Desktop Safari UA is sent:
Starting from Chrome 85, when the Request Desktop Site feature is enabled, the UA is the same as the Desktop Safari UA with CriOS/ being added:
# WebView on Android
The Android 4.4 (KitKat) Chromium-based WebView adds Chrome/_version_ to the user agent string.
WebView UA in KitKat to Lollipop
If you’re attempting to differentiate between the WebView and Chrome for Android, you should look for the presence of the Version/_X.X_ string in the WebView user-agent string. Don’t rely on the specific Chrome version number (for example, 30.0.0.0) as the version numbers changes with each release.
WebView UA in Lollipop and Above
In the newer versions of WebView, you can differentiate the WebView by looking for the wv field as highlighted below.
With Privacy Sandbox, an origin trial is in progress for reduced User-Agent strings, designed to remove sensitive information which may be used for fingerprinting.
Last updated: Tuesday, November 9, 2021 Improve article
Источник
How to Correctly Form User-Agents for Mobile Apps
Nov 15th, 2017
Native apps, Mobile apps, or just apps. We call them different things and we use them all the time. From a business perspective, apps complement mobile and desktop sites. They are natural extension of an online strategy. Because of this, it’s important to take the necessary steps to make sure the native apps, and their versions, are identifiable. This is critical both from an analytics perspective as well as from a devops or support perspective. Native apps have much in common with the web. Apps often use the same online resources as the web site like RESTful APIs, images or videos. Because these resources are shared, it is very important to correctly form User-Agents for mobile apps to identify who is using the resources. Is the user on the Android app or iOS app? Which version of the app? Which OS version? And so on.
There are two kinds of mobile apps: 1) fully native apps, and 2) webview-based hybrid apps. In this post, we will focus on fully native apps where HTTP requests are sent by the native code.
If you are interested in webview-based hybrid apps where a browser window is wrapped in a native shell, then check out this other post on User-Agent strings for hybrid webview apps.
The User-Agent
There is already an industry standard for device identification that apps can also use. It’s the User-Agent string. The User-Agent string is a field in the HTTP header that can identify the app that is making the request. In a web browsing experience, the User-Agent is set by the browser (which is also an app). Now, instead of a browser, our native app will be making the HTTP request. When we’re developing a native app for a mobile phone, we need to take steps to ensure our User-Agent includes information that is meaningful. Otherwise the app will get the default values, which is not very helpful in any context.
How to form a meaningful User-Agents for mobile apps
The “User-Agent” header field contains information about the user agent originating the request, which is often used by servers to help identify the scope of reported interoperability problems, to work around or tailor responses to avoid particular user agent limitations, and for analytics regarding browser or operating system use.
The specification goes in more detail and concludes that User-Agents should consist of one or more product identifiers and optional versions. By convention, the product identifiers are listed in decreasing order of their significance for identifying the User-Agent software.
Let’s dive right in and see how to compose meaningful User-Agent strings for native apps in the different platforms:
Native Android App
Based on the specification above, the template we want for the User-Agent of our app is:
The significant part here is “Myapp/1” which identifies the native app and the version of the app. This is the most significant. The rest of the string identifies the underlying software. In Android, it is relatively easy to compose a custom User-Agent string. Here is some sample code:
If you’re using the popular Picasso library, then the composition is similar. However, the actual request is made in a slightly different way. Have a look a this example app built with Picasso on Github.
Native iOS App
User-Agents for iOS are slightly more complex due to the fact that we have to account for both Objective-C and Swift. A default User-Agent in iOS may look something like this:
In iOS a component called “CFNetwork” handles the network communications. Also involved is the UNIX version iOS is built on: “Darwin”. Both of these are mentioned in the default User-Agent. In addition there may be a custom app identifier added. So not very meaningful.
In order to construct a more meaningful User-Agent we need more information added to it, like so:
The main challenge in constructing the User-Agent in iOS is to collect all the parameters needed. For example, it is not obvious how to find the CFNetwork- and Darwin values. We’ve wrote an example app in Objective-C and Swift with the functionality needed to gather all bits that go into the User-Agent string. Feel free to use it. Once the bits are collected, just call the function to compose the User-Agent before you make a request:
Objective-C
For full code of the getUAString() function, see Github.
Swift
For full code of the getUAString() function, see Github.
Windows Phone
Even if not as popular as Android and iOS, Windows Phone is also worth mentioning. The semantic of the User-Agent is similar:
You can get the device brand name and model name from the EasClientDeviceInformation class with the SystemManufacturer and SystemProductName properties. The OS version can be extracted from DeviceFamilyVersion property in the AnalyticsVersionInfo class.
Final Thoughts
Even if your favorite library or framework is not covered in this post, these examples should be generic enough to be transferred to any framework. It’s worth spending the additional few minutes of development to make sure the User-Agent of your app is meaningful and conforms to specification. Your analytics, devops, and debugging will all benefit. And likewise, you can leverage this device detection to target specific devices, apps, or app versions on specific platforms with messages, ads or content.
This article covered User-Agents in fully native apps. If your app is a webview based app (or hybrid app), then read “Correctly Form User-Agents for Webview Apps”
Источник
List of User Agent strings
Published: 23 October 2018
The User-Agent (UA) string is contained in the HTTP headers and is intended to identify devices requesting online content. The User-Agent tells the server what the visiting device is (among many other things) and this information can be used to determine what content to return. Of course this requires using a device detection solution which translates UAs into understandable software and hardware information.
User-Agent list for different device types
There are millions of User-Agent combinations given that UAs change with the software and hardware. For example, a Chrome browser on an iPhone 6 will introduce itself using a different UA than a Safari browser on the same phone.
Every device type, including phones, tablets, desktops, may come with its own UA that makes it possible to detect this device for any purpose. Interestingly bots and crawlers also come with their unique UAs.
Here is a list of example User-Agents for different device types that can be detected. If you’d like to learn more on these devices, just copy and paste the UAs to our User-Agent testing tool. You’ll see all the properties of a detected device.
Get access to a free, trial version of DeviceAtlas.
Android Mobile User Agents
Samsung Galaxy S9 |
---|
Mozilla/5.0 (Linux; Android 8.0.0; SM-G960F Build/R16NW) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/62.0.3202.84 Mobile Safari/537.36 |
Samsung Galaxy S8 |
---|
Mozilla/5.0 (Linux; Android 7.0; SM-G892A Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/60.0.3112.107 Mobile Safari/537.36 |
Samsung Galaxy S7 |
---|
Mozilla/5.0 (Linux; Android 7.0; SM-G930VC Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/58.0.3029.83 Mobile Safari/537.36 |
Samsung Galaxy S7 Edge |
---|
Mozilla/5.0 (Linux; Android 6.0.1; SM-G935S Build/MMB29K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Mobile Safari/537.36 |
Samsung Galaxy S6 |
---|
Mozilla/5.0 (Linux; Android 6.0.1; SM-G920V Build/MMB29K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36 |
Samsung Galaxy S6 Edge Plus |
---|
Mozilla/5.0 (Linux; Android 5.1.1; SM-G928X Build/LMY47X) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36 |
Nexus 6P |
---|
Mozilla/5.0 (Linux; Android 6.0.1; Nexus 6P Build/MMB29P) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.83 Mobile Safari/537.36 |
Sony Xperia XZ |
---|
Mozilla/5.0 (Linux; Android 7.1.1; G8231 Build/41.2.A.0.219; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/59.0.3071.125 Mobile Safari/537.36 |
Sony Xperia Z5 |
---|
Mozilla/5.0 (Linux; Android 6.0.1; E6653 Build/32.2.A.0.253) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.36 |
HTC One X10 |
---|
Mozilla/5.0 (Linux; Android 6.0; HTC One X10 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/61.0.3163.98 Mobile Safari/537.36 |
HTC One M9 |
---|
Mozilla/5.0 (Linux; Android 6.0; HTC One M9 Build/MRA58K) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.98 Mobile Safari/537.3 |
If you’re wondering which devices are most common where you are, read our list of the world’s most popular Android devices.
iPhone User Agents
Below are examples of User Agent strings used by the most popular iPhone devices. As Apple do not pass much info through the User Agent, version numbers don’t allow us differentiate between iPhone models.
However, with DeviceAtlas client-side, you can classify these user agents to return correct device model.
The Complete Guide To User Agents.
Download our free e-book on User Agents to learn:
- What is a User Agent?
- How do you parse them?
- What can you do with them?
For more on how to detect exact iPhone 8/8 Plus and iPhone X models, read our guides on How To Detect iPhone 8/X and how to detect the latest iPhones — the XR, XS and XS Max.
Apple iPhone XR (Safari) |
---|
Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.0 Mobile/15E148 Safari/604.1 |
Apple iPhone XS (Chrome) |
---|
Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) CriOS/69.0.3497.105 Mobile/15E148 Safari/605.1 |
Apple iPhone XS Max (Firefox) |
---|
Mozilla/5.0 (iPhone; CPU iPhone OS 12_0 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) FxiOS/13.2b11866 Mobile/16A366 Safari/605.1.15 |
Apple iPhone X |
---|
Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A372 Safari/604.1 |
Apple iPhone 8 |
---|
Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.34 (KHTML, like Gecko) Version/11.0 Mobile/15A5341f Safari/604.1 |
Apple iPhone 8 Plus |
---|
Mozilla/5.0 (iPhone; CPU iPhone OS 11_0 like Mac OS X) AppleWebKit/604.1.38 (KHTML, like Gecko) Version/11.0 Mobile/15A5370a Safari/604.1 |
Apple iPhone 7 |
---|
Mozilla/5.0 (iPhone9,3; U; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A403 Safari/602.1 |
Apple iPhone 7 Plus |
---|
Mozilla/5.0 (iPhone9,4; U; CPU iPhone OS 10_0_1 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A403 Safari/602.1 |
Apple iPhone 6 |
---|
Mozilla/5.0 (Apple-iPhone7C2/1202.466; U; CPU like Mac OS X; en) AppleWebKit/420+ (KHTML, like Gecko) Version/3.0 Mobile/1A543 Safari/419.3 |
MS Windows Phone User Agents
Microsoft Lumia 650 |
---|
Mozilla/5.0 (Windows Phone 10.0; Android 6.0.1; Microsoft; RM-1152) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/52.0.2743.116 Mobile Safari/537.36 Edge/15.15254 |
Microsoft Lumia 550 |
---|
Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; RM-1127_16056) AppleWebKit/537.36(KHTML, like Gecko) Chrome/42.0.2311.135 Mobile Safari/537.36 Edge/12.10536 |
Microsoft Lumia 950 |
---|
Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Microsoft; Lumia 950) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.1058 |
Tablet User Agents
Google Pixel C |
---|
Mozilla/5.0 (Linux; Android 7.0; Pixel C Build/NRD90M; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36 |
Sony Xperia Z4 Tablet |
---|
Mozilla/5.0 (Linux; Android 6.0.1; SGP771 Build/32.2.A.0.253; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/52.0.2743.98 Safari/537.36 |
Nvidia Shield Tablet K1 |
---|
Mozilla/5.0 (Linux; Android 6.0.1; SHIELD Tablet K1 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/55.0.2883.91 Safari/537.36 |
Samsung Galaxy Tab S3 |
---|
Mozilla/5.0 (Linux; Android 7.0; SM-T827R4 Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/60.0.3112.116 Safari/537.36 |
Samsung Galaxy Tab A |
---|
Mozilla/5.0 (Linux; Android 5.0.2; SAMSUNG SM-T550 Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) SamsungBrowser/3.3 Chrome/38.0.2125.102 Safari/537.36 |
Amazon Kindle Fire HDX 7 |
---|
Mozilla/5.0 (Linux; Android 4.4.3; KFTHWI Build/KTU84M) AppleWebKit/537.36 (KHTML, like Gecko) Silk/47.1.79 like Chrome/47.0.2526.80 Safari/537.36 |
LG G Pad 7.0 |
---|
Mozilla/5.0 (Linux; Android 5.0.2; LG-V410/V41020c Build/LRX22G) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/34.0.1847.118 Safari/537.36 |
If you’re looking for a list of mobile browser user-agents, we’ve got them too — List Of Mobile Browser User-Agent Strings .
Desktop User Agents
Windows 10-based PC using Edge browser |
---|
Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/42.0.2311.135 Safari/537.36 Edge/12.246 |
Chrome OS-based laptop using Chrome browser (Chromebook) |
---|
Mozilla/5.0 (X11; CrOS x86_64 8172.45.0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.64 Safari/537.36 |
Mac OS X-based computer using a Safari browser |
---|
Mozilla/5.0 (Macintosh; Intel Mac OS X 10_11_2) AppleWebKit/601.3.9 (KHTML, like Gecko) Version/9.0.2 Safari/601.3.9 |
Windows 7-based PC using a Chrome browser |
---|
Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/47.0.2526.111 Safari/537.36 |
Linux-based PC using a Firefox browser |
---|
Mozilla/5.0 (X11; Ubuntu; Linux x86_64; rv:15.0) Gecko/20100101 Firefox/15.0.1 |
Bring device intelligence to your web applications in minutes.
For the web, native apps and mobile operator environments.
Set Top Boxes User Agents
Chromecast |
---|
Mozilla/5.0 (CrKey armv7l 1.5.16041) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/31.0.1650.0 Safari/537.36 |
Roku Ultra |
---|
Roku4640X/DVP-7.70 (297.70E04154A) |
Minix NEO X5 |
---|
Mozilla/5.0 (Linux; U; Android 4.2.2; he-il; NEO-X5-116A Build/JDQ39) AppleWebKit/534.30 (KHTML, like Gecko) Version/4.0 Safari/534.30 |
Amazon 4K Fire TV |
---|
Mozilla/5.0 (Linux; Android 5.1; AFTS Build/LMY47O) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/41.99900.2250.0242 Safari/537.36 |
Google Nexus Player |
---|
Dalvik/2.1.0 (Linux; U; Android 6.0.1; Nexus Player Build/MMB29T) |
Apple TV 5th Gen 4K |
---|
AppleTV6,2/11.1 |
Apple TV 4th Gen |
---|
AppleTV5,3/9.1.1 |
Game Consoles User Agents
Nintendo Wii U |
---|
Mozilla/5.0 (Nintendo WiiU) AppleWebKit/536.30 (KHTML, like Gecko) NX/3.0.4.2.12 NintendoBrowser/4.3.1.11264.US |
Xbox One S |
---|
Mozilla/5.0 (Windows NT 10.0; Win64; x64; XBOX_ONE_ED) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/51.0.2704.79 Safari/537.36 Edge/14.14393 |
Xbox One |
---|
Mozilla/5.0 (Windows Phone 10.0; Android 4.2.1; Xbox; Xbox One) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/46.0.2486.0 Mobile Safari/537.36 Edge/13.10586 |
Playstation 4 |
---|
Mozilla/5.0 (PlayStation 4 3.11) AppleWebKit/537.73 (KHTML, like Gecko) |
Playstation Vita |
---|
Mozilla/5.0 (PlayStation Vita 3.61) AppleWebKit/537.73 (KHTML, like Gecko) Silk/3.2 |
Nintendo 3DS |
---|
Mozilla/5.0 (Nintendo 3DS; U; ; en) Version/1.7412.EU |
Bots and Crawlers User Agents
Google bot |
---|
Mozilla/5.0 (compatible; Googlebot/2.1; +http://www.google.com/bot.html) |
Bing bot |
---|
Mozilla/5.0 (compatible; bingbot/2.0; +http://www.bing.com/bingbot.htm) |
Yahoo! bot |
---|
Mozilla/5.0 (compatible; Yahoo! Slurp; http://help.yahoo.com/help/us/ysearch/slurp) |
E Readers User Agents
Amazon Kindle 4 |
---|
Mozilla/5.0 (X11; U; Linux armv7l like Android; en-us) AppleWebKit/531.2+ (KHTML, like Gecko) Version/5.0 Safari/533.2+ Kindle/3.0+ |
Amazon Kindle 3 |
---|
Mozilla/5.0 (Linux; U; en-US) AppleWebKit/528.5+ (KHTML, like Gecko, Safari/528.5+) Version/4.0 Kindle/3.0 (screen 600×800; rotate) |
Learn more about User-Agents
If you’re looking for more information on User-Agents, be sure to read these posts on the DeviceAtlas blog:
Get Instant access to a DeviceAtlas Cloud trial
DeviceAtlas Cloud offer a great way to start detecting mobile device traffic to your site:
- Optimize website content for mobile, tablet, and other devices
- Boost website loading time and minimize page weight
- Handle traffic from any device as you want
Get started with a DeviceAtlas Cloud trial today.
Источник