mirror of
https://github.com/LightZirconite/Microsoft-Rewards-Bot.git
synced 2026-01-09 17:06:15 +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",
|
||||
"version": "2.56.3",
|
||||
"version": "2.56.2",
|
||||
"description": "Automate Microsoft Rewards points collection",
|
||||
"private": true,
|
||||
"main": "index.js",
|
||||
|
||||
@@ -84,28 +84,56 @@ class Browser {
|
||||
const sessionData = await loadSessionData(this.bot.config.sessionPath, email, this.bot.isMobile, saveFingerprint)
|
||||
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
|
||||
let context: BrowserContext | undefined
|
||||
let retries = 3
|
||||
while (retries > 0) {
|
||||
try {
|
||||
context = await newInjectedContext(browser as unknown as import('playwright').Browser, {
|
||||
fingerprint: fingerprint,
|
||||
// Add context options to prevent premature closure
|
||||
newContextOptions: {
|
||||
ignoreHTTPSErrors: true,
|
||||
bypassCSP: true
|
||||
|
||||
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
|
||||
while (retries > 0) {
|
||||
try {
|
||||
context = await newInjectedContext(browser as unknown as import('playwright').Browser, {
|
||||
fingerprint: fingerprint,
|
||||
// Add context options to prevent premature closure
|
||||
newContextOptions: {
|
||||
ignoreHTTPSErrors: true,
|
||||
bypassCSP: true
|
||||
}
|
||||
})
|
||||
break
|
||||
} catch (e) {
|
||||
retries--
|
||||
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', '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
|
||||
}
|
||||
})
|
||||
break
|
||||
} catch (e) {
|
||||
retries--
|
||||
if (retries === 0) {
|
||||
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', `Fingerprint injection failed, retrying... (${retries} left)`, 'warn')
|
||||
await new Promise(resolve => setTimeout(resolve, 1000))
|
||||
}
|
||||
this.bot.log(this.bot.isMobile, 'BROWSER', `Fingerprint injection failed, retrying... (${retries} left)`, 'warn')
|
||||
await new Promise(resolve => setTimeout(resolve, 1000))
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -96,7 +96,9 @@
|
||||
"saveFingerprint": {
|
||||
"mobile": true,
|
||||
"desktop": true
|
||||
}
|
||||
},
|
||||
// Set to false if you encounter "session closed" errors with fingerprint injection
|
||||
"enableInjection": true
|
||||
},
|
||||
|
||||
// === PROXY ===
|
||||
|
||||
@@ -45,6 +45,7 @@ export interface ConfigBrowser {
|
||||
|
||||
export interface ConfigFingerprinting {
|
||||
saveFingerprint?: ConfigSaveFingerprint;
|
||||
enableInjection?: boolean; // Enable fingerprint injection (default: true, set to false if session closed errors occur)
|
||||
}
|
||||
|
||||
export interface ConfigSearchSettings {
|
||||
|
||||
Reference in New Issue
Block a user