Fact-checked by Grok 2 weeks ago

User-Agent header

The User-Agent header is a request header field in the Hypertext Transfer Protocol (HTTP) that conveys a characteristic string identifying the client software—typically a , mobile application, or automated agent—originating the request, including details such as the software's name, version, operating system, and sometimes vendor or device specifics. Defined initially in HTTP/1.0 for statistical and compatibility purposes, it enables servers to adapt responses based on perceived client capabilities, such as rendering optimized content or logging usage patterns, though its reliability has diminished due to widespread manipulation. Historically, the User-Agent string evolved from simple identifiers in early browsers like and , with many modern implementations retaining "Mozilla" prefixes for compatibility with sites expecting legacy formats, leading to convoluted strings that prioritize over precision. Servers have long employed user-agent sniffing to infer support for features like or CSS variants, but this practice often results in suboptimal experiences when strings are inconsistent or falsified. A defining characteristic is its vulnerability to spoofing, where malicious actors or tools alter the string to masquerade as legitimate clients, facilitating activities such as , bypassing access controls, or evading detection in automated scraping—issues exacerbated by the header's optional nature and lack of cryptographic verification. Privacy advocates criticize it for leaking identifiable without user consent, prompting initiatives like Chrome's User-Agent Reduction and the shift toward proactive Client Hints (e.g., Sec-CH-UA headers) to provide granular, opt-in capability signals instead of opaque strings. These evolutions reflect ongoing tensions between server optimization needs and client , with no universal enforcement mechanism ensuring truthful reporting.

History and Evolution

Origins and Early Standards

The User-Agent header was first introduced in the HTTP/1.0 specification, outlined in RFC 1945, published in May 1996 by the (IETF). This request-header field was defined as a free-form string providing information about the originating user agent, such as the client software initiating the request. Its syntax permitted one or more products or comments, allowing flexible identification without mandating a rigid structure, e.g., User-Agent: CERN-LineMode/2.15 [libwww](/page/Libwww)/2.17b3. The primary intent behind the header in HTTP/1.0 was to facilitate statistical tracking of client usage and to aid in diagnosing protocol violations, enabling servers to log and analyze request origins for and optimization. This design reflected the 's emphasis on in a nascent environment, where servers could use the string to infer basic client characteristics and tailor responses accordingly, such as adjusting content formats for compatibility. User agents were encouraged to include configurable details, but no parsing rules were enforced, prioritizing simplicity over prescriptive validation. Subsequent refinements appeared in HTTP/1.1 specifications, with RFC 7231 in June 2014 providing a more formalized description while preserving the header's inherent flexibility. Here, the User-Agent was specified to convey details about the software, often employed by servers to scope requests and generate appropriate handling, such as selecting response variants based on inferred capabilities. Unlike stricter headers, it eschewed mandatory syntax enforcement, acknowledging the diverse and evolving nature of client implementations, and recommended against reliance on precise parsing due to potential variability. This approach maintained with HTTP/1.0 while supporting broader adoption in distributed systems.

Browser Compatibility Wars and String Complexity

Netscape Navigator, released in December 1994, introduced the "Mozilla" prefix in its User-Agent string, such as "Mozilla/1.0 (Win3.1)", derived from "Mosaic Killer" to signify its intent to surpass the browser while signaling advanced capabilities to servers. Websites increasingly performed server-side checks for "Mozilla" to deliver enhanced content like and , as pioneered these features amid the burgeoning web in the mid-1990s. Competitors, notably Microsoft Internet Explorer (IE) from its 1995 debut, adopted similar prefixes to masquerade as Netscape-compatible, exemplified by strings like "Mozilla/1.0 (compatible; MSIE 1.0; )" or later "Mozilla/2.0 (compatible; MSIE 3.02; )". This imitation ensured access to Netscape-optimized content during the , where market share battles incentivized deception over transparency, as servers favored perceived Netscape users. The 1990s-2000s saw escalation with browsers appending rival-mimicking tokens, such as for 6/ (e.g., "Mozilla/5.0 (Windows; U; 5.1; en-US; rv:0.9.4) /20011128 6/6.2.1" in 2000) and for (2003 onward, e.g., "Mozilla/5.0 (Macintosh; U; PPC Mac OS X; en) Apple/124 (, like ) /125.1"). 's 2008 launch further bloated strings, like "Mozilla/5.0 (Windows; U; 5.1; en-US) Apple/525.13 (, like ) /0.2.149.29 /525.13", layering multiple false compatibilities (, /, ). By 2008, IE strings exemplified bloat, such as "Mozilla/4.0 (compatible; MSIE 8.0; 6.0; /4.0; GTB6.5; Mozilla/4.0 (compatible; MSIE 6.0; 5.1; SV1) ; .NET CLR 3.0.30729; .NET4.0C; .NET4.0E; Alexa Toolbar)", incorporating nested engines, OS details, and plugins that obscured origins and hindered reliable parsing despite minimal added utility. This proliferation of misleading tokens, driven by competitive spoofing, rendered strings increasingly convoluted without commensurate benefits for identification.

Technical Definition and Format

Specification in HTTP Protocols

The User-Agent header is defined in HTTP/1.1 as an optional request header field that contains a string identifying the originating , typically used by servers to assess issues, customize content, or analyze client capabilities. According to RFC 7231, Section 5.5.3, user agents are encouraged but not required to include this field in requests unless explicitly configured otherwise, reflecting a design choice that avoids mandating disclosure to accommodate diverse implementations. The header's value follows the Augmented Backus-Naur Form (ABNF) syntax: User-Agent = product *( RWS ( product / comment ) ), where product consists of a token optionally followed by a slash and version token (e.g., token[/token]), and comments allow parenthetical remarks. Product tokens represent software components in conventionally decreasing order of significance, but the specification imposes no strict enforcement of this ordering, nor requirements for uniqueness among tokens or completeness of information provided. Senders are advised to limit content to essential identifiers, excluding advertising or extraneous details, to maintain utility without bloating the field. This non-prescriptive approach in the HTTP standards prioritizes server-side flexibility in interpreting the header over standardized client obligations, enabling varied adoption across user agents while contributing to inconsistencies in practice due to optional compliance and potential extensions. Earlier HTTP/1.0 specifications in RFC 1945 similarly outlined the header as a sequence of product tokens without rigid constraints, establishing a for permissive formatting that persists in protocols.

Structure and Common Components

The User-Agent header field in HTTP/1.1 consists of a characteristic string conveying details about the originating client, structured as one or more separated by slashes or spaces, with optional comments in parentheses, as specified without mandating a rigid . This free-form composition allows flexibility but results in varied formats across clients, reflecting no enforced universal beyond basic token grammar. Browser User-Agent strings typically incorporate core elements such as an application identifier with version (e.g., browser name), platform details including operating system and hardware architecture, rendering engine identifiers, and compatibility tokens derived from legacy conventions. For example, a standard string from on a 64-bit Windows system follows the pattern: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36, where "Mozilla/5.0" serves as a historical shim for compatibility, the parenthesized segment details the OS and CPU, AppleWebKit denotes the with a version, and trailing tokens specify the and an emulated Safari component. Similar patterns appear in other browsers, such as Firefox's inclusion of details post-platform: Mozilla/5.0 (Windows NT 10.0; Win64; x64; rv:120.0) Gecko/20100101 Firefox/120.0. In contrast, bot and crawler User-Agent strings prioritize brevity and direct identification, often omitting elaborate compatibility layers. , for instance, employs a concise format like Googlebot/2.1, appending verification URLs in some contexts but avoiding the bloat of browser-like tokens. These variations stem from the absence of a prescriptive , enabling historical accretions in strings—such as layered compatibility identifiers from past rendering engine rivalries—that frequently push lengths beyond 200 characters in complex cases.

Primary Uses in HTTP Requests

Client Identification for Servers

Servers parse the User-Agent header to identify key client attributes, such as the application type, operating system, and class, allowing for tailored content delivery. This enables -specific rendering, where servers detect indicators like "Mobile" or "Android" in the string to serve optimized layouts, such as responsive mobile versions versus full interfaces, thereby improving on varied hardware. For instance, pre-2010 web development relied heavily on such for basic , as and fragmentation necessitated server-side adjustments to handle rendering differences without mature client-side alternatives like modern CSS . The header also supports indirect feature detection by correlating user agent strings with known capabilities, such as JavaScript engine versions or rendering engine support, though this approach demands maintenance against evolving strings. In practice, servers map parsed components—e.g., browser tokens like "" or OS identifiers like ""—to predefined profiles for serving compatible assets, a that persists despite reliability concerns. For bot management, servers examine the header for explicit crawler indicators, such as "bot" substrings or vendor-specific tokens (e.g., ""), to differentiate automated agents from human clients and enforce policies like permissive indexing for search engines or stricter rate-limiting for non-essential scrapers. This allows granular control, such as granting higher request quotas to verified search crawlers while throttling unidentified bots to prevent resource overload, a common server-side safeguard rooted in the header's original intent for peer identification.

Differentiation Between Browsers and Bots

Web browsers operated by humans generate User-Agent strings that are typically lengthy and layered to promote with diverse expectations, incorporating historical identifiers like "Mozilla/5.0", operating system details (e.g., " 10.0; Win64; x64"), rendering engine tokens (e.g., "AppleWebKit/537.36"), and the 's specific version. For example, version 120's string includes "(KHTML, like ) Chrome/120.0.0.0 /537.36" to emulate behaviors from earlier engines, ensuring access to content optimized for those formats. This structure reflects evolutionary adaptations from conflicts, where strings signal rendering capabilities and specifics to influence responses. Automated bots and crawlers, by contrast, employ concise and explicit User-Agent strings that prioritize identification of the agent itself over rendering emulation, such as "/7.68.0" for the libcurl-based tool or "Twitterbot/1.0" for Twitter's content fetcher, often appending verification URLs or version numbers without extraneous browser-like tokens. These formats declare non-interactive, programmatic access intent, frequently embedding terms like "bot" or the service name (e.g., "/2.1") to distinguish from human-driven sessions. Unlike browsers, bots commonly forgo detailed engine or OS chains, as they do not process /CSS rendering, reducing string bloat while enabling servers to apply targeted handling. This formatting divergence supports server-side differentiation, with conventions urging bots to use verifiable, self-declaring strings for adherence to site policies like , where directives target specific User-Agent tokens (e.g., "User-agent: ") to grant or restrict crawling paths. Ethical bot operators align their strings with these identifiers to demonstrate compliance, fostering trust in automated requests versus traffic that assumes full-page rendering needs. Such practices, outlined in web standards since the mid-1990s, aid in by signaling bots' limited content requirements compared to browsers' comprehensive feature negotiations.

Associated Practices and Techniques

User-Agent Spoofing

User-Agent spoofing involves the intentional modification or fabrication of the User-Agent string in HTTP requests to misrepresent the client's , operating system, version, or device characteristics. This practice is facilitated through various techniques, including extensions that allow users to select and apply arbitrary strings (e.g., mimicking popular s like or ), command-line tools such as with the --user-agent flag for custom headers in scripted requests, and programmatic alterations in bot frameworks where scripts generate or rotate strings to emulate legitimate traffic. The primary motivation for spoofing stems from fraudulent activities, particularly ad fraud, where automated bots impersonate human-operated browsers to inflate metrics like impressions and clicks, thereby siphoning . In 2023, digital ad fraud accounted for 22% of global ad spend, equating to $84 billion in losses, with bots frequently employing User-Agent spoofing to bypass detection mechanisms that filter non-browser traffic. Bad bots increasingly masquerade as mobile user agents, rising from 28.1% in 2020 to 39.1% in 2022, enabling them to exploit mobile-optimized ad inventory while evading analytics reliant on authentic client identification. Another motivation is testing or evasion of site restrictions, where developers or users alter strings to access content blocked for outdated or non-standard clients. For privacy enhancement, certain anonymity-focused tools standardize or obscure the User-Agent to reduce uniqueness in fingerprinting profiles, making aggregated user behavior harder to distinguish. The Tor Browser, for instance, has employed consistent User-Agent spoofing since the early 2010s to report a uniform string (typically emulating Firefox on Windows) across all instances, thereby thwarting tracking via version discrepancies and promoting herd anonymity over individual randomization. This approach obscures the true underlying OS and browser details without varying per user, contrasting with randomization which can inadvertently increase detectability. Empirical evidence underscores the prevalence of spoofing, as it undermines User-Agent-based analytics and bot mitigation; for example, fraudsters' routine use of spoofed strings contributes to scenarios where up to one in five ad-serving sites receives traffic predominantly from fraudulent bots.

User-Agent Sniffing by Servers

Servers parse the User-Agent header using regular expressions or dedicated libraries to identify the client's browser type, version, and operating system, thereby applying conditional logic for content delivery, such as serving version-specific CSS rules or polyfills. This extraction enables servers to tailor responses based on presumed rendering behaviors or supported features, for example, detecting "MSIE" strings in historical contexts to apply Internet Explorer-targeted CSS hacks for layout corrections. A primary methodological flaw arises from false positives triggered by compatibility strings, where browsers embed identifiers mimicking predecessors to bypass restrictive site logic; WebKit-based browsers, for instance, include "like Gecko" phrases that can misclassify them as engines absent careful negative checks for absent tokens like "Chrome/xyz" in detection. Another pitfall involves version detection lag, as browsers like issue major releases every four weeks, frequently introducing or altering features faster than servers update rules, resulting in mismatched assumptions about capabilities. Fundamentally, this practice errs by deducing functional capabilities from nominal identity— name and —rather than empirical verification, ignoring that feature presence causally determines compatibility independent of labels, which may encompass bugs, partial implementations, or divergences across engines claiming similarity. Documentation from , for example, highlights that such inference fails when versions do not uniformly correlate with support, advocating direct testing of features like navigator.geolocation availability to confirm actual implementation over reliance on string-derived proxies.

Privacy, Security, and Reliability Issues

Fingerprinting and Tracking Vulnerabilities

The User-Agent (UA) header contributes to fingerprinting by disclosing detailed, quasi-stable attributes about the client software and environment, such as name, , rendering , operating , and sometimes details, which servers and third-party trackers collect passively with every HTTP request. When aggregated with other signals like canvas rendering, font enumeration, and screen parameters, these details form a high- profile that uniquely identifies users across sites and over time, often achieving identification rates exceeding 90% in controlled studies. For instance, the Electronic Frontier Foundation's (EFF) Panopticlick analysis, based on data from over 1.3 million s in 2010, quantified the UA string's at approximately 10 bits, meaning it reduces the anonymity set by distinguishing among roughly 1,000 configurations on its own, amplifying uniqueness when combined with complementary data. This persists even in modern s, as UA strings retain version-specific markers that correlate with user cohorts. Such fingerprinting enables persistent cross-site tracking without or explicit , allowing ad networks and firms to build user profiles for behavioral targeting, which privacy researchers criticize as undermining user and facilitating surveillance capitalism. Trackers exploit UA variability—e.g., rare combinations like niche extensions or OS versions—to re-identify individuals, evading measures like GDPR's requirements by relying on "inferred" rather than direct , though actions have highlighted non-compliance in cases involving aggregated signals. Conversely, UA data supports server-side bot detection, where authentic strings help differentiate human traffic from scripted agents; malicious bots routinely spoof common UAs (e.g., mimicking on Windows) to evade blocks, but legitimate depend on UA granularity to segment traffic by device type and filter anomalies, with studies showing spoofing detection accuracy drops below 50% without it. While privacy advocates prioritize UA reduction to curb these risks—citing its role in enabling unconsented —the header's original purpose was , allowing servers to tailor responses for rather than , a distinction often overlooked in favor of blanket that impairs prevention and content optimization without verifiable privacy gains proportional to the utility loss. Empirical tests confirm that UA alone rarely suffices for unique tracking but multiplies risks in ensemble methods, underscoring the need for contextual evaluation over absolutist reforms.

Unreliability Due to Manipulation and Bloat

The User-Agent header's reliability is compromised by structural bloat, as browser strings have accumulated layers of legacy compatibility tokens over time to appease sites dependent on imprecise sniffing. For example, Chromium-based browsers like Microsoft Edge, since its 2015 transition to the Blink engine, incorporate tokens referencing obsolete engines such as Gecko and AppleWebKit (e.g., "Mozilla/5.0 ... Chrome/... Safari/... Edg/..."), mimicking historical identifiers to avoid breakage from legacy server logic. This accretion results in strings exceeding 200 characters in length, fostering parsing complexity where minor variations—due to versioning, platform specifics, or rendering engine references—lead to inconsistent server interpretations and compatibility failures. Such bloat has prompted developer critiques, including early calls for simplification, as the embedded historical artifacts obscure genuine client attributes and amplify error rates in automated detection systems. Ongoing manipulation further erodes trustworthiness, with spoofing rampant in traffic to evade filters or mimic desirable clients. Fraudulent actors routinely alter User-Agent strings in ad campaigns and bot operations, a tactic highlighted in analyses of invalid where spoofed identifiers blend malicious requests with legitimate ones. Industry data from 2023 reveals that up to 38% of is automated, with a substantial subset involving User-Agent alterations to perpetrate , rendering traditional sniffing unreliable for distinguishing bots from users. This prevalence of tampering, combined with bloat-induced ambiguities, yields empirical misidentification rates in detection, as servers conflate spoofed or bloated strings, often resulting in suboptimal content delivery or oversights. From a causal standpoint, these intertwined issues—historical accretion driving parse fragility and deliberate falsification exploiting that fragility—undermine the header's foundational role in , as evidenced by persistent pitfalls for non-dominant browsers and the rising baseline of fraudulent signals in traffic logs. Reliance on such a degraded signal perpetuates systemic errors rather than resolving them through verifiable, manipulation-resistant mechanisms.

Deprecation Initiatives and Modern Alternatives

Browser-Led Reduction Efforts

launched User-Agent reduction in phases beginning with experimental trials in Chrome 91 in May 2021, followed by origin trials from Chrome 95 through Chrome 100 starting in September 2021 to allow site testing and feedback on compatibility impacts. By Chrome 101 in April 2022, minor, build, and patch version numbers were hidden, replacing them with "0.0.0" in the string, with full rollout of the reduced format across all page loads occurring in 113 in April 2023. These changes aimed to curb fingerprinting by limiting passively shared data, though developers reported compatibility issues requiring adjustments for sites reliant on precise version detection. Subsequent refinements in early 2023 further restricted OS details, such as omitting device models and full version strings, with incremental limitations continuing into 2024 to address persistent vectors while monitoring web breakage. Mozilla Firefox initiated reductions to streamline its historically verbose User-Agent string starting with version 60, released on May 9, 2018, by eliminating unnecessary compatibility tokens that bloated the header without functional benefit. These efforts evolved to prioritize privacy by minimizing high-entropy details, aligning with platform-level privacy tools like Apple's App Privacy Manifests introduced in 2024, which enforce stricter data exposure controls in browser extensions and apps. Compatibility challenges arose for legacy web applications parsing the original detailed format, prompting to provide override mechanisms and for transitions, though full of legacy tokens proceeded gradually to avoid widespread disruptions. Apple's , powered by , pioneered User-Agent freezing in 2017 to standardize strings across browsers and reduce version-specific identifiers exploitable for tracking, a policy enforced via WebKit's shared rendering engine. With 17's release on September 18, 2023, WebKit further obscured granular version and platform details in the header to thwart fingerprinting entropy, such as generalizing indicators that previously revealed precise OS builds. This approach faced hurdles from web developers accustomed to iOS-specific sniffing for feature detection, leading Apple to recommend Client Hints alternatives, but reductions persisted to prioritize user anonymity over legacy parsing reliability.

Transition to Client Hints and Other Protocols

Client Hints enable servers to request targeted user agent details from clients through an opt-in process, serving as a structured alternative to the monolithic User-Agent header. In this protocol, a server signals interest by including the Accept-CH response header, listing specific hints such as Sec-CH-UA for browser brand and significant version, Sec-CH-UA-Platform for the operating system platform, or Sec-CH-UA-Mobile indicating mobile device status. The client then appends the requested Sec-CH-* headers to subsequent requests, delivering parsed, low-entropy data like "Chromium";v="128", "Google Chrome";v="128" for Sec-CH-UA. This mechanism, outlined in the User-Agent Client Hints specification, also exposes information via a JavaScript API (navigator.userAgentData), allowing dynamic querying after permission checks. The primary advantages stem from its proactive, server-driven disclosure model, which minimizes unsolicited data transmission and supports . By decoupling identification from every HTTP request and providing only necessary fields, Client Hints curb passive ; for instance, User-Agent reduction paired with hints limits default fingerprinting vectors, as passive string parsing yields less distinguishing . Chromium's implementation has demonstrated measurable gains, with reduced header bloat correlating to lower tracking efficacy in controlled tests. Security enhancements include bitness indicators (Sec-CH-UA-Bitness) and full version lists (Sec-CH-UA-Full-Version-List) on explicit request, avoiding over-exposure while enabling compatibility checks. Despite these benefits, challenges persist in widespread adoption and . As of mid-2025, User-Agent Client Hints remain confined to Chromium-derived browsers (e.g., , ), with and eschewing the feature in favor of alternative reduction strategies without hint support. This fragmentation compels servers to fallback on User-Agent parsing for broad compatibility, perpetuating legacy sniffing on a majority of sites reliant on cross-engine detection. Broader Client Hints infrastructure, per RFC 8942, aids caching and low-entropy hints like device pixel ratio but underscores the need for standardized enforcement to supplant entrenched practices.

References

  1. [1]
    RFC 9110 - HTTP Semantics
    User-Agent. The "User-Agent" header field contains information about the user agent originating the request, which is often used by servers to help identify ...4.3. · 5.6. · 6.5. · 7.6.
  2. [2]
    RFC 1945 - Hypertext Transfer Protocol -- HTTP/1.0 - IETF Datatracker
    User-Agent The User-Agent request-header field contains information about the user agent originating the request. This is for statistical purposes, the ...
  3. [3]
    RFC 7231 - Hypertext Transfer Protocol (HTTP/1.1) - IETF Datatracker
    User-Agent The "User-Agent" header field contains information about the user agent originating the request, which is often used by servers to help identify ...
  4. [4]
    History of the browser user-agent string - WebAIM
    Sep 3, 2008 · The user agent string was a complete mess, and near useless, and everyone pretended to be everyone else, and confusion abounded.
  5. [5]
    A brief history of the User-Agent string - Niels Leenheer
    Apr 27, 2024 · We are taking a deep dive into history and start with the basics of the User-Agent string. Our first stop is in 2018, with the release of Firefox 60.
  6. [6]
    Spotting the spoof: User agent spoofing unmasked - Stytch
    Aug 28, 2024 · This article will focus on user agent spoofing and how it can be a particular threat to individuals and businesses in the hands of fraudsters.
  7. [7]
    User Agent Spoofing: What Is It & Why Does It Matter? - CHEQ.AI
    Jan 13, 2023 · User agent spoofing does have some legitimate applications, particularly for software developers, it is often used to carry out ad fraud and other forms of ...
  8. [8]
    What Is a User Agent? A Complete Guide for 2025 - Browserless
    Aug 5, 2025 · A user agent is a text string sent by browsers or automation scripts in HTTP requests to identify the client's software, browser version, and ...
  9. [9]
  10. [10]
  11. [11]
    History of the user-agent string - Human Who Codes
    Jan 12, 2010 · The history of the user-agent string is marked by browsers trying to convince user-agent sniffers that they are what they are not.
  12. [12]
  13. [13]
  14. [14]
    Google's common crawlers | Google Search Central | Documentation
    The string Chrome/W.X.Y.Z in the user agent strings in the list is a placeholder that represents the version of the Chrome browser used by that user agent: for ...
  15. [15]
    Server-Side Device Detection: History, Benefits And How-To
    Sep 24, 2012 · The most important HTTP header used for this purpose is the user-agent header. ... client-side adaptation could ultimately make device detection ...
  16. [16]
    User-Agent detection, history and checklist - the Web developer blog
    Sep 12, 2013 · Basically, the HTTP specification discouraged since its inception the detection of the User-Agent string for tailoring the user experience.
  17. [17]
    Bot detection isn't perfect - Arcjet blog
    Oct 15, 2024 · This means that you can easily detect bots by their User-Agent header and deny requests as appropriate. Unfortunately, humans have invented a ...
  18. [18]
    How to Identify and Stop Scrapers | F5 Labs
    Sep 5, 2024 · Rules based on user agent strings, headers and IP addresses can be created and rate limits can be established to limit how much data can be ...
  19. [19]
    Top List of User Agents for Web Scraping & Tips - ZenRows
    Jan 28, 2025 · We compiled a list of user agents that are effective for scraping. They can help you emulate a browser and avoid getting blocked.
  20. [20]
    User Agent string best practices - WhatIsMyBrowser Developers
    It's common for browser user agents to mimic more popular web browser's user agents whilst also adding their own fragment to differentiate it too - especially ...
  21. [21]
    The Ultimate List of Crawlers and Known Bots for 2025
    Jun 2, 2025 · For example, Googlebot's UA string includes the word “Googlebot,” and Facebook's crawler uses “facebookexternalhit” or “Facebot.”
  22. [22]
    2025: List of User-Agent strings - DeviceAtlas
    A comprehensive list of User Agent strings for the most popular devices in use today. It includes Android, iPhone, Windows, tablets, desktops, bots and ...
  23. [23]
    Robots.txt Introduction and Guide | Google Search Central
    A robots.txt file tells search engine crawlers which URLs the crawler can access on your site. This is used mainly to avoid overloading your site with requests.Missing: identifying Agent
  24. [24]
    The ultimate guide to robots.txt - Yoast
    May 2, 2023 · A robots.txt file is a plain text document located in a website's root directory, serving as a set of instructions to search engine bots.
  25. [25]
    User-Agent header - HTTP - MDN Web Docs - Mozilla
    Jul 4, 2025 · The HTTP User-Agent request header is a characteristic string that lets servers and network peers identify the application, operating system, vendor, and/or ...Syntax · Firefox UA string · Opera UA string
  26. [26]
    What is User Agent Spoofing & Why It's Costing You Real Money
    User agent spoofing lets bots pose as real visitors, leading to fake clicks and impressions. Learn how it works and how to detect this form of ad fraud.
  27. [27]
    Ad Fraud Statistics (2025) - Business of Apps
    Aug 12, 2025 · A report published by Juniper Research reveals 22% of all digital advertising spend in 2023 was attributed to fraud, which is a whopping $84 billion.Missing: Agent | Show results with:Agent
  28. [28]
    [PDF] 2023 Imperva Bad Bot Report
    On the other hand, bad bots masquerading as mobile user agents are on a steady, upward trend: from 28.1% in 2020 to 35.6% in 2021 and 39.1% in 2022. We predict ...
  29. [29]
    Tor Browser 14.0: Enhanced Privacy and Security Features
    Oct 28, 2024 · Tor's developers have also enhanced its user agent spoofing capabilities, which obscure a user's browser and operating system. This makes it ...<|control11|><|separator|>
  30. [30]
    Browser detection using the user agent string (UA sniffing) - HTTP
    Jul 4, 2025 · This document describes common pitfalls of using the UA string for browser detection and the recommended alternatives.
  31. [31]
    IE 10 Specific Styles - CSS-Tricks
    Jun 12, 2013 · I think it's perfectly reasonable to employ User Agent sniffing to determine things like brand / platform. If brand / platform is important to ...
  32. [32]
    Fingerprinting | web.dev
    Feb 22, 2023 · Sending a blank user-agent header would break countless websites which assume that it is present. So in general, what browsers are doing is ...
  33. [33]
    [PDF] How Unique Is Your Web Browser?
    We implemented one possible fingerprinting algorithm, and collected these fingerprints from a large sample of browsers that visited our test side, panopticlick.
  34. [34]
    Understanding Your Browser Fingerprint, Or, a Basic Introduction to ...
    Jul 25, 2020 · In Appendix A of the paper, it states that the entropy of the user agent is 10 bits (the entropy is the average surprisal). ... Panopticlick - EFF ...
  35. [35]
    Browsers don't protect users from fingerprinting - Cybernews
    Jun 26, 2025 · The seemingly harmless data fragments combine into a unique fingerprint that can be used to track you across the web, even without cookies. All ...
  36. [36]
    Your Browser Is Leaking Information About You. Here's How to Stop It
    Oct 10, 2025 · Browser fingerprinting is a sneaky way your web activity is tracked, and no matter what browser you use, it's probably designed to allow it.
  37. [37]
    Understanding Bad Bots and How to Stop Them | Digital Guardian
    Aug 14, 2023 · User Agents​​ Detecting bots by their user agent headers is a simple approach that works for any bots that announce their presence with a unique ...
  38. [38]
    How dare you trust the user agent for bot detection? - The Castle blog
    Apr 16, 2025 · In this post, we explore the user agent's role in browser fingerprinting and bot detection and show how to determine whether a client's stated identity holds ...Missing: sniffing capabilities
  39. [39]
    Browser fingerprints: tracking without cookies - IONOS
    Apr 13, 2021 · 'User agent': with every HTTP request, the respective client usually also provides a description of itself in the 'user agent' field. In ...
  40. [40]
    User-Agent strings and entropy - Flameeyes's Weblog
    Mar 20, 2013 · EFF's Panopticlick has shown that the uniqueness of the strings used in User-Agent is actually an easy way to track a specific user across ...
  41. [41]
    Detecting Microsoft Edge from your website
    Jan 5, 2024 · The User-Agent string for Microsoft Edge Legacy includes the Edge token. A fully formed example of a Microsoft Edge Legacy User-Agent string ...Missing: bloat | Show results with:bloat
  42. [42]
    Intent to Deprecate and Freeze: The User-Agent string
    On top of those privacy issues, User-Agent sniffing is an abundant source of compatibility issues, in particular for minority browsers, resulting in browsers ...
  43. [43]
    The problem with User-Agent strings - Niels Leenheer
    Apr 27, 2024 · Over the last few years, that information has suddenly become less reliable, often giving us fake information. Why is that, and what can we do?
  44. [44]
    The ultimate list of click fraud statistics 2023 - Cheq.ai
    Mar 12, 2023 · Approximately 38% of web traffic is automated/bots (Imperva) · Of these bots, 24% are considered 'bad bots' or bots used for fraud and theft ( ...Missing: spoofing | Show results with:spoofing
  45. [45]
    User-Agent Reduction - The Chromium Projects
    Phase 2: Chrome 95 to Chrome 100 Launch an Origin Trial for sites to opt into the final reduced UA string for testing and feedback, for at least 6 months.Updates · Reduced User Agent String... · Sample UA Strings: Phase 4
  46. [46]
    User-Agent Reduction Origin Trial and Dates - Chromium Blog
    Sep 14, 2021 · Launch an origin trial for sites to opt into the final reduced UA string for testing and feedback, for at least 6 months. We will evaluate ...
  47. [47]
    Prepare for User-Agent Reduction changes in October
    Aug 25, 2022 · Chrome has extended the User-Agent Reduction origin trial to run until the end of the middle of October 2022 (M106) and local testing is also ...Why is the User-Agent string... · Phased approach · Feedback and testing
  48. [48]
    Prepare for Chrome's user‑agent reduction | Privacy Sandbox - Google
    Feb 27, 2023 · Chrome is continuing to reduce the information shared in its user-agent string to help protect user's privacy.Missing: criticisms | Show results with:criticisms<|separator|>
  49. [49]
    Firefox 60 release notes for developers - Mozilla - MDN Web Docs
    Oct 16, 2025 · This article provides information about the changes in Firefox 60 that will affect developers. Firefox 60 was released on May 9, 2018.
  50. [50]
    Client Hints & User-Agents in Chrome, Safari & Firefox - Corbado
    Jul 2, 2024 · The history of User-Agent strings can be traced back to the inception of early web browsers. Tim Berners-Lee developed the first web browser, ...
  51. [51]
    WebKit Features in Safari 17.0
    Sep 18, 2023 · Safari 17.0 adds support for the popover attribute. It provides a framework built into the web for displaying overlays, popups, popovers, and dialogs.
  52. [52]
    User-Agent Client Hints - GitHub Pages
    May 9, 2025 · Today, user agents generally identify themselves to servers by sending a User-Agent HTTP request header field along with each request (defined ...
  53. [53]
    Sec-CH-UA header - HTTP - MDN Web Docs
    Jul 4, 2025 · The HTTP Sec-CH-UA request header is a user agent client hint which provides the user-agent's branding and significant version information.Sec-CH-UA-Platform · Sec-CH-UA-Mobile · Sec-CH-UA-BitnessMissing: IETF | Show results with:IETF
  54. [54]
    What is User-Agent reduction? | Privacy Sandbox - Google
    Apr 23, 2025 · User-Agent reduction limits passively shared browser data to reduce the volume of sensitive information which leads to fingerprinting.Missing: criticisms | Show results with:criticisms
  55. [55]
    May 2021 - Chromium Blog
    May 27, 2021 · Update on User-Agent String Reduction in Chrome ... For more advanced use cases, you should migrate to the User Agent Client Hints API.
  56. [56]
    Sec-CH-UA-Full-Version-List header - HTTP - MDN Web Docs
    Jul 4, 2025 · The Sec-CH-UA-Full-Version-List header provides the brand and full version information for each brand associated with the browser, in a comma-separated list.Missing: IETF | Show results with:IETF
  57. [57]
    RFC 8942 - HTTP Client Hints - IETF Datatracker
    This document defines Client Hints, a framework that enables servers to opt-in to specific proactive content negotiation features, adapting their content ...
  58. [58]
    HTTP Client hints - MDN Web Docs - Mozilla
    Jul 4, 2025 · User agent (UA) client hint headers allow a server to vary responses based on the user agent (browser), operating system, and device. For a list ...Overview · Caching and Client Hints · Hint life-time · Low entropy hints