aboutsummaryrefslogtreecommitdiffstats
path: root/packages/service-inject
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-24 23:17:12 +0100
committerLibravatar Kristóf Marussy <kristof@marussy.com>2021-12-24 23:17:12 +0100
commit963489606b5b21bf3b0c571c5f985708e1faddf8 (patch)
tree9716bdd4778c55a478293757ef5653307c1dc019 /packages/service-inject
parentfeat: User agent data simulator (diff)
downloadsophie-963489606b5b21bf3b0c571c5f985708e1faddf8.tar.gz
sophie-963489606b5b21bf3b0c571c5f985708e1faddf8.tar.zst
sophie-963489606b5b21bf3b0c571c5f985708e1faddf8.zip
feat: Shim userAgentData in all frames and workers
Not good enough for google, we'll need a different approach.
Diffstat (limited to 'packages/service-inject')
-rw-r--r--packages/service-inject/src/index.ts2
-rw-r--r--packages/service-inject/src/shims/userAgentData.ts15
2 files changed, 9 insertions, 8 deletions
diff --git a/packages/service-inject/src/index.ts b/packages/service-inject/src/index.ts
index 7f48fdf..f699f11 100644
--- a/packages/service-inject/src/index.ts
+++ b/packages/service-inject/src/index.ts
@@ -21,7 +21,7 @@
21import { shimUserAgentData } from './shims/userAgentData'; 21import { shimUserAgentData } from './shims/userAgentData';
22 22
23try { 23try {
24 shimUserAgentData(); 24 shimUserAgentData('96', 'Linux');
25} catch (err) { 25} catch (err) {
26 console.log('Failed to execute injected script:', err); 26 console.log('Failed to execute injected script:', err);
27} 27}
diff --git a/packages/service-inject/src/shims/userAgentData.ts b/packages/service-inject/src/shims/userAgentData.ts
index be43823..7e2c825 100644
--- a/packages/service-inject/src/shims/userAgentData.ts
+++ b/packages/service-inject/src/shims/userAgentData.ts
@@ -25,19 +25,20 @@ import {
25 simulateNativeFunction, 25 simulateNativeFunction,
26} from '../utils'; 26} from '../utils';
27 27
28export function shimUserAgentData(): void { 28export function shimUserAgentData(chromeVersion: string | null, platform: string): void {
29 const brands = [ 29 const brands = [
30 { 30 {
31 brand: ' Not A; Brand', 31 brand: ' Not A; Brand',
32 version: '99', 32 version: '99',
33 }, 33 },
34 { 34 ];
35 if (chromeVersion !== null) {
36 brands.push({
35 brand: 'Chromium', 37 brand: 'Chromium',
36 version: '96', 38 version: '96',
37 } 39 });
38 ]; 40 }
39 const mobile = false; 41 const mobile = false;
40 const platform = 'Linux';
41 42
42 const simulatedNavigatorUa = simulateNativeClass('NavigatorUAData', function NavigatorUAData() { 43 const simulatedNavigatorUa = simulateNativeClass('NavigatorUAData', function NavigatorUAData() {
43 // Nothing to initiailize. 44 // Nothing to initiailize.
@@ -90,7 +91,7 @@ export function shimUserAgentData(): void {
90 }); 91 });
91 92
92 const simulatedUserAgentData = Reflect.construct(simulatedNavigatorUa, []); 93 const simulatedUserAgentData = Reflect.construct(simulatedNavigatorUa, []);
93 defineProtoProperty(window.navigator, 'userAgentData', { 94 defineProtoProperty(globalThis.navigator, 'userAgentData', {
94 configurable: true, 95 configurable: true,
95 enumerable: true, 96 enumerable: true,
96 get: simulateNativeFunction('userAgentData', () => simulatedUserAgentData), 97 get: simulateNativeFunction('userAgentData', () => simulatedUserAgentData),
@@ -98,5 +99,5 @@ export function shimUserAgentData(): void {
98} 99}
99 100
100export function deleteUserAgentData(): void { 101export function deleteUserAgentData(): void {
101 deleteProtoProperty(window.navigator, 'userAgentData'); 102 deleteProtoProperty(globalThis.navigator, 'userAgentData');
102} 103}