{"id":28718672,"url":"https://github.com/skyblue997/microsoftrewardspilot","last_synced_at":"2026-04-09T21:32:08.345Z","repository":{"id":297861110,"uuid":"998112005","full_name":"SkyBlue997/MicrosoftRewardsPilot","owner":"SkyBlue997","description":"Self-hosted MicrosoftRewards engine, lightweight | 自动答题搜索，多账号托管 | 自己ホスト型MicrosoftRewardsエンジン、軽量","archived":false,"fork":false,"pushed_at":"2025-06-10T10:35:05.000Z","size":164,"stargazers_count":4,"open_issues_count":1,"forks_count":1,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-06-15T05:03:13.648Z","etag":null,"topics":["automation","bot","cron","docker","microsoft-rewards","playwright","python","typescript"],"latest_commit_sha":null,"homepage":"","language":"TypeScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/SkyBlue997.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2025-06-07T22:14:16.000Z","updated_at":"2025-06-14T21:05:14.000Z","dependencies_parsed_at":"2025-06-08T00:37:48.163Z","dependency_job_id":null,"html_url":"https://github.com/SkyBlue997/MicrosoftRewardsPilot","commit_stats":null,"previous_names":["skyblue997/microsoftrewardspilot"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/SkyBlue997/MicrosoftRewardsPilot","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkyBlue997%2FMicrosoftRewardsPilot","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkyBlue997%2FMicrosoftRewardsPilot/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkyBlue997%2FMicrosoftRewardsPilot/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkyBlue997%2FMicrosoftRewardsPilot/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/SkyBlue997","download_url":"https://codeload.github.com/SkyBlue997/MicrosoftRewardsPilot/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/SkyBlue997%2FMicrosoftRewardsPilot/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":259924680,"owners_count":22932782,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["automation","bot","cron","docker","microsoft-rewards","playwright","python","typescript"],"created_at":"2025-06-15T05:03:13.624Z","updated_at":"2026-04-09T21:32:08.339Z","avatar_url":"https://github.com/SkyBlue997.png","language":"TypeScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"\u003cdiv align=\"center\"\u003e\n\n\u003c!-- 语言切换 / Language Switch / 言語切替 --\u003e\n**[中文](README.md)** | **[English](docs/README_EN.md)** | **[日本語](docs/README_JA.md)**\n\n---\n\n# MicrosoftRewardsPilot 自动化脚本\n\n**智能化 Microsoft Rewards 积分自动获取工具**\n\n[![GitHub](https://img.shields.io/badge/GitHub-SkyBlue997-blue?style=flat-square\u0026logo=github)](https://github.com/SkyBlue997/MicrosoftRewardsPilot)\n[![License](https://img.shields.io/badge/License-MIT-green?style=flat-square)](LICENSE)\n[![Docker](https://img.shields.io/badge/Docker-支持-blue?style=flat-square\u0026logo=docker)](https://hub.docker.com)\n\n---\n\n\u003c/div\u003e\n\n## 目录\n\n1. [快速开始](#快速开始)\n2. [主要配置](#主要配置)\n3. [故障排除与测试](#故障排除与测试)\n4. [核心功能](#核心功能)\n5. [完整配置示例](#完整配置示例)\n6. [重要提醒](#重要提醒)\n\n---\n\n## 快速开始\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e本地运行\u003c/strong\u003e （点击展开）\u003c/summary\u003e\n\n```bash\n# 1. 克隆项目\ngit clone https://github.com/SkyBlue997/MicrosoftRewardsPilot\ncd MicrosoftRewardsPilot\n\n# 2. 安装依赖\nnpm i\n\n# 3. 配置文件\n# 复制示例配置文件并编辑\ncp config/config.json.example config/config.json\ncp config/accounts.json.example config/accounts.json\n\n# 4. 构建运行\nnpm run build\nnpm start\n```\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eDocker 部署（推荐）\u003c/strong\u003e （点击展开）\u003c/summary\u003e\n\n```bash\n# 1. 准备配置文件\n# 复制示例配置文件并编辑\ncp config/config.json.example config/config.json\ncp config/accounts.json.example config/accounts.json\n\n# 2. 构建\nnpm run build\n\n# 3. 启动容器\ndocker compose up -d\n\n# 4. 查看日志(可选)\ndocker logs -f microsoftrewardspilot\n```\n\n**Docker Compose 配置示例：**\n\n```yaml\nservices:\n  microsoftrewardspilot:\n    build: .\n    container_name: microsoftrewardspilot\n    restart: unless-stopped\n    volumes:\n      - ./config/accounts.json:/usr/src/microsoftrewardspilot/dist/accounts.json:ro\n      - ./config/config.json:/usr/src/microsoftrewardspilot/dist/config.json:ro\n      - ./sessions:/usr/src/microsoftrewardspilot/dist/browser/sessions\n    environment:\n      - TZ=Asia/Tokyo  # 根据地理位置设置\n      - CRON_SCHEDULE=0 9,16 * * *  # 每天9点和16点运行\n      - ENABLE_GEO_DETECTION=true  # 启用地理位置检测\n      - AUTO_TIMEZONE=true  # 启用自动时区设置\n```\n\n\u003c/details\u003e\n\n---\n\n## 主要配置\n\n### 基础设置\n```json\n{\n  \"headless\": true,           // 无头模式运行\n  \"parallel\": true,           // 并行执行任务\n  \"clusters\": 1,              // 集群数量\n  \"globalTimeout\": \"45min\",   // 全局超时时间\n  \"runOnZeroPoints\": false,   // 零积分时不运行\n  \"accountDelay\": {           // 多账户间隔时间\n    \"min\": \"5min\",            // 最小间隔5分钟\n    \"max\": \"15min\"            // 最大间隔15分钟\n  }\n}\n```\n\n### 智能搜索配置\n```json\n{\n  \"searchSettings\": {\n    \"useGeoLocaleQueries\": true,    // 地理位置查询\n    \"multiLanguage\": {\n      \"enabled\": true,              // 多语言支持\n      \"autoDetectLocation\": true,   // 自动检测位置\n      \"fallbackLanguage\": \"en\"     // 备用语言\n    },\n    \"autoTimezone\": {\n      \"enabled\": true,              // 自动时区\n      \"setOnStartup\": true          // 启动时设置\n    },\n    \"searchDelay\": {\n      \"min\": \"45s\",                 // 最小延迟\n      \"max\": \"2.5min\"              // 最大延迟\n    },\n    \"humanBehavior\": {\n      \"typingErrorRate\": 0.12,      // 打字错误率\n      \"thinkingPauseEnabled\": true, // 思考暂停\n      \"randomScrollEnabled\": true   // 随机滚动\n    },\n    \"antiDetection\": {\n      \"ultraMode\": true,            // 终极防检测模式\n      \"stealthLevel\": \"ultimate\",   // 最高隐身级别\n      \"dynamicDelayMultiplier\": 4.0,// 动态延迟倍数\n      \"humanErrorSimulation\": true, // 人类错误模拟\n      \"deepPageInteraction\": true,  // 深度页面交互\n      \"sessionBreaking\": true       // 智能会话分段\n    },\n    \"chinaRegionAdaptation\": {\n      \"enabled\": true,              // 启用中国区域适配\n      \"useBaiduTrends\": true,       // 使用百度热搜\n      \"useWeiboTrends\": true        // 使用微博热搜\n    }\n  }\n}\n```\n### 任务配置\n```json\n{\n  \"workers\": {\n    \"doDailySet\": true,        // 每日任务集\n    \"doMorePromotions\": true,  // 推广任务\n    \"doPunchCards\": true,      // 打卡任务\n    \"doDesktopSearch\": true,   // 桌面端搜索\n    \"doMobileSearch\": true,    // 移动端搜索\n    \"doDailyCheckIn\": true,    // 每日签到\n    \"doReadToEarn\": true       // 阅读赚取\n  }\n}\n```\n\n### 弹窗处理配置\n```json\n{\n  \"popupHandling\": {\n    \"enabled\": false,                    // 是否启用弹窗处理（默认禁用）\n    \"handleReferralPopups\": true,        // 处理推荐弹窗\n    \"handleStreakProtectionPopups\": true,// 处理连击保护弹窗\n    \"handleStreakRestorePopups\": true,   // 处理连击恢复弹窗\n    \"handleGenericModals\": true,         // 处理通用模态框\n    \"logPopupHandling\": true             // 记录弹窗处理日志\n  }\n}\n```\n\n### Passkey处理配置\n```json\n{\n  \"passkeyHandling\": {\n    \"enabled\": true,              // 是否启用Passkey处理\n    \"maxAttempts\": 5,             // 最大尝试次数\n    \"skipPasskeySetup\": true,     // 跳过Passkey设置\n    \"useDirectNavigation\": true,  // 使用直接导航备选方案\n    \"logPasskeyHandling\": true    // 记录处理日志\n  }\n}\n```\n\n---\n\n## 故障排除与测试\n\n### **移动端2FA验证问题**\n\n**问题：** 移动端任务执行时提示需要双因素认证\n\n**解决方案：** 使用专门的2FA验证助手工具\n\n```bash\n# 运行2FA验证助手\nnpx tsx src/helpers/manual-2fa-helper.ts\n```\n\n**使用流程：**\n1. 运行命令后选择语言\n2. 输入需要验证的邮箱和密码\n3. 在打开的浏览器中完成2FA验证步骤\n4. 等待OAuth授权完成\n5. 工具自动保存移动端会话数据\n6. 重新运行自动化程序，移动端任务将跳过2FA验证\n\n### **弹窗处理问题**\n\n**问题：** 程序在弹窗处理时卡住不动，出现无限循环\n\n**现象：** 日志显示重复的弹窗检测信息\n```\n[REWARDS-POPUP] 🎯 Detected Streak Protection Popup\n[REWARDS-POPUP] 🎯 Detected Streak Protection Popup\n```\n\n**解决方案：**\n1. **立即解决**：在 `config/config.json` 中禁用弹窗处理\n```json\n{\n  \"popupHandling\": {\n    \"enabled\": false\n  }\n}\n```\n\n2. **选择性启用**：只启用需要的弹窗类型\n```json\n{\n  \"popupHandling\": {\n    \"enabled\": true,\n    \"handleReferralPopups\": true,\n    \"handleStreakProtectionPopups\": false,\n    \"handleStreakRestorePopups\": false\n  }\n}\n```\n\n### **Passkey设置循环问题**\n\n**问题：** 登录后被重定向到Passkey设置页面，点击\"Skip for now\"后形成无限循环\n\n**现象：** 程序在 \"Starting login process!\" 后卡住\n\n**解决方案：** 系统已自动处理Passkey循环问题\n- **自动检测**：检测Passkey设置页面\n- **多种绕过**：跳过按钮、ESC键、直接导航\n- **智能重试**：最多5次尝试，防止无限循环\n- **配置控制**：可通过配置调整处理策略\n\n**配置选项：**\n```json\n{\n  \"passkeyHandling\": {\n    \"enabled\": true,\n    \"maxAttempts\": 5\n  }\n}\n```\n\n### **测试工具**\n\n```bash\n# 配置测试\nnpx tsx tests/test-dynamic-config.ts\n\n# 地理位置检测测试\nnpx tsx tests/test-geo-language.ts\n\n# 时区设置测试\nnpx tsx tests/test-timezone-auto.ts\n\n# 弹窗处理功能测试\nnode tests/popup-handler-test.js\n\n# 弹窗无限循环修复验证\nnode tests/popup-loop-fix-test.js\n\n# Passkey处理功能测试\nnode tests/passkey-handling-test.js\n\n# Quiz页面调试（当Quiz失效时使用）\nnpx tsx src/helpers/quiz-debug.ts \"https://rewards.microsoft.com/quiz/xxx\"\n```\n\n### **常见问题**\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e积分获取受限/检测到自动化行为\u003c/strong\u003e\u003c/summary\u003e\n\n**现象：** 连续多次搜索无积分，或积分获取不完整\n**解决方案：** 系统已自动启用终极防检测模式\n- **AI级别行为模拟**：真实用户错误、搜索犹豫、意外点击\n- **统计学反检测**：非标准时间分布、疲劳算法\n- **深度伪装技术**：设备传感器、Canvas指纹噪声\n- **会话管理**：智能分段、自动休息\n- **预期效果**：4-8小时内恢复95%+积分获取率\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003eQuiz任务失败\u003c/strong\u003e\u003c/summary\u003e\n\n**解决方案：** 使用 `npx tsx src/helpers/quiz-debug.ts \u003cURL\u003e` 分析页面结构变化\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e地理位置检测失败\u003c/strong\u003e\u003c/summary\u003e\n\n**解决方案：** 检查网络连接，确保能访问地理位置API服务\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e时区不匹配\u003c/strong\u003e\u003c/summary\u003e\n\n**解决方案：** 检查 `TZ` 环境变量设置是否正确\n\n\u003c/details\u003e\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e内存不足\u003c/strong\u003e\u003c/summary\u003e\n\n**解决方案：** 重启容器或检查系统资源使用情况\n\n\u003c/details\u003e\n\n### **Docker问题排查**\n\n```bash\n# 查看日志\ndocker logs microsoftrewardspilot\n\n# 测试网络连接\ndocker exec microsoftrewardspilot ping google.com\n\n# 检查地理位置\ndocker exec microsoftrewardspilot curl -s http://ip-api.com/json\n```\n\n---\n\n## 核心功能\n\n\u003ctable\u003e\n\u003ctr\u003e\n\u003ctd width=\"50%\" valign=\"top\"\u003e\n\n### **支持任务**\n- **每日任务集** - 完成所有日常任务\n- **推广任务** - 获取额外积分奖励\n- **打卡任务** - 持续积分累积\n- **桌面端搜索** - 智能搜索查询\n- **移动端搜索** - 移动设备模拟\n- **Quiz 挑战** - 10分、30-40分、选择题、ABC题\n- **投票活动** - 参与社区投票\n- **点击奖励** - 简单点击获取积分\n- **每日签到** - 自动签到打卡\n- **阅读赚取** - 阅读文章获取积分\n\n\u003c/td\u003e\n\u003ctd width=\"50%\" valign=\"top\"\u003e\n\n### **智能特性**\n- **多账户支持** - 集群并行处理\n- **会话存储** - 免重复登录，支持2FA\n- **地理位置检测** - IP检测 + 本地化搜索查询\n- **时区同步** - 自动设置匹配时区\n- **多语言支持** - 日语、中文、英语等语言适配\n- **行为模拟** - 打字错误、随机滚动、思考暂停\n- **终极防检测** - AI级别行为模拟、设备传感器注入、Canvas指纹噪声\n- **真实用户模拟** - 错误修正、搜索犹豫、意外点击等人类行为\n- **统计学反检测** - 非标准时间分布、疲劳算法、会话分段\n- **弹窗智能处理** - 自动检测和关闭各种Microsoft Rewards弹窗\n- **Passkey循环绕过** - 自动处理Passkey设置循环问题\n- **Quiz智能适配** - 多重数据获取策略\n- **Docker支持** - 容器化部署\n- **自动重试** - 失败任务智能重试\n- **详细日志** - 完整的执行记录\n- **高性能** - 优化的并发处理\n- **灵活配置** - 丰富的自定义选项\n- **中国大陆优化** - 百度热搜、微博热搜、本地化查询\n\n\u003c/td\u003e\n\u003c/tr\u003e\n\u003c/table\u003e\n\n\n\n---\n\n## 完整配置示例\n\n\u003cdetails\u003e\n\u003csummary\u003e\u003cstrong\u003e查看完整 config.json 示例\u003c/strong\u003e （点击展开）\u003c/summary\u003e\n\n```json\n{\n  \"baseURL\": \"https://rewards.bing.com\",\n  \"sessionPath\": \"sessions\",\n  \"headless\": true,\n  \"parallel\": false,\n  \"runOnZeroPoints\": false,\n  \"clusters\": 1,\n  \"saveFingerprint\": {\n    \"mobile\": true,\n    \"desktop\": true\n  },\n  \"workers\": {\n    \"doDailySet\": true,\n    \"doMorePromotions\": true,\n    \"doPunchCards\": true,\n    \"doDesktopSearch\": true,\n    \"doMobileSearch\": true,\n    \"doDailyCheckIn\": true,\n    \"doReadToEarn\": true\n  },\n  \"searchOnBingLocalQueries\": true,\n  \"globalTimeout\": \"120min\",\n  \"accountDelay\": {\n    \"min\": \"8min\",\n    \"max\": \"20min\"\n  },\n  \"searchSettings\": {\n    \"useGeoLocaleQueries\": true,\n    \"scrollRandomResults\": true,\n    \"clickRandomResults\": true,\n    \"searchDelay\": {\n      \"min\": \"45s\",\n      \"max\": \"120s\"\n    },\n    \"retryMobileSearchAmount\": 0,\n    \"multiLanguage\": {\n      \"enabled\": true,\n      \"autoDetectLocation\": true,\n      \"fallbackLanguage\": \"en\",\n      \"supportedLanguages\": [\"ja\", \"en\", \"zh-CN\", \"ko\", \"de\", \"fr\", \"es\"]\n    },\n    \"autoTimezone\": {\n      \"enabled\": true,\n      \"setOnStartup\": true,\n      \"validateMatch\": true,\n      \"logChanges\": true\n    },\n    \"humanBehavior\": {\n      \"typingErrorRate\": 0.08,\n      \"thinkingPauseEnabled\": true,\n      \"randomScrollEnabled\": true,\n      \"clickRandomEnabled\": true,\n      \"timeBasedDelayEnabled\": true,\n      \"adaptiveDelayEnabled\": true,\n      \"cautionModeEnabled\": true\n    },\n    \"antiDetection\": {\n      \"ultraMode\": true,\n      \"stealthLevel\": \"ultimate\",\n      \"dynamicDelayMultiplier\": 4.0,\n      \"progressiveBackoff\": true,\n      \"maxConsecutiveFailures\": 1,\n      \"cooldownPeriod\": \"20min\",\n      \"sessionSimulation\": true,\n      \"multitaskingEnabled\": true,\n      \"behaviorRandomization\": true,\n      \"timeBasedScheduling\": true,\n      \"humanErrorSimulation\": true,\n      \"deepPageInteraction\": true,\n      \"canvasNoise\": true,\n      \"sensorDataInjection\": true,\n      \"networkBehaviorMimic\": true,\n      \"sessionBreaking\": true,\n      \"realUserErrors\": true\n    },\n    \"chinaRegionAdaptation\": {\n      \"enabled\": false,\n      \"useBaiduTrends\": true,\n      \"useWeiboTrends\": true,\n      \"fallbackToLocalQueries\": true\n    }\n  },\n  \"logExcludeFunc\": [\n    \"SEARCH-CLOSE-TABS\"\n  ],\n  \"webhookLogExcludeFunc\": [\n    \"SEARCH-CLOSE-TABS\"\n  ],\n  \"proxy\": {\n    \"proxyGoogleTrends\": true,\n    \"proxyBingTerms\": true\n  },\n  \"webhook\": {\n    \"enabled\": false,\n    \"url\": \"\"\n  },\n  \"popupHandling\": {\n    \"enabled\": false,\n    \"handleReferralPopups\": true,\n    \"handleStreakProtectionPopups\": true,\n    \"handleStreakRestorePopups\": true,\n    \"handleGenericModals\": true,\n    \"logPopupHandling\": true\n  },\n  \"passkeyHandling\": {\n    \"enabled\": true,\n    \"maxAttempts\": 5,\n    \"skipPasskeySetup\": true,\n    \"useDirectNavigation\": true,\n    \"logPasskeyHandling\": true\n  }\n}\n```\n\n\u003c/details\u003e\n\n\n## 重要提醒\n\n\u003cdiv align=\"center\"\u003e\n\n\u003e **风险警告**\n\u003e 使用自动化脚本可能导致账户被封禁\n\n\u003e **安全建议**\n\u003e 适度使用，系统已自动启用所有反检测功能\n\n\u003e **定期更新**\n\u003e 保持脚本为最新版本\n\n\u003c/div\u003e\n\n---\n\n\u003cdiv align=\"center\"\u003e\n\n**祝您使用愉快！** \n\n[![Star History Chart](https://img.shields.io/github/stars/SkyBlue997/MicrosoftRewardsPilot?style=social)](https://github.com/SkyBlue997/MicrosoftRewardsPilot)\n\n*如果这个项目对您有帮助，请考虑给一个 Star！*\n\n\u003c/div\u003e\n\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyblue997%2Fmicrosoftrewardspilot","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fskyblue997%2Fmicrosoftrewardspilot","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fskyblue997%2Fmicrosoftrewardspilot/lists"}