From a8d080b8e61964cdc8c332646a67fe1790347313 Mon Sep 17 00:00:00 2001 From: kkoooqq <> Date: Sat, 6 Nov 2021 23:10:37 -0400 Subject: [PATCH] fix: evasion - utils path --- package.json | 4 ++-- src/core/DeviceDescriptor.ts | 5 +++++ src/core/FakeBrowser.ts | 30 ++++++++++++++++++++++++++++-- src/core/PptrPatcher.ts | 2 +- 4 files changed, 36 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index f52af7f..ef9c3b6 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "fakebrowser", - "version": "0.0.44", + "version": "0.0.47", "description": "Fake fingerprints to bypass anti-bot systems. Simulate mouse and keyboard operations to make behavior like a real person.", "repository": { "type": "git", @@ -64,7 +64,7 @@ "cross-env": "^7.0.3", "express": "^4.17.1", "jest": "^27.3.1", - "puppeteer": "^10.4.0", + "puppeteer": "^11.0.0", "rimraf": "^3.0.2", "ts-node": "^10.4.0", "typescript": "^4.4.4" diff --git a/src/core/DeviceDescriptor.ts b/src/core/DeviceDescriptor.ts index b3f3afe..dedffb1 100644 --- a/src/core/DeviceDescriptor.ts +++ b/src/core/DeviceDescriptor.ts @@ -339,6 +339,11 @@ export default class DeviceDescriptorHelper { if (!e.mimeTypes || !e.mimeTypes.length) { throw new Error('mimeTypes cannot be empty') } + + // permissions + if (!e.permissions || Object.keys(e.permissions).length === 0) { + throw new Error('permissions cannot be empty') + } } /** diff --git a/src/core/FakeBrowser.ts b/src/core/FakeBrowser.ts index 628747c..31b0b33 100644 --- a/src/core/FakeBrowser.ts +++ b/src/core/FakeBrowser.ts @@ -243,9 +243,35 @@ class FakeBrowserLauncher { // Read from existing files, or generate if not available. const fakeDDPathName = path.resolve(userDataDir, `./${kFakeDDFileName}`) - const tempFakeDD = (fs.existsSync(fakeDDPathName) ? fs.readJsonSync(fakeDDPathName) : launchParams.deviceDesc) as FakeDeviceDescriptor + let tempFakeDD: FakeDeviceDescriptor | null = null + + try { + tempFakeDD = ( + fs.existsSync(fakeDDPathName) + ? fs.readJsonSync(fakeDDPathName) + : launchParams.deviceDesc + ) as FakeDeviceDescriptor + + DeviceDescriptorHelper.checkLegal(tempFakeDD) + } catch (ex: any) { + console.warn('FakeDD illegal') + + // It is possible that some fields are missing due to the deviceDesc update and need to recreate fakeDD + const orgTempFakeDD = tempFakeDD + + tempFakeDD = launchParams.deviceDesc as FakeDeviceDescriptor + + if (orgTempFakeDD) { + tempFakeDD.fontSalt = orgTempFakeDD.fontSalt + tempFakeDD.canvasSalt = orgTempFakeDD.canvasSalt + } + } + + const { + fakeDeviceDesc, + needsUpdate + } = DeviceDescriptorHelper.buildFakeDeviceDescriptor(tempFakeDD) - const {fakeDeviceDesc, needsUpdate} = DeviceDescriptorHelper.buildFakeDeviceDescriptor(tempFakeDD) if (needsUpdate) { fs.writeJsonSync(fakeDDPathName, fakeDeviceDesc, {spaces: 2}) } diff --git a/src/core/PptrPatcher.ts b/src/core/PptrPatcher.ts index c8716f6..9e82bd9 100644 --- a/src/core/PptrPatcher.ts +++ b/src/core/PptrPatcher.ts @@ -427,7 +427,7 @@ export class PptrPatcher { static async evasionsCode(pptr: PuppeteerExtra) { let jsPatch = '' - const utils = require('.../plugins/evasions/_utils'); + const utils = require('../plugins/evasions/_utils'); // utils let utilsContent =