header-generator 1.1.3 → 2.0.0-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +12 -1
- package/dist/constants.d.ts +21 -0
- package/dist/constants.d.ts.map +1 -0
- package/dist/constants.js +28 -0
- package/dist/constants.js.map +1 -0
- package/dist/data_files/browser-helper-file.json +1 -0
- package/dist/data_files/header-network-definition.json +1 -0
- package/{src → dist}/data_files/headers-order.json +0 -0
- package/dist/data_files/input-network-definition.json +1 -0
- package/dist/header-generator.d.ts +97 -0
- package/dist/header-generator.d.ts.map +1 -0
- package/dist/header-generator.js +304 -0
- package/dist/header-generator.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +8 -0
- package/dist/index.js.map +1 -0
- package/dist/index.mjs +5 -0
- package/dist/presets.d.ts +49 -0
- package/dist/presets.d.ts.map +1 -0
- package/dist/presets.js +51 -0
- package/dist/presets.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/dist/utils.d.ts +6 -0
- package/dist/utils.d.ts.map +1 -0
- package/dist/utils.js +87 -0
- package/dist/utils.js.map +1 -0
- package/package.json +38 -14
- package/src/data_files/browser-helper-file.json +0 -1
- package/src/data_files/header-network-definition.json +0 -1
- package/src/data_files/input-network-definition.json +0 -1
- package/src/header-generator.js +0 -334
- package/src/main.js +0 -3
- package/src/utils.js +0 -33
package/README.md
CHANGED
|
@@ -5,6 +5,7 @@ NodeJs package for generating browser-like headers.
|
|
|
5
5
|
|
|
6
6
|
- [Installation](#installation)
|
|
7
7
|
- [Usage](#usage)
|
|
8
|
+
- [Presets](#presets)
|
|
8
9
|
- [Result example](#result-example)
|
|
9
10
|
- [API Reference](#api-reference)
|
|
10
11
|
|
|
@@ -15,7 +16,7 @@ Run the `npm install header-generator` command. No further setup is needed after
|
|
|
15
16
|
## Usage
|
|
16
17
|
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:
|
|
17
18
|
```js
|
|
18
|
-
const HeaderGenerator = require('header-generator');
|
|
19
|
+
const { HeaderGenerator } = require('header-generator');
|
|
19
20
|
let headerGenerator = new HeaderGenerator({
|
|
20
21
|
browsers: [
|
|
21
22
|
{name: "firefox", minVersion: 80},
|
|
@@ -40,6 +41,15 @@ let headers = headersGenerator.getHeaders({
|
|
|
40
41
|
});
|
|
41
42
|
```
|
|
42
43
|
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.
|
|
44
|
+
|
|
45
|
+
## Presets
|
|
46
|
+
Presets are setting templates for common use cases. It saves time writing the same configuration over and over.
|
|
47
|
+
```js
|
|
48
|
+
const { HeaderGenerator, PRESETS } = require('header-generator');
|
|
49
|
+
let headerGenerator = new HeaderGenerator(PRESETS.MODERN_WINDOWS_CHROME);
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
This preset will fill the configuration for the latest five versions of chrome for windows desktops. Checkout the available presets list here @TODO: LINK.
|
|
43
53
|
## Result example
|
|
44
54
|
A result that can be generated for the usage example above:
|
|
45
55
|
```json
|
|
@@ -134,6 +144,7 @@ Returns a new object that contains ordered headers.
|
|
|
134
144
|
| Param | Type | Description |
|
|
135
145
|
| --- | --- | --- |
|
|
136
146
|
| browsers | <code>Array.<(BrowserSpecification\|string)></code> | List of BrowserSpecifications to generate the headers for, or one of `chrome`, `firefox` and `safari`. |
|
|
147
|
+
| browserListQuery | <code>string</code> | Browser generation query based on the real world data. For more info see the [query docs](https://github.com/browserslist/browserslist#full-list). If `browserListQuery` is passed the `browsers` array is ignored. |
|
|
137
148
|
| operatingSystems | <code>Array.<string></code> | List of operating systems to generate the headers for. The options are `windows`, `macos`, `linux`, `android` and `ios`. |
|
|
138
149
|
| devices | <code>Array.<string></code> | List of devices to generate the headers for. Options are `desktop` and `mobile`. |
|
|
139
150
|
| locales | <code>Array.<string></code> | List of at most 10 languages to include in the [Accept-Language](https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Accept-Language) request header in the language format accepted by that header, for example `en`, `en-US` or `de`. |
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export declare const SUPPORTED_BROWSERS: readonly ["chrome", "firefox", "safari"];
|
|
2
|
+
export declare const SUPPORTED_OPERATING_SYSTEMS: readonly ["windows", "macos", "linux", "android", "ios"];
|
|
3
|
+
export declare const SUPPORTED_DEVICES: readonly ["desktop", "mobile"];
|
|
4
|
+
export declare const SUPPORTED_HTTP_VERSIONS: readonly ["1", "2"];
|
|
5
|
+
export declare const BROWSER_HTTP_NODE_NAME = "*BROWSER_HTTP";
|
|
6
|
+
export declare const OPERATING_SYSTEM_NODE_NAME = "*OPERATING_SYSTEM";
|
|
7
|
+
export declare const DEVICE_NODE_NAME = "*DEVICE";
|
|
8
|
+
export declare const MISSING_VALUE_DATASET_TOKEN = "*MISSING_VALUE*";
|
|
9
|
+
export declare const HTTP1_SEC_FETCH_ATTRIBUTES: {
|
|
10
|
+
mode: string;
|
|
11
|
+
dest: string;
|
|
12
|
+
site: string;
|
|
13
|
+
user: string;
|
|
14
|
+
};
|
|
15
|
+
export declare const HTTP2_SEC_FETCH_ATTRIBUTES: {
|
|
16
|
+
mode: string;
|
|
17
|
+
dest: string;
|
|
18
|
+
site: string;
|
|
19
|
+
user: string;
|
|
20
|
+
};
|
|
21
|
+
//# sourceMappingURL=constants.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,kBAAkB,0CAIrB,CAAC;AACX,eAAO,MAAM,2BAA2B,0DAA2D,CAAC;AACpG,eAAO,MAAM,iBAAiB,gCAAiC,CAAC;AAChE,eAAO,MAAM,uBAAuB,qBAAsB,CAAC;AAE3D,eAAO,MAAM,sBAAsB,kBAAkB,CAAC;AACtD,eAAO,MAAM,0BAA0B,sBAAsB,CAAC;AAC9D,eAAO,MAAM,gBAAgB,YAAY,CAAC;AAC1C,eAAO,MAAM,2BAA2B,oBAAoB,CAAC;AAE7D,eAAO,MAAM,0BAA0B;;;;;CAKtC,CAAC;AAEF,eAAO,MAAM,0BAA0B;;;;;CAKtC,CAAC"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.HTTP2_SEC_FETCH_ATTRIBUTES = exports.HTTP1_SEC_FETCH_ATTRIBUTES = exports.MISSING_VALUE_DATASET_TOKEN = exports.DEVICE_NODE_NAME = exports.OPERATING_SYSTEM_NODE_NAME = exports.BROWSER_HTTP_NODE_NAME = exports.SUPPORTED_HTTP_VERSIONS = exports.SUPPORTED_DEVICES = exports.SUPPORTED_OPERATING_SYSTEMS = exports.SUPPORTED_BROWSERS = void 0;
|
|
4
|
+
exports.SUPPORTED_BROWSERS = [
|
|
5
|
+
'chrome',
|
|
6
|
+
'firefox',
|
|
7
|
+
'safari',
|
|
8
|
+
];
|
|
9
|
+
exports.SUPPORTED_OPERATING_SYSTEMS = ['windows', 'macos', 'linux', 'android', 'ios'];
|
|
10
|
+
exports.SUPPORTED_DEVICES = ['desktop', 'mobile'];
|
|
11
|
+
exports.SUPPORTED_HTTP_VERSIONS = ['1', '2'];
|
|
12
|
+
exports.BROWSER_HTTP_NODE_NAME = '*BROWSER_HTTP';
|
|
13
|
+
exports.OPERATING_SYSTEM_NODE_NAME = '*OPERATING_SYSTEM';
|
|
14
|
+
exports.DEVICE_NODE_NAME = '*DEVICE';
|
|
15
|
+
exports.MISSING_VALUE_DATASET_TOKEN = '*MISSING_VALUE*';
|
|
16
|
+
exports.HTTP1_SEC_FETCH_ATTRIBUTES = {
|
|
17
|
+
mode: 'Sec-Fetch-Mode',
|
|
18
|
+
dest: 'Sec-Fetch-Dest',
|
|
19
|
+
site: 'Sec-Fetch-Site',
|
|
20
|
+
user: 'Sec-Fetch-User',
|
|
21
|
+
};
|
|
22
|
+
exports.HTTP2_SEC_FETCH_ATTRIBUTES = {
|
|
23
|
+
mode: 'sec-fetch-mode',
|
|
24
|
+
dest: 'sec-fetch-dest',
|
|
25
|
+
site: 'sec-fetch-site',
|
|
26
|
+
user: 'sec-fetch-user',
|
|
27
|
+
};
|
|
28
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":";;;AAAa,QAAA,kBAAkB,GAAG;IAC9B,QAAQ;IACR,SAAS;IACT,QAAQ;CACF,CAAC;AACE,QAAA,2BAA2B,GAAG,CAAC,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,KAAK,CAAU,CAAC;AACvF,QAAA,iBAAiB,GAAG,CAAC,SAAS,EAAE,QAAQ,CAAU,CAAC;AACnD,QAAA,uBAAuB,GAAG,CAAC,GAAG,EAAE,GAAG,CAAU,CAAC;AAE9C,QAAA,sBAAsB,GAAG,eAAe,CAAC;AACzC,QAAA,0BAA0B,GAAG,mBAAmB,CAAC;AACjD,QAAA,gBAAgB,GAAG,SAAS,CAAC;AAC7B,QAAA,2BAA2B,GAAG,iBAAiB,CAAC;AAEhD,QAAA,0BAA0B,GAAG;IACtC,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,gBAAgB;CACzB,CAAC;AAEW,QAAA,0BAA0B,GAAG;IACtC,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,gBAAgB;IACtB,IAAI,EAAE,gBAAgB;CACzB,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
["chrome/87.0.4280.66|2", "chrome/48.0.2564.116|2", "chrome/69.0.3497.100|2", "chrome/60.0.3112.90|2", "chrome/79.0.3945.79|2", "chrome/86.0.4240.75|2", "chrome/94.0.4590.2|2", "chrome/92.0.4512.0|2", "chrome/76.0.3809.71|2", "chrome/93.0.4577.63|1", "chrome/79.0.3945.130|2", "firefox/44.0|2", "chrome/71.0.3578.80|2", "chrome/75.0.3765.0|2", "chrome/93.0.4577.63|2", "firefox/38.0|2", "*MISSING_VALUE*|2", "safari/601.4.4|2", "chrome/56.0.2924.87|2", "chrome/84.0.4147.125|2", "chrome/80.0.3987.122|2", "chrome/91.0.4472.101|2", "firefox/91.0|2", "chrome/47.0.2526.106|2", "chrome/88.0.4324.182|2", "chrome/92.0.4515.115|2", "chrome/90.0.4430.212|2", "chrome/91.0.4472.164|2", "chrome/90.0.4430.85|1", "chrome/87.0.4280.67|2", "chrome/91.0.4472.88|2", "chrome/61.0.3163.100|2", "chrome/61.0.3163.79|1", "chrome/93.0.4577.0|2", "chrome/91.0.4472.124|2", "safari/601.3.9|2", "chrome/48.0.2564.103|2", "chrome/86.0.4240.193|2", "firefox/90.0|2", "firefox/91.0|1", "chrome/92.0.4515.159|1", "firefox/90.0|1", "chrome/91.0.4472.77|2", "chrome/88.0.4298.0|2", "safari/604.1|2", "chrome/91.0.4472.114|2", "chrome/46.0.2486.0|2", "chrome/92.0.4515.131|2", "chrome/64.0.3282.140|2", "chrome/48.0.2564.109|2", "firefox/43.0|2", "chrome/48.0.2564.97|2", "chrome/90.0.4430.91|2", "chrome/60.0.3694.1234|2", "chrome/92.0.4515.159|2", "firefox/57.0|2", "chrome/73.0.3683.75|2", "chrome/80.0.3987.132|2", "chrome/83.0.4103.116|2", "chrome/80.0.3987.116|2", "chrome/57.0.2987.108|1", "chrome/65.0.3325.146|2", "chrome/83.0.4103.97|2", "chrome/68.0.3440.106|2", "safari/605.1.15|2", "chrome/87.0.4280.141|2", "chrome/62.0.3202.9|2", "chrome/91.0.4472.120|2", "chrome/86.0.4240.198|2", "chrome/80.0.3987.149|2", "chrome/89.0.4389.128|2", "chrome/92.0.4515.107|2", "chrome/60.0.3112.113|2", "chrome/90.0.4430.229|2", "chrome/90.0.4430.210|2", "firefox/92.0|2", "chrome/90.0.4430.93|2", "chrome/89.0.4389.105|2", "firefox/89.0|2", "chrome/91.0.4472.81|2", "chrome/92.0.4515.157|2", "chrome/70.0.3538.102|2", "chrome/75.0.3770.142|2", "chrome/92.0.4515.131|1", "chrome/94.0.4595.0|2", "chrome/90.0.4430.85|2", "chrome/80.0.3987.87|2", "chrome/69.2.0.1713|2", "chrome/90.0.4420.0|2", "chrome/81.0.4044.138|2", "firefox/71.0|2", "chrome/81.0.4044.92|2", "chrome/91.0.4472.114|1", "chrome/90.0.4430.86|2", "chrome/79.0.3945.88|2", "firefox/88.0|2", "chrome/86.0.4|2", "firefox/85.0|2", "chrome/93.0.4577.51|2", "chrome/87.0.4280.101|2", "chrome/89.0.4389.82|2", "chrome/81.0.4044.129|2", "chrome/88.0.4324.187|2", "firefox/78.0|2", "chrome/83.0.4103.106|2", "firefox/87.0|2", "chrome/92.0.4515.126|2", "chrome/93.0.4577.18|2", "chrome/74.0.3729.169|2", "safari/537.36|2", "chrome/92.0.4515.134|2", "chrome/92.0.0.0|2", "firefox/93.0|2", "firefox/68.0|2", "chrome/89.0.4389.114|2", "chrome/94.0.4606.12|2", "chrome/70.0.3538.110|2", "chrome/93.0.4577.42|2", "chrome/85.0.4183.93|2", "chrome/74.0.3729.108|2", "chrome/94.0.4603.0|2", "chrome/94.0.4592.0|2", "firefox/80.0|2", "firefox/56.0|2", "chrome/95.0.4609.6|2", "chrome/90.0.4430.214|2", "chrome/86.0.4240.80|2", "chrome/91.0.4472.106|2", "chrome/80.0.3987.100|2", "chrome/89.0.4389.90|2", "chrome/80.0.3987.99|2", "chrome/93.0.4577.39|2", "chrome/72.0.3626.109|2", "chrome/49.0.2623.75|2", "chrome/91.0.4472.167|2", "chrome/89.0.4389.72|2", "chrome/92.0.4515.107|1", "firefox/86.0|2", "chrome/77.0.3865.116|2", "chrome/85.0.4183.102|2", "chrome/86.0.4240.183|2", "chrome/79.0.3945.136|2", "chrome/79.0.3945.116|2", "chrome/81.0.4044.111|2", "chrome/91.0.4472.124|1", "chrome/75.0.3770.100|2", "chrome/91.0.4472.102|2", "chrome/91.0.4472.77|1", "firefox/60.0|2", "chrome/90.0.4430.218|2", "chrome/71.0.3578.141|2", "chrome/88.0.4324.146|2", "chrome/90.0.0.0|2", "chrome/91.0.4472.106|1", "chrome/90.0.4430.72|2", "chrome/87.0.4280.88|2", "chrome/89.0.4389.114|1", "chrome/63.0.3235.0|2", "chrome/72.0.3626.121|2", "chrome/86.0.4240.111|2", "chrome/55.0.2883.91|2", "chrome/80.0.3987.145|1", "chrome/77.0.3865.92|2", "chrome/88.0.4324.181|2", "chrome/92.0.4515.130|2", "chrome/91.0.4472.135|2", "chrome/94.0.4606.3|2", "chrome/95.0.4609.3|2", "chrome/61.0.3163.91|2", "firefox/72.0|2", "chrome/90.0.4403.0|2", "chrome/93.0.4577.37|2", "chrome/62.0.3202.84|2", "chrome/93.0.4577.22|2", "chrome/74.0.3729.136|2", "chrome/88.0.4324.192|2", "chrome/55.0.4874.1831|2", "chrome/93.0.4577.36|2", "chrome/72.0.3626.81|2", "chrome/57.0.2987.137|2", "chrome/91.0.4472.164|1", "chrome/86.0.4240.277|2", "chrome/81.0.4044.117|2", "chrome/81.0.4044.122|2", "chrome/71.0.3578.98|2", "chrome/91.0.4472.194|2", "chrome/94.0.4596.0|2", "chrome/92.0.4515.93|2", "chrome/78.0.3904.97|2", "chrome/80.0.3987.119|2", "firefox/84.0|2", "chrome/94.0.4604.0|2", "chrome/71.0.3578.99|2", "safari/601.2.7|2", "chrome/93.0.4577.15|2", "chrome/85.0.4183.121|1", "chrome/70.0.3538.80|2", "firefox/79.0|2", "chrome/85.0.4183.83|2", "chrome/67.0.3396.87|2", "chrome/93.0.4577.25|2", "chrome/70.0.3538.77|2", "firefox/78.0|1", "firefox/63.0|2", "chrome/88.0.4324.152|2", "chrome/74.0.3729.157|2", "chrome/49.0.2623.87|2", "chrome/93.0.4531.0|2", "firefox/69.0|2", "chrome/77.0.3835.0|2", "chrome/99.0.3538.77|2", "chrome/84.0.4147.122|2", "chrome/87.0.4280.88|1", "chrome/91.0.4472.166|2", "chrome/85.0.4183.121|2", "chrome/91.0.4472.147|2", "chrome/85.0.4183.127|2", "safari/602.1|2", "chrome/59.0.3071.125|2", "chrome/48.0.2564.82|2", "chrome/94.0.4585.0|2", "chrome/88.0.4324.93|2", "chrome/63.0.3237.0|2", "firefox/81.0|2", "firefox/83.0|2", "chrome/91.0.4472.101|1", "chrome/80.0.3987.88|2", "firefox/82.0|2", "chrome/94.0.4600.0|2", "chrome/49.0.2623.112|2", "chrome/76.0.3809.132|1", "chrome/63.0.3239.132|2", "chrome/89.0.4389.128|1", "firefox/74.0|2", "chrome/71.0.3563.0|2", "chrome/59.0.3071.115|2", "chrome/44.0.2403.119|2", "chrome/50.0.2661.89|2", "chrome/86.0.4240.111|1", "chrome/88.0.4324.190|2", "chrome/89.0.4389.130|2", "chrome/78.0.3904.108|2", "chrome/84.0.4147.89|2", "chrome/87.0.4280.144|2", "chrome/88.0.4324.150|2", "chrome/90.0.4430.230|2", "chrome/79.0.3945.147|2", "firefox/47.0|2", "chrome/54.0.2862.63|2", "firefox/51.0|2", "chrome/68.0.3440.91|2", "chrome/92.0.4515.115|1", "chrome/90.0.4430.82|2", "chrome/94.0.4590.0|2", "chrome/94.0.4595.3|2", "chrome/70.0.3538.67|2", "chrome/83.0.4103.119|2", "chrome/83.0.4103.61|1", "chrome/84.0.4147.135|2", "chrome/88.0.4324.104|2", "chrome/88.0.4324.96|2", "chrome/92.0.4515.80|2", "firefox/89.0|1", "safari/604.1|1", "*MISSING_VALUE*|1", "chrome/93.0.4558.0|2", "chrome/64.0.3282.39|2", "chrome/87.0.4280.142|2", "chrome/86.0.4240.272|2", "chrome/61.0.3163.128|2", "chrome/91.0.4464.0|2", "chrome/94.0.4589.2|2", "chrome/91.0.0.0|2", "chrome/76.0.3809.132|2", "chrome/91.0.4472.146|2", "chrome/93.0.4566.0|2", "chrome/92.0.4515.111|2", "chrome/76.0.3809.136|2", "chrome/84.0.4147.111|1", "chrome/55.0.2883.91|1", "chrome/55.0.2883.95|2", "chrome/57.0.8883.1194|2", "chrome/85.0.4183.81|1", "chrome/78.0.3904.70|2", "chrome/85.0.4183.101|1", "chrome/87.0.4280.66|1", "chrome/86.0.4240.198|1", "chrome/90.0.4430.93|1", "chrome/92.0.4515.105|2", "chrome/52.0.2743.116|1", "chrome/94.0.4589.0|2", "chrome/84.0.4147.105|2", "chrome/90.0.4430.0|2", "chrome/92.0.4515.51|2", "chrome/92.0.4515.101|2", "chrome/81.0.4044.93|2", "chrome/90.0.4430.212|1", "chrome/78.0.3904.87|2", "chrome/57.0.2987.108|2", "chrome/94.0.4588.0|2", "chrome/87.0.4280.152|2", "safari/605.1.15|1", "chrome/67.0.3396.99|2", "chrome/91.0.4472.135|1", "chrome/84.0.4147.89|1", "chrome/85.0.4183.127|1", "chrome/93.0.4577.8|2", "chrome/94.0.4587.0|2", "chrome/90.0.4430.66|2", "chrome/77.0.3865.90|2", "chrome/50.0.2661.102|2", "chrome/49.0.2991.1751|2", "chrome/42.0.2311.135|2", "chrome/86.0.4240.77|1", "chrome/79.0.3945.117|1", "chrome/77.0.3865.116|1", "chrome/92.0.4515.76|2", "chrome/43.0.3835.1044|2", "chrome/91.0.4472.120|1", "chrome/93.0.4563.0|2", "chrome/79.0.3945.117|2", "chrome/85.0.4183.101|2", "chrome/84.0.4147.111|2", "chrome/92.0.4515.105|1", "chrome/89.0.4389.72|1", "firefox/52.0|2", "chrome/80.0.3987.163|2", "chrome/89.0.4389.86|2", "chrome/80.0.3987.99|1", "chrome/81.0.4044.152|2", "chrome/85.0.4183.81|2", "chrome/83.0.4103.87|2", "chrome/94.0.4583.0|2", "chrome/90.0.4430.216|2", "chrome/77.0.3865.120|2", "chrome/61.0.3163.98|2", "chrome/86.0.4240.185|2", "firefox/45.0|2"]
|