What are browser profiles?
Browser profiles define the TLS and HTTP/2 fingerprints that wreq-js uses to impersonate real browsers. Each profile replicates:
- TLS fingerprint (JA3/JA4): cipher suites, extensions, and handshake parameters
- HTTP/2 settings: SETTINGS frames, PRIORITY behavior, and flow control
- Header ordering: the order browsers send HTTP headers
- Default headers:
User-Agent, Accept, Accept-Language, and more
Available browsers
wreq-js supports fingerprints for:
- Chrome: recent versions with regular updates
- Firefox: desktop and mobile variants (when available)
- Safari: macOS and iOS variants
- Edge: Chromium-based versions
- Opera: desktop versions
- OkHttp: Android HTTP client
Listing profiles
import { getProfiles } from 'wreq-js';
const profiles = getProfiles();
console.log(profiles);
// ['chrome_142', 'chrome_141', 'firefox_139', 'safari_18', 'edge_120', ...]
Using a profile
Specify the browser option in your fetch call:
import { fetch } from 'wreq-js';
const response = await fetch('https://example.com', {
browser: 'chrome_142',
});
Operating systems
Different operating systems have different header values and behaviors. Use the os option to emulate a specific platform:
import { getOperatingSystems } from 'wreq-js';
console.log(getOperatingSystems());
// ['windows', 'macos', 'linux', 'android', 'ios']
Example: Windows Chrome
const response = await fetch('https://example.com', {
browser: 'chrome_142',
os: 'windows',
});
Example: iOS Safari
const response = await fetch('https://example.com', {
browser: 'safari_18',
os: 'ios',
});
Profile updates
Browser profiles are synchronized from the upstream wreq-util project. This ensures fingerprints stay current as browsers release new versions.
Use a recent version of wreq-js to benefit from updated profiles. Some targets do check for stale fingerprints.
By default, browser emulation headers are automatically added. To use only your custom headers:
const response = await fetch('https://api.example.com', {
browser: 'chrome_142',
headers: {
'Accept': '*/*',
'User-Agent': 'CustomBot/1.0',
},
disableDefaultHeaders: true,
});