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/dist/utils.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.shuffleArray = exports.getBrowsersFromQuery = exports.getBrowser = exports.getUserAgent = void 0;
|
|
4
|
+
const tslib_1 = require("tslib");
|
|
5
|
+
const browserslist_1 = (0, tslib_1.__importDefault)(require("browserslist"));
|
|
6
|
+
const constants_1 = require("./constants");
|
|
7
|
+
const getUserAgent = (headers) => {
|
|
8
|
+
for (const [header, value] of Object.entries(headers)) {
|
|
9
|
+
if (header.toLowerCase() === 'user-agent') {
|
|
10
|
+
return value;
|
|
11
|
+
}
|
|
12
|
+
}
|
|
13
|
+
return undefined;
|
|
14
|
+
};
|
|
15
|
+
exports.getUserAgent = getUserAgent;
|
|
16
|
+
const getBrowser = (userAgent) => {
|
|
17
|
+
if (!userAgent) {
|
|
18
|
+
return;
|
|
19
|
+
}
|
|
20
|
+
let browser;
|
|
21
|
+
if (userAgent.includes('Firefox')) {
|
|
22
|
+
browser = 'firefox';
|
|
23
|
+
}
|
|
24
|
+
else if (userAgent.includes('Chrome')) {
|
|
25
|
+
browser = 'chrome';
|
|
26
|
+
}
|
|
27
|
+
else {
|
|
28
|
+
browser = 'safari';
|
|
29
|
+
}
|
|
30
|
+
return browser;
|
|
31
|
+
};
|
|
32
|
+
exports.getBrowser = getBrowser;
|
|
33
|
+
const getBrowsersWithVersions = (browserList) => {
|
|
34
|
+
const browsersWithVersions = {};
|
|
35
|
+
for (const browserDefinition of browserList) {
|
|
36
|
+
const [browserSplit, versionString] = browserDefinition.split(' ');
|
|
37
|
+
const browser = browserSplit;
|
|
38
|
+
const version = parseInt(versionString, 10);
|
|
39
|
+
if (!constants_1.SUPPORTED_BROWSERS.includes(browser)) {
|
|
40
|
+
// eslint-disable-next-line no-continue
|
|
41
|
+
continue;
|
|
42
|
+
}
|
|
43
|
+
if (browsersWithVersions[browser]) {
|
|
44
|
+
browsersWithVersions[browser].push(version);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
browsersWithVersions[browser] = [version];
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return browsersWithVersions;
|
|
51
|
+
};
|
|
52
|
+
const getOptimizedVersionDistribution = (browsersWithVersions) => {
|
|
53
|
+
const finalOptimizedBrowsers = [];
|
|
54
|
+
Object.entries(browsersWithVersions).forEach(([browser, versions]) => {
|
|
55
|
+
const sortedVersions = versions.sort((a, b) => a - b);
|
|
56
|
+
let lowestVersionSoFar = sortedVersions[0];
|
|
57
|
+
sortedVersions.forEach((version, index) => {
|
|
58
|
+
const nextVersion = sortedVersions[index + 1];
|
|
59
|
+
const isLast = index === sortedVersions.length - 1;
|
|
60
|
+
const isNextVersionGap = nextVersion - version > 1;
|
|
61
|
+
if (isNextVersionGap || isLast) {
|
|
62
|
+
finalOptimizedBrowsers.push({
|
|
63
|
+
name: browser,
|
|
64
|
+
minVersion: lowestVersionSoFar,
|
|
65
|
+
maxVersion: version,
|
|
66
|
+
});
|
|
67
|
+
lowestVersionSoFar = nextVersion;
|
|
68
|
+
}
|
|
69
|
+
});
|
|
70
|
+
});
|
|
71
|
+
return finalOptimizedBrowsers;
|
|
72
|
+
};
|
|
73
|
+
const getBrowsersFromQuery = (browserListQuery) => {
|
|
74
|
+
const browserList = (0, browserslist_1.default)(browserListQuery);
|
|
75
|
+
const browsersWithVersions = getBrowsersWithVersions(browserList);
|
|
76
|
+
return getOptimizedVersionDistribution(browsersWithVersions);
|
|
77
|
+
};
|
|
78
|
+
exports.getBrowsersFromQuery = getBrowsersFromQuery;
|
|
79
|
+
const shuffleArray = (array) => {
|
|
80
|
+
for (let i = array.length - 1; i > 0; i--) {
|
|
81
|
+
const j = Math.floor(Math.random() * (i + 1));
|
|
82
|
+
[array[i], array[j]] = [array[j], array[i]];
|
|
83
|
+
}
|
|
84
|
+
return array;
|
|
85
|
+
};
|
|
86
|
+
exports.shuffleArray = shuffleArray;
|
|
87
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../src/utils.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "header-generator",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "2.0.0-beta.2",
|
|
4
4
|
"description": "NodeJs package for generating browser-like headers.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Apify",
|
|
@@ -9,28 +9,52 @@
|
|
|
9
9
|
},
|
|
10
10
|
"homepage": "https://github.com/apify/header-generator#readme",
|
|
11
11
|
"license": "Apache-2.0",
|
|
12
|
-
"
|
|
12
|
+
"engines": {
|
|
13
|
+
"node": ">=15.10.0"
|
|
14
|
+
},
|
|
13
15
|
"files": [
|
|
14
|
-
"
|
|
16
|
+
"dist"
|
|
15
17
|
],
|
|
18
|
+
"main": "dist/index.js",
|
|
19
|
+
"module": "dist/index.mjs",
|
|
20
|
+
"types": "dist/index.d.ts",
|
|
21
|
+
"exports": {
|
|
22
|
+
".": {
|
|
23
|
+
"import": "./dist/index.mjs",
|
|
24
|
+
"require": "./dist/index.js"
|
|
25
|
+
}
|
|
26
|
+
},
|
|
16
27
|
"dependencies": {
|
|
28
|
+
"browserslist": "^4.19.1",
|
|
17
29
|
"generative-bayesian-network": "0.1.0-beta.1",
|
|
18
|
-
"ow": "^0.23.0"
|
|
30
|
+
"ow": "^0.23.0",
|
|
31
|
+
"tslib": "^2.3.1"
|
|
19
32
|
},
|
|
20
33
|
"devDependencies": {
|
|
21
|
-
"@apify/eslint-config": "^0.1.
|
|
22
|
-
"
|
|
23
|
-
"
|
|
24
|
-
"
|
|
34
|
+
"@apify/eslint-config-ts": "^0.1.4",
|
|
35
|
+
"@apify/tsconfig": "^0.1.0",
|
|
36
|
+
"@types/jest": "^27.0.2",
|
|
37
|
+
"@typescript-eslint/eslint-plugin": "^4.32.0",
|
|
38
|
+
"@typescript-eslint/parser": "^4.32.0",
|
|
39
|
+
"eslint": "^7.0.0",
|
|
40
|
+
"gen-esm-wrapper": "^1.1.3",
|
|
41
|
+
"jest": "^27.2.5",
|
|
42
|
+
"jest-circus": "^27.2.4",
|
|
25
43
|
"jsdoc-to-markdown": "^7.0.0",
|
|
26
|
-
"markdown-toc": "^1.2.0"
|
|
44
|
+
"markdown-toc": "^1.2.0",
|
|
45
|
+
"ts-jest": "^27.0.5",
|
|
46
|
+
"ts-node": "^10.2.1",
|
|
47
|
+
"typescript": "^4.4.3"
|
|
27
48
|
},
|
|
28
49
|
"scripts": {
|
|
29
|
-
"build
|
|
30
|
-
"
|
|
31
|
-
"
|
|
32
|
-
"lint
|
|
33
|
-
"
|
|
50
|
+
"build": "rimraf dist && tsc",
|
|
51
|
+
"postbuild": "gen-esm-wrapper dist/index.js dist/index.mjs",
|
|
52
|
+
"prepublishOnly": "npm run build",
|
|
53
|
+
"lint": "eslint src test",
|
|
54
|
+
"lint:fix": "eslint src test --fix",
|
|
55
|
+
"test": "npm run build && jest",
|
|
56
|
+
"build-docs": "npm run build && npm run build-toc && node docs/build-docs.js",
|
|
57
|
+
"build-toc": "markdown-toc docs/README.md -i"
|
|
34
58
|
},
|
|
35
59
|
"bugs": {
|
|
36
60
|
"url": "https://github.com/apify/header-generator/issues"
|
|
@@ -1 +0,0 @@
|
|
|
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"]
|