Keyboard shortcuts

Press ← or β†’ to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

πŸ‘€ User Agent

On the Web, a user agent is a software agent responsible for retrieving and facilitating end-user interaction with Web content. This includes all web browsers, such as Google Chrome and Safari, some email clients, standalone download managers like youtube-dl, and other command-line utilities like cURL.

β€” Wikipedia.

Rama offers support to:

  • Parse User Agent Header Strings: for the purpose of identifying the User Agent that created the incoming http request
  • Emulate User Agents: for the purpose of distoring incoming proxy requests (see Distortion Proxies)

More Information:

Fingerprinting

Modern web stacks have often fingerprinting in place, usually by use of third party services, for the purpose of ad revenue and anti-bot measurements.

These fingerprints are layered and are generated on:

  • the network layers: mostly IP, HTTP and TLS;
  • the scripting layer: javascript engine + web API interaction;
  • the Web API surface: compatibility, user agent- and host information.

By use of upstream proxies and distort proxies you can effectively emulate the more common User Agents (UA), desired physical location and user profile.

Rama’s UA emulation capabilities are powered by its automated fingerprinting service that is publicly available at https://fp.ramaproxy.org/. This infrastructure is sponsored by πŸ’– https://fly.io/ and πŸ’– BrowserStack. You can run the same service yourself to profile the browsers and apps you care about: see Capturing your own profiles.

πŸ” https://echo.ramaproxy.org/ is another service publicly exposed. In contrast to the Fingerprinting Service it is aimed at developers and allows you to send any http request you wish in order to get an insight on the Tls Info and Http Request Info the server receives from you when making that request.

curl -XPOST 'https://echo.ramaproxy.org/foo?bar=baz' \
  -H 'x-magic: 42' --data 'whatever forever'

Feel free to make use of while crafting distorted http requests, but please do so with moderation. In case you have ideas on how to improve the service, please let us know by opening an issue.

Counted capture storage

H2 SETTINGS acknowledgements remain in literal captures but do not define new structural groups. Older ACK-bearing groups remain readable with their original counts and sampling identities. Old and new group IDs can coexist until the older observations leave the 30-day retention window.

User Agent Emulation

Rama can emulate real browsers at the HTTP and TLS layer, using profiles recorded from those browsers. See User Agent Emulation.