diff options
author | Vijay Raghavan Aravamudhan <vraravam@users.noreply.github.com> | 2021-07-12 05:09:17 +0530 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-12 05:09:17 +0530 |
commit | bb4037a57bba79d04e873f2198d19a368d8f6b02 (patch) | |
tree | baad72b60084318267dcc6b19b9ca3d9e82d83fa | |
parent | Upgraded nodejs to '14.17.3' (diff) | |
download | ferdium-app-bb4037a57bba79d04e873f2198d19a368d8f6b02.tar.gz ferdium-app-bb4037a57bba79d04e873f2198d19a368d8f6b02.tar.zst ferdium-app-bb4037a57bba79d04e873f2198d19a368d8f6b02.zip |
Use 'useragent-generator' to generate the user-agent string rather than manually building it. (#1592)
-rw-r--r-- | package-lock.json | 36 | ||||
-rw-r--r-- | package.json | 1 | ||||
-rw-r--r-- | src/helpers/userAgent-helpers.js | 42 | ||||
-rw-r--r-- | src/models/UserAgent.js | 4 |
4 files changed, 57 insertions, 26 deletions
diff --git a/package-lock.json b/package-lock.json index 8b943719f..926361a31 100644 --- a/package-lock.json +++ b/package-lock.json | |||
@@ -28853,6 +28853,11 @@ | |||
28853 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", | 28853 | "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", |
28854 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" | 28854 | "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==" |
28855 | }, | 28855 | }, |
28856 | "normalize-version": { | ||
28857 | "version": "1.0.5", | ||
28858 | "resolved": "https://registry.npmjs.org/normalize-version/-/normalize-version-1.0.5.tgz", | ||
28859 | "integrity": "sha1-pqK5AC3G+i5fFewvCywChPtJlxI=" | ||
28860 | }, | ||
28856 | "now-and-later": { | 28861 | "now-and-later": { |
28857 | "version": "2.0.1", | 28862 | "version": "2.0.1", |
28858 | "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", | 28863 | "resolved": "https://registry.npmjs.org/now-and-later/-/now-and-later-2.0.1.tgz", |
@@ -33022,6 +33027,21 @@ | |||
33022 | } | 33027 | } |
33023 | } | 33028 | } |
33024 | }, | 33029 | }, |
33030 | "semver-closest": { | ||
33031 | "version": "0.1.2", | ||
33032 | "resolved": "https://registry.npmjs.org/semver-closest/-/semver-closest-0.1.2.tgz", | ||
33033 | "integrity": "sha512-Q6qk0bPNlK5zG62mWFC8L0Qc6OJX76XRWxiPgZyrh98IZTL3HPErgUlPfCyrAPsHVpU+YP4lf5Mz+LzpId91Og==", | ||
33034 | "requires": { | ||
33035 | "semver": "^5.4.1" | ||
33036 | }, | ||
33037 | "dependencies": { | ||
33038 | "semver": { | ||
33039 | "version": "5.7.1", | ||
33040 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", | ||
33041 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" | ||
33042 | } | ||
33043 | } | ||
33044 | }, | ||
33025 | "semver-compare": { | 33045 | "semver-compare": { |
33026 | "version": "1.0.0", | 33046 | "version": "1.0.0", |
33027 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", | 33047 | "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", |
@@ -36028,6 +36048,22 @@ | |||
36028 | "tmp": "0.0.x" | 36048 | "tmp": "0.0.x" |
36029 | } | 36049 | } |
36030 | }, | 36050 | }, |
36051 | "useragent-generator": { | ||
36052 | "version": "github:vraravam/useragent-generator#61926ecf3d4b61b021d71953a6dbed3500f7c40a", | ||
36053 | "from": "github:vraravam/useragent-generator#upgrade-constants", | ||
36054 | "requires": { | ||
36055 | "normalize-version": "^1.0.5", | ||
36056 | "semver": "^5.4.1", | ||
36057 | "semver-closest": "^0.1.0" | ||
36058 | }, | ||
36059 | "dependencies": { | ||
36060 | "semver": { | ||
36061 | "version": "5.7.1", | ||
36062 | "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", | ||
36063 | "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" | ||
36064 | } | ||
36065 | } | ||
36066 | }, | ||
36031 | "utf8-byte-length": { | 36067 | "utf8-byte-length": { |
36032 | "version": "1.0.4", | 36068 | "version": "1.0.4", |
36033 | "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", | 36069 | "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", |
diff --git a/package.json b/package.json index bc60af039..2ceada397 100644 --- a/package.json +++ b/package.json | |||
@@ -130,6 +130,7 @@ | |||
130 | "tar": "4.4.13", | 130 | "tar": "4.4.13", |
131 | "targz": "1.0.1", | 131 | "targz": "1.0.1", |
132 | "terser": "4.4.0", | 132 | "terser": "4.4.0", |
133 | "useragent-generator": "vraravam/useragent-generator#upgrade-constants", | ||
133 | "uuid": "3.3.3", | 134 | "uuid": "3.3.3", |
134 | "validator": "11.0.0", | 135 | "validator": "11.0.0", |
135 | "ws": "7.4.6" | 136 | "ws": "7.4.6" |
diff --git a/src/helpers/userAgent-helpers.js b/src/helpers/userAgent-helpers.js index fc9a6f507..4aa6f92d0 100644 --- a/src/helpers/userAgent-helpers.js +++ b/src/helpers/userAgent-helpers.js | |||
@@ -1,29 +1,35 @@ | |||
1 | import os from 'os'; | 1 | import os from 'os'; |
2 | import macosVersion from 'macos-version'; | 2 | import macosVersion from 'macos-version'; |
3 | import { | 3 | import { chromeVersion, isMac, isWindows } from '../environment'; |
4 | ferdiVersion, electronVersion, chromeVersion, isMac, isWindows, | 4 | |
5 | } from '../environment'; | 5 | const uaGenerator = require('useragent-generator'); |
6 | |||
7 | function is64Bit() { | ||
8 | return os.arch().match(/64/); | ||
9 | } | ||
6 | 10 | ||
7 | function macOS() { | 11 | function macOS() { |
8 | const version = macosVersion(); | 12 | const version = macosVersion(); |
9 | return `Macintosh; Intel Mac OS X ${version.replace(/\./g, '_')}`; | 13 | let cpuName = os.cpus()[0].model.split(' ')[0]; |
14 | if (cpuName && cpuName.match(/\(/)) { | ||
15 | cpuName = cpuName.split('(')[0]; | ||
16 | } | ||
17 | return `Macintosh; ${cpuName} Mac OS X ${version.replace(/\./g, '_')}`; | ||
10 | } | 18 | } |
11 | 19 | ||
12 | function windows() { | 20 | function windows() { |
13 | const version = os.release(); | 21 | const version = os.release(); |
14 | const [majorVersion, minorVersion] = version.split('.'); | 22 | const [majorVersion, minorVersion] = version.split('.'); |
15 | return `Windows NT ${majorVersion}.${minorVersion}; Win64; x64`; | 23 | const archString = is64Bit() ? 'Win64' : 'Win32'; |
24 | return `Windows NT ${majorVersion}.${minorVersion}; ${archString}; ${os.arch()}`; | ||
16 | } | 25 | } |
17 | 26 | ||
18 | function linux() { | 27 | function linux() { |
19 | return 'X11; Ubuntu; Linux x86_64'; | 28 | const archString = is64Bit() ? 'x86_64' : os.arch(); |
20 | } | 29 | return `X11; Ubuntu; Linux ${archString}`; |
21 | |||
22 | export function isChromeless(url) { | ||
23 | return url.startsWith('https://accounts.google.com'); | ||
24 | } | 30 | } |
25 | 31 | ||
26 | export default function userAgent(removeChromeVersion = false, addFerdiVersion = false) { | 32 | export default function userAgent() { |
27 | let platformString = ''; | 33 | let platformString = ''; |
28 | 34 | ||
29 | if (isMac) { | 35 | if (isMac) { |
@@ -34,17 +40,5 @@ export default function userAgent(removeChromeVersion = false, addFerdiVersion = | |||
34 | platformString = linux(); | 40 | platformString = linux(); |
35 | } | 41 | } |
36 | 42 | ||
37 | let chromeVersionString = 'Chrome'; | 43 | return uaGenerator.chrome({ os: platformString, version: chromeVersion }); |
38 | if (!removeChromeVersion) { | ||
39 | chromeVersionString = `Chrome/${chromeVersion}`; | ||
40 | } | ||
41 | |||
42 | let applicationString = ''; | ||
43 | if (addFerdiVersion) { | ||
44 | applicationString = ` Ferdi/${ferdiVersion} Electron/${electronVersion}`; | ||
45 | } | ||
46 | |||
47 | // Chrome is pinned to WebKit 537.36, the latest version before hard forking to Blink. | ||
48 | return `Mozilla/5.0 (${platformString}) AppleWebKit/537.36 (KHTML, like Gecko) ${chromeVersionString} Safari/537.36${applicationString}`; | ||
49 | // Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_4) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/80.0.3987.163 Safari/537.36 Ferdi/5.5.1-nightly.13 Electron/8.2.3 | ||
50 | } | 44 | } |
diff --git a/src/models/UserAgent.js b/src/models/UserAgent.js index f1d08e306..6f91d4ed0 100644 --- a/src/models/UserAgent.js +++ b/src/models/UserAgent.js | |||
@@ -5,7 +5,7 @@ import { | |||
5 | observable, | 5 | observable, |
6 | } from 'mobx'; | 6 | } from 'mobx'; |
7 | 7 | ||
8 | import defaultUserAgent, { isChromeless } from '../helpers/userAgent-helpers'; | 8 | import defaultUserAgent from '../helpers/userAgent-helpers'; |
9 | 9 | ||
10 | const debug = require('debug')('Ferdi:UserAgent'); | 10 | const debug = require('debug')('Ferdi:UserAgent'); |
11 | 11 | ||
@@ -76,7 +76,7 @@ export default class UserAgent { | |||
76 | } | 76 | } |
77 | 77 | ||
78 | @action _handleNavigate(url, forwardingHack = false) { | 78 | @action _handleNavigate(url, forwardingHack = false) { |
79 | if (isChromeless(url)) { | 79 | if (url.startsWith('https://accounts.google.com')) { |
80 | if (!this.chromelessUserAgent) { | 80 | if (!this.chromelessUserAgent) { |
81 | debug('Setting user agent to chromeless for url', url); | 81 | debug('Setting user agent to chromeless for url', url); |
82 | this.chromelessUserAgent = true; | 82 | this.chromelessUserAgent = true; |