NodeJs package for generating browser-like headers.
Installation
Run the npm install header-generator
command. No further setup is needed afterwards.
Usage
To use the generator, you need to create an instance of the HeaderGenerator
class which is exported from this package. Constructor of this class accepts a HeaderGeneratorOptions
object, which can be used to globally specify what kind of headers you are looking for:
const HeaderGenerator = require('header-generator');
let headerGenerator = new HeaderGenerator({
browsers: [
{name: "firefox", minVersion: 80},
{name: "chrome", minVersion: 87},
],
devices: [
"desktop"
],
operatingSystems: [
"windows"
]
});
You can then get the headers using the getHeaders
method, either with no argument, or with another HeaderGeneratorOptions
object, this time specifying the options only for this call (overwriting the global options when in conflict) and using the global options specified beforehands for the unspecified options:
let headers = headersGenerator.getHeaders({
operatingSystems: [
"linux"
],
locales: ["en-US", "en"]
});
This method always generates a random realistic set of headers, excluding the request dependant headers, which need to be filled in afterwards. Since the generation is randomized, multiple calls to this method with the same parameters can generate multiple different outputs.
Result example
A result that can be generated for the usage example above:
{
"sec-ch-ua-mobile": "?0",
"user-agent": "Mozilla/5.0 (X11; Linux x86_64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/89.0.4389.72 Safari/537.36",
"accept-encoding": "gzip, deflate, br",
"accept": "text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9",
"upgrade-insecure-requests": "1",
"accept-language": "en-US,en;0.9",
"sec-fetch-site": "same-site",
"sec-fetch-mode": "navigate",
"sec-fetch-user": "?1",
"sec-fetch-dest": "document"
}
API Reference
All public classes, methods and their parameters can be inspected in this API reference.
HeaderGenerator randomly generates realistic browser headers based on specified options.
Generates a single set of headers using a combination of the default options specified in the constructor
and their possible overrides provided here.
Param | Type | Description |
---|
options | HeaderGeneratorOptions | specifies options that should be overridden for this one call |
requestDependentHeaders | Object | specifies known values of headers dependent on the particular request |
BrowserSpecification
Param | Type | Description |
---|
name | string | One of chrome , firefox and safari . |
minVersion | number | Minimal version of browser used. |
maxVersion | number | Maximal version of browser used. |
httpVersion | string | Http version to be used to generate headers (the headers differ depending on the version). Either 1 or 2. If none specified the httpVersion specified in HeaderGeneratorOptions is used. |
Param | Type | Description |
---|
browsers | Array.<BrowserSpecification> | List of BrowserSpecifications to generate the headers for. |
operatingSystems | Array.<string> | List of operating systems to generate the headers for. The options are windows , macos , linux , android and ios . |
devices | Array.<string> | List of devices to generate the headers for. Options are desktop and mobile . |
locales | Array.<string> | List of at most 10 languages to include in the Accept-Language request header in the language format accepted by that header, for example en , en-US or de . |
httpVersion | string | Http version to be used to generate headers (the headers differ depending on the version). Can be either 1 or 2. Default value is 2. |