Skip to main content

What are browser profiles?

Browser profiles define the network profile labels that wreq-js sends to the native layer. Profiles can influence behavior such as:
  1. TLS handshake preferences
  2. HTTP protocol behavior
  3. Default request headers
  4. Platform-specific header values
Final wire behavior is determined by the native engine and may vary by profile and runtime.

Available browsers

wreq-js profile families include:
  1. Chrome
  2. Firefox
  3. Safari
  4. Edge
  5. Opera
  6. OkHttp

Listing profiles

Using a profile

Specify the browser option in your fetch call:

Family aliases

Instead of a concrete profile you can pass a family alias, which resolves to the newest profile in that family:
Available aliases: chrome, firefox, safari, edge, opera, okhttp, firefox_private, firefox_android, safari_ios, safari_ipad. Families are matched exactly, so safari resolves to the newest desktop Safari and never to an iOS or iPad profile. Those have their own aliases.
An alias resolves to the newest profile shipped with the version of wreq-js you have installed, so upgrading the library changes the fingerprint an alias produces. That is the point of using one, but it does mean a wreq-js upgrade can change how a target responds to you without any change in your own code.Pin a concrete profile when you need a fingerprint that never moves, and use resolveProfile() to record which one an alias picked.
The default browser is the chrome alias, so requests that do not set browser track the newest Chrome profile rather than a pinned version that goes stale over time.

Operating systems

Different operating systems have different header values and behaviors. Use the os option to emulate a specific platform:

Example: Windows Chrome

Example: iOS Safari

Profile updates

Profile labels are sourced from the native layer and can evolve with upstream updates.
Use a recent version of wreq-js if you want the latest profile set.

Custom headers

By default, browser emulation headers are automatically added. To use only your custom headers: