mirror of
https://github.com/LightZirconite/Microsoft-Rewards-Bot.git
synced 2026-01-10 17:26:17 +00:00
fix: Revert version to 2.56.2 in package.json; enhance fingerprint injection error handling and configuration options
This commit is contained in:
@@ -1,6 +1,6 @@
|
|||||||
{
|
{
|
||||||
"name": "microsoft-rewards-bot",
|
"name": "microsoft-rewards-bot",
|
||||||
"version": "2.56.3",
|
"version": "2.56.2",
|
||||||
"description": "Automate Microsoft Rewards points collection",
|
"description": "Automate Microsoft Rewards points collection",
|
||||||
"private": true,
|
"private": true,
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
|
|||||||
@@ -84,8 +84,25 @@ class Browser {
|
|||||||
const sessionData = await loadSessionData(this.bot.config.sessionPath, email, this.bot.isMobile, saveFingerprint)
|
const sessionData = await loadSessionData(this.bot.config.sessionPath, email, this.bot.isMobile, saveFingerprint)
|
||||||
const fingerprint = sessionData.fingerprint ? sessionData.fingerprint : await this.generateFingerprint()
|
const fingerprint = sessionData.fingerprint ? sessionData.fingerprint : await this.generateFingerprint()
|
||||||
|
|
||||||
|
// Check if fingerprint injection is enabled (can be disabled to avoid session closed errors)
|
||||||
|
const enableInjection = this.bot.config.fingerprinting?.enableInjection !== false
|
||||||
|
|
||||||
// FIXED: Add error handling and retry logic for fingerprint injection
|
// FIXED: Add error handling and retry logic for fingerprint injection
|
||||||
let context: BrowserContext | undefined
|
let context: BrowserContext | undefined
|
||||||
|
|
||||||
|
if (!enableInjection) {
|
||||||
|
// Fallback: use plain context without fingerprint injection
|
||||||
|
this.bot.log(this.bot.isMobile, 'BROWSER', 'Fingerprint injection disabled, using plain context', 'warn')
|
||||||
|
context = await browser.newContext({
|
||||||
|
ignoreHTTPSErrors: true,
|
||||||
|
bypassCSP: true,
|
||||||
|
userAgent: fingerprint.fingerprint.navigator.userAgent,
|
||||||
|
viewport: this.bot.isMobile
|
||||||
|
? { width: 390, height: 844 }
|
||||||
|
: { width: 1280, height: 800 }
|
||||||
|
}) as unknown as BrowserContext
|
||||||
|
} else {
|
||||||
|
// Use fingerprint injection with retry logic
|
||||||
let retries = 3
|
let retries = 3
|
||||||
while (retries > 0) {
|
while (retries > 0) {
|
||||||
try {
|
try {
|
||||||
@@ -102,12 +119,23 @@ class Browser {
|
|||||||
retries--
|
retries--
|
||||||
if (retries === 0) {
|
if (retries === 0) {
|
||||||
this.bot.log(this.bot.isMobile, 'BROWSER', `Fingerprint injection failed after retries: ${e instanceof Error ? e.message : String(e)}`, 'error')
|
this.bot.log(this.bot.isMobile, 'BROWSER', `Fingerprint injection failed after retries: ${e instanceof Error ? e.message : String(e)}`, 'error')
|
||||||
throw e
|
this.bot.log(this.bot.isMobile, 'BROWSER', 'Falling back to plain context without fingerprint injection', 'warn')
|
||||||
|
// Final fallback: use plain context
|
||||||
|
context = await browser.newContext({
|
||||||
|
ignoreHTTPSErrors: true,
|
||||||
|
bypassCSP: true,
|
||||||
|
userAgent: fingerprint.fingerprint.navigator.userAgent,
|
||||||
|
viewport: this.bot.isMobile
|
||||||
|
? { width: 390, height: 844 }
|
||||||
|
: { width: 1280, height: 800 }
|
||||||
|
}) as unknown as BrowserContext
|
||||||
|
break
|
||||||
}
|
}
|
||||||
this.bot.log(this.bot.isMobile, 'BROWSER', `Fingerprint injection failed, retrying... (${retries} left)`, 'warn')
|
this.bot.log(this.bot.isMobile, 'BROWSER', `Fingerprint injection failed, retrying... (${retries} left)`, 'warn')
|
||||||
await new Promise(resolve => setTimeout(resolve, 1000))
|
await new Promise(resolve => setTimeout(resolve, 1000))
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if (!context) {
|
if (!context) {
|
||||||
throw new Error('Failed to create browser context')
|
throw new Error('Failed to create browser context')
|
||||||
|
|||||||
@@ -96,7 +96,9 @@
|
|||||||
"saveFingerprint": {
|
"saveFingerprint": {
|
||||||
"mobile": true,
|
"mobile": true,
|
||||||
"desktop": true
|
"desktop": true
|
||||||
}
|
},
|
||||||
|
// Set to false if you encounter "session closed" errors with fingerprint injection
|
||||||
|
"enableInjection": true
|
||||||
},
|
},
|
||||||
|
|
||||||
// === PROXY ===
|
// === PROXY ===
|
||||||
|
|||||||
@@ -45,6 +45,7 @@ export interface ConfigBrowser {
|
|||||||
|
|
||||||
export interface ConfigFingerprinting {
|
export interface ConfigFingerprinting {
|
||||||
saveFingerprint?: ConfigSaveFingerprint;
|
saveFingerprint?: ConfigSaveFingerprint;
|
||||||
|
enableInjection?: boolean; // Enable fingerprint injection (default: true, set to false if session closed errors occur)
|
||||||
}
|
}
|
||||||
|
|
||||||
export interface ConfigSearchSettings {
|
export interface ConfigSearchSettings {
|
||||||
|
|||||||
Reference in New Issue
Block a user