Netsky cb3c249d8b Remove thumbnail and icon_url from ConclusionWebhook
Removed thumbnail and icon_url from footer.
2025-12-27 15:11:38 +01:00
2025-09-26 18:58:33 +02:00
2025-09-26 18:58:33 +02:00
2025-09-26 18:58:33 +02:00
2025-02-15 16:14:47 +01:00
2025-11-10 10:56:57 +01:00
2025-11-10 10:56:57 +01:00
2025-08-22 00:43:17 +02:00
2025-11-10 10:56:57 +01:00
2025-11-03 11:35:51 +01:00
2025-11-10 10:56:57 +01:00
2025-11-10 10:56:57 +01:00
2025-11-11 11:15:04 +01:00
2025-10-11 16:54:07 +02:00

Discord


Table of Contents


Setup

Requirements: Node.js ≥ 20 and Git
Works on Windows, Linux, macOS, and WSL.


1. Clone the Repository

All systems:

git clone https://github.com/TheNetsky/Microsoft-Rewards-Script.git
cd Microsoft-Rewards-Script

Or download the latest release ZIP and extract it.


2. Copy Configuration Files

Windows: Rename manually:

src/accounts.example.json → src/accounts.json

Linux / macOS / WSL:

cp src/accounts.example.json src/accounts.json

Then edit:

  • src/accounts.json — fill in your Microsoft account credentials.
  • src/config.json — review or customize options.

3. Install Dependencies and Prepare the Browser

All systems:

npm run pre-build

This command:

  • Installs all dependencies
  • Clears old builds (dist/)
  • Installs Playwright Chromium (required browser)

4. Build and Run

All systems:

npm run build
npm run start

Nix Setup

If using Nix:

  1. Run the pre-build step first:

    npm run pre-build
    
  2. Then start the script:

    ./run.sh
    

This will launch the script headlessly using xvfb-run.

Docker Setup

Before Starting

  • Remove local /node_modules and /dist if previously built.
  • Remove old Docker volumes if upgrading from older versions.
  • You can reuse your existing accounts.json.

Quick Start

  1. Clone the repository and configure your accounts.json.
  2. Ensure config.json has "headless": true.
  3. Edit compose.yaml:
    • Set your timezone (TZ)
    • Set the cron schedule (CRON_SCHEDULE)
    • Optionally enable RUN_ON_START=true
  4. Start the container:
    docker compose up -d
    
  5. Monitor logs:
    docker logs microsoft-rewards-script
    

The container includes a randomized delay (about 550 minutes by default)
before each scheduled run to appear more natural. This can be configured or disabled via environment variables.


Example compose.yaml

services:
  microsoft-rewards-script:
    image: ghcr.io/your-org/microsoft-rewards-script:latest
    container_name: microsoft-rewards-script
    restart: unless-stopped

    volumes:
      - ./src/accounts.json:/usr/src/microsoft-rewards-script/dist/accounts.json:ro
      - ./src/config.json:/usr/src/microsoft-rewards-script/dist/config.json:ro
      - ./sessions:/usr/src/microsoft-rewards-script/dist/sessions
      # - ./jobstate:/usr/src/microsoft-rewards-script/dist/jobstate

    environment:
      TZ: "Europe/Amsterdam"
      NODE_ENV: "production"
      CRON_SCHEDULE: "0 7,16,20 * * *"
      RUN_ON_START: "true"
      # MIN_SLEEP_MINUTES: "5"
      # MAX_SLEEP_MINUTES: "50"
      # SKIP_RANDOM: "true"

    deploy:
      resources:
        limits:
          cpus: "1.0"
          memory: "1g"

compose.yaml Notes

  • volumes
    • accounts.json and config.json are mounted read-only to prevent accidental edits.
    • sessions persists login sessions and fingerprints across runs.
    • If jobState.enabled is used, mount its directory as a volume.
  • CRON_SCHEDULE
    • Uses standard crontab syntax (e.g., via crontab.guru).
    • Schedule is evaluated inside the container using the configured TZ.
  • RUN_ON_START
    • Runs the script once immediately on startup, then continues on schedule.
  • Randomization
    • Default delay: 550 minutes.
    • Adjustable via MIN_SLEEP_MINUTES and MAX_SLEEP_MINUTES, or disable with SKIP_RANDOM.

Configuration Reference

Edit src/config.json to customize behavior.
Below is a summary of key configuration sections.

Core

Setting Description Default
baseURL Microsoft Rewards base URL https://rewards.bing.com
sessionPath Folder to store browser sessions sessions
dryRun Simulate execution without running tasks false

Browser

Setting Description Default
browser.headless Run browser invisibly false
browser.globalTimeout Timeout for actions "30s"

Fingerprinting

Setting Description Default
fingerprinting.saveFingerprint.mobile Reuse mobile fingerprint true
fingerprinting.saveFingerprint.desktop Reuse desktop fingerprint true

Execution

Setting Description Default
execution.parallel Run desktop and mobile simultaneously false
execution.runOnZeroPoints Run even with zero points false
execution.clusters Number of concurrent account clusters 1

Job State

Setting Description Default
jobState.enabled Save last job state true
jobState.dir Directory for job data ""

Workers (Tasks)

Setting Description Default
doDailySet Complete daily set true
doMorePromotions Complete more promotions true
doPunchCards Complete punchcards true
doDesktopSearch Perform desktop searches true
doMobileSearch Perform mobile searches true
doDailyCheckIn Complete daily check-in true
doReadToEarn Complete Read-to-Earn true
bundleDailySetWithSearch Combine daily set and searches true
Setting Description Default
search.useLocalQueries Use local query list true
search.settings.useGeoLocaleQueries Use region-based queries true
search.settings.scrollRandomResults Random scrolling true
search.settings.clickRandomResults Random link clicking true
search.settings.retryMobileSearchAmount Retry mobile searches 2
search.settings.delay.min Minimum delay between searches 1min
search.settings.delay.max Maximum delay between searches 5min

Query Diversity

Setting Description Default
queryDiversity.enabled Enable multiple query sources true
queryDiversity.sources Query providers ["google-trends", "reddit", "local-fallback"]
queryDiversity.maxQueriesPerSource Limit per source 10
queryDiversity.cacheMinutes Cache lifetime 30

Humanization

Setting Description Default
humanization.enabled Enable human behavior true
stopOnBan Stop immediately on ban true
immediateBanAlert Alert instantly if banned true
actionDelay.min Minimum delay per action (ms) 500
actionDelay.max Maximum delay per action (ms) 2200
gestureMoveProb Chance of random mouse movement 0.65
gestureScrollProb Chance of random scrolls 0.4

Vacation Mode

Setting Description Default
vacation.enabled Enable random pauses true
minDays Minimum days off 2
maxDays Maximum days off 4

Risk Management

Setting Description Default
enabled Enable risk-based adjustments true
autoAdjustDelays Adapt delays dynamically true
stopOnCritical Stop on critical warning false
banPrediction Predict bans based on signals true
riskThreshold Risk tolerance level 75

Retry Policy

Setting Description Default
maxAttempts Maximum retry attempts 3
baseDelay Initial retry delay 1000
maxDelay Maximum retry delay 30s
multiplier Backoff multiplier 2
jitter Random jitter factor 0.2

Proxy

Setting Description Default
proxy.proxyGoogleTrends Proxy Google Trends requests true
proxy.proxyBingTerms Proxy Bing terms requests true

Notifications

Setting Description Default
notifications.webhook.enabled Enable Discord webhook false
notifications.webhook.url Discord webhook URL ""
notifications.conclusionWebhook.enabled Enable summary webhook false
notifications.conclusionWebhook.url Summary webhook URL ""
notifications.ntfy.enabled Enable Ntfy push alerts false
notifications.ntfy.url Ntfy server URL ""
notifications.ntfy.topic Ntfy topic name "rewards"

Logging

Setting Description Default
excludeFunc Exclude from console logs ["SEARCH-CLOSE-TABS", "LOGIN-NO-PROMPT", "FLOW"]
webhookExcludeFunc Exclude from webhook logs ["SEARCH-CLOSE-TABS", "LOGIN-NO-PROMPT", "FLOW"]
redactEmails Hide emails in logs true

Account Configuration

Edit src/accounts.json:

{
  "accounts": [
    {
      "enabled": true,
      "email": "email_1@outlook.com",
      "password": "password_1",
      "totp": "",
      "recoveryEmail": "your_email@domain.com",
      "proxy": {
        "proxyAxios": true,
        "url": "",
        "port": 0,
        "username": "",
        "password": ""
      }
    }
  ]
}

Features Overview

  • Multi-account and session handling
  • Persistent browser fingerprints
  • Parallel task execution
  • Proxy and retry support
  • Human-like behavior simulation
  • Full daily set automation
  • Mobile and desktop search support
  • Vacation and risk protection
  • Webhook and Ntfy notifications
  • Docker scheduling support

Disclaimer

Use at your own risk.
Automation of Microsoft Rewards may lead to account suspension or bans.
This software is provided for educational purposes only.
The authors are not responsible for any actions taken by Microsoft.

Description
Automated Microsoft Rewards script, using TypeScript, Cheerio and Playwright.
Readme GPL-3.0 3.6 MiB
Languages
TypeScript 94%
Shell 4%
Dockerfile 1.5%
Nix 0.5%