* Updated README.md to reflect version 2.1 and improve the presentation of Microsoft Rewards Automation features.

* Updated version to 2.1.5 in README.md and package.json, added new license and legal notice sections, and improved the configuration script for a better user experience.

* Mise à jour des messages de journalisation et ajout de vérifications pour le chargement des quiz et la présence des options avant de procéder. Suppression de fichiers de configuration obsolètes.

* Added serial protection dialog management for message forwarding, including closing by button or escape.

* feat: Implement BanPredictor for predicting ban risks based on historical data and real-time events

feat: Add ConfigValidator to validate configuration files and catch common issues

feat: Create QueryDiversityEngine to fetch diverse search queries from multiple sources

feat: Develop RiskManager to monitor account activity and assess risk levels dynamically

* Refactor code for consistency and readability; unify string quotes, improve logging with contextual emojis, enhance configuration validation, and streamline risk management logic.

* feat: Refactor BrowserUtil and Login classes for improved button handling and selector management; implement unified selector system and enhance activity processing logic in Workers class.

* feat: Improve logging with ASCII context icons for better compatibility with Windows PowerShell

* feat: Add sample account setup

* Update README.md

* Update README.md

* Update README.md

* Update README.md

* Update README.md
This commit is contained in:
Light
2025-10-15 16:12:15 +02:00
committed by GitHub
parent dc7e122bce
commit 4d928d7dd9
25 changed files with 2830 additions and 815 deletions

View File

@@ -1,147 +0,0 @@
{
// Base URL for Rewards dashboard and APIs
"baseURL": "https://rewards.bing.com",
// Where to store sessions (cookies, fingerprints)
"sessionPath": "sessions",
"browser": {
// Headless mode is more stable on shared servers
"headless": true,
// Use short notation for readability
"globalTimeout": "30s"
},
"execution": {
"parallel": false,
"runOnZeroPoints": false,
"clusters": 1,
"passesPerRun": 1
},
"buyMode": {
"maxMinutes": 45
},
"fingerprinting": {
"saveFingerprint": {
"mobile": true,
"desktop": true
}
},
"search": {
"useLocalQueries": true,
"settings": {
"useGeoLocaleQueries": true,
"scrollRandomResults": true,
"clickRandomResults": true,
"retryMobileSearchAmount": 2,
"delay": {
"min": "8s",
"max": "22s"
}
}
},
"humanization": {
"enabled": true,
"stopOnBan": true,
"immediateBanAlert": true,
"actionDelay": {
"min": 500,
"max": 2200
},
"gestureMoveProb": 0.65,
"gestureScrollProb": 0.4,
"allowedWindows": []
},
"vacation": {
"enabled": true,
"minDays": 2,
"maxDays": 4
},
"retryPolicy": {
"maxAttempts": 3,
"baseDelay": 1000,
"maxDelay": "30s",
"multiplier": 2,
"jitter": 0.2
},
"workers": {
"doDailySet": true,
"doMorePromotions": true,
"doPunchCards": true,
"doDesktopSearch": true,
"doMobileSearch": true,
"doDailyCheckIn": true,
"doReadToEarn": true,
"bundleDailySetWithSearch": true
},
"proxy": {
"proxyGoogleTrends": true,
"proxyBingTerms": true
},
"notifications": {
"webhook": {
"enabled": false,
"url": "***"
},
"conclusionWebhook": {
"enabled": false,
"url": "***"
},
"ntfy": {
"enabled": false,
"url": "",
"topic": "rewards",
"authToken": ""
}
},
"logging": {
"excludeFunc": [
"SEARCH-CLOSE-TABS",
"LOGIN-NO-PROMPT",
"FLOW"
],
"webhookExcludeFunc": [
"SEARCH-CLOSE-TABS",
"LOGIN-NO-PROMPT",
"FLOW"
],
"redactEmails": true
},
"diagnostics": {
"enabled": true,
"saveScreenshot": true,
"saveHtml": true,
"maxPerRun": 2,
"retentionDays": 7
},
"jobState": {
"enabled": true,
"dir": ""
},
"schedule": {
"enabled": false,
"useAmPm": false,
"time12": "9:00 AM",
"time24": "09:00",
"timeZone": "America/New_York",
"runImmediatelyOnStart": false
},
"update": {
"git": true,
"docker": false,
"scriptPath": "setup/update/update.mjs"
}
}

View File

@@ -1,147 +0,0 @@
{
// Base URL for Rewards dashboard and APIs
"baseURL": "https://rewards.bing.com",
// Where to store sessions (cookies, fingerprints)
"sessionPath": "sessions",
"browser": {
// Headless mode is more stable on shared servers
"headless": true,
// Use short notation for readability
"globalTimeout": "30s"
},
"execution": {
"parallel": false,
"runOnZeroPoints": false,
"clusters": 1,
"passesPerRun": 1
},
"buyMode": {
"maxMinutes": 45
},
"fingerprinting": {
"saveFingerprint": {
"mobile": true,
"desktop": true
}
},
"search": {
"useLocalQueries": true,
"settings": {
"useGeoLocaleQueries": true,
"scrollRandomResults": true,
"clickRandomResults": true,
"retryMobileSearchAmount": 2,
"delay": {
"min": "8s",
"max": "22s"
}
}
},
"humanization": {
"enabled": true,
"stopOnBan": true,
"immediateBanAlert": true,
"actionDelay": {
"min": 500,
"max": 2200
},
"gestureMoveProb": 0.65,
"gestureScrollProb": 0.4,
"allowedWindows": []
},
"vacation": {
"enabled": true,
"minDays": 2,
"maxDays": 4
},
"retryPolicy": {
"maxAttempts": 3,
"baseDelay": 1000,
"maxDelay": "30s",
"multiplier": 2,
"jitter": 0.2
},
"workers": {
"doDailySet": true,
"doMorePromotions": true,
"doPunchCards": true,
"doDesktopSearch": true,
"doMobileSearch": true,
"doDailyCheckIn": true,
"doReadToEarn": true,
"bundleDailySetWithSearch": true
},
"proxy": {
"proxyGoogleTrends": true,
"proxyBingTerms": true
},
"notifications": {
"webhook": {
"enabled": false,
"url": "***"
},
"conclusionWebhook": {
"enabled": false,
"url": "***"
},
"ntfy": {
"enabled": false,
"url": "",
"topic": "rewards",
"authToken": ""
}
},
"logging": {
"excludeFunc": [
"SEARCH-CLOSE-TABS",
"LOGIN-NO-PROMPT",
"FLOW"
],
"webhookExcludeFunc": [
"SEARCH-CLOSE-TABS",
"LOGIN-NO-PROMPT",
"FLOW"
],
"redactEmails": true
},
"diagnostics": {
"enabled": true,
"saveScreenshot": true,
"saveHtml": true,
"maxPerRun": 2,
"retentionDays": 7
},
"jobState": {
"enabled": true,
"dir": ""
},
"schedule": {
"enabled": false,
"useAmPm": false,
"time12": "9:00 AM",
"time24": "09:00",
"timeZone": "America/New_York",
"runImmediatelyOnStart": false
},
"update": {
"git": true,
"docker": false,
"scriptPath": "setup/update/update.mjs"
}
}

View File

@@ -1,120 +0,0 @@
{
"baseURL": "https://rewards.bing.com",
"sessionPath": "sessions",
"browser": {
"headless": true,
"globalTimeout": "45s"
},
"execution": {
"parallel": false,
"runOnZeroPoints": true,
"clusters": 1,
"passesPerRun": 1
},
"fingerprinting": {
"saveFingerprint": {
"mobile": false,
"desktop": false
}
},
"search": {
"useLocalQueries": false,
"settings": {
"useGeoLocaleQueries": false,
"scrollRandomResults": true,
"clickRandomResults": true,
"retryMobileSearchAmount": 1,
"delay": {
"min": "6s",
"max": "15s"
}
}
},
"humanization": {
"enabled": true,
"stopOnBan": true,
"immediateBanAlert": true,
"actionDelay": {
"min": 200,
"max": 750
},
"gestureMoveProb": 0.5,
"gestureScrollProb": 0.25,
"allowedWindows": []
},
"vacation": {
"enabled": false,
"minDays": 2,
"maxDays": 3
},
"retryPolicy": {
"maxAttempts": 3,
"baseDelay": 1000,
"maxDelay": "30s",
"multiplier": 2,
"jitter": 0.2
},
"workers": {
"doDailySet": true,
"doMorePromotions": true,
"doPunchCards": true,
"doDesktopSearch": true,
"doMobileSearch": true,
"doDailyCheckIn": true,
"doReadToEarn": true,
"bundleDailySetWithSearch": false
},
"proxy": {
"proxyGoogleTrends": true,
"proxyBingTerms": true
},
"notifications": {
"webhook": {
"enabled": false,
"url": ""
},
"conclusionWebhook": {
"enabled": false,
"url": ""
},
"ntfy": {
"enabled": false,
"url": "",
"topic": "rewards",
"authToken": ""
}
},
"logging": {
"excludeFunc": [
"FLOW"
],
"webhookExcludeFunc": [
"FLOW"
],
"redactEmails": true
},
"diagnostics": {
"enabled": true,
"saveScreenshot": true,
"saveHtml": false,
"maxPerRun": 1,
"retentionDays": 5
},
"jobState": {
"enabled": true,
"dir": ""
},
"schedule": {
"enabled": false,
"useAmPm": false,
"time12": "8:30 AM",
"time24": "08:30",
"timeZone": "UTC",
"runImmediatelyOnStart": true
},
"update": {
"git": true,
"docker": false,
"scriptPath": "setup/update/update.mjs"
}
}

View File

@@ -222,8 +222,61 @@ Auto-update behavior after a run.
| Skip mobile searches | Set `workers.doMobileSearch=false`. |
| Use daily schedule | Set `schedule.enabled=true` and adjust `time24` + `timeZone`. |
---
## NEW INTELLIGENT FEATURES
### riskManagement
Dynamic risk assessment and ban prediction.
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| enabled | boolean | true | Enable risk-aware throttling. |
| autoAdjustDelays | boolean | true | Automatically increase delays when captchas/errors are detected. |
| stopOnCritical | boolean | false | Stop execution if risk score exceeds threshold. |
| banPrediction | boolean | true | Enable ML-style pattern analysis to predict ban risk. |
| riskThreshold | number | 75 | Risk score (0-100) above which bot pauses or alerts. |
**How it works:** Monitors captchas, errors, timeouts, and account patterns. Dynamically adjusts delays (e.g., 1x → 2.5x) and warns you before bans happen.
---
### analytics
Performance dashboard and metrics tracking.
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| enabled | boolean | true | Track points earned, success rates, execution times. |
| retentionDays | number | 30 | How long to keep analytics data. |
| exportMarkdown | boolean | true | Generate human-readable markdown reports. |
| webhookSummary | boolean | false | Send analytics summary via webhook. |
**Output location:** `analytics/` folder (JSON files per account per day).
---
### queryDiversity
Multi-source search query generation.
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| enabled | boolean | true | Use diverse sources instead of just Google Trends. |
| sources | array | `["google-trends", "reddit", "local-fallback"]` | Which sources to query (google-trends, reddit, news, wikipedia, local-fallback). |
| maxQueriesPerSource | number | 10 | Max queries to fetch per source. |
| cacheMinutes | number | 30 | Cache duration to avoid hammering APIs. |
**Why?** Reduces patterns by mixing Reddit posts, news headlines, Wikipedia topics instead of predictable Google Trends.
---
### dryRun
Test mode: simulate execution without actually running tasks.
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| dryRun | boolean | false | When true, logs actions but doesn't execute (useful for testing config). |
**Use case:** Validate new config changes, estimate execution time, debug issues without touching accounts.
---
## Changelog Notes
- **v2.2.0**: Added risk-aware throttling, analytics dashboard, query diversity, ban prediction, dry-run mode.
- Removed live webhook streaming complexity; now simpler logging.
- Centralized redaction logic under `logging.redactEmails`.