Microsoft Rewards 每日任务自动化 · 油猴脚本 · 逻辑核心托管在 Cloudflare Pages,自动热更新
/bing-rewards.user.js 的完整 URL 复制后粘贴到新标签打开即可。*.bing.com 域(首页 / 搜索 / rewards.bing.com)运行,其它网站完全不加载,也不请求任何第三方接口。
左下角 BR 圆点,点开即可用。每个按钮都对应一个子模块,点击后看控制台 [BR] 日志跟踪进度。
BR.pipeline.start() —— 三页状态机 P1(首页:搜索+每日集+测验)→ P2(dashboard:可领取+每日活动)→ P3(earn:日常+拼图+punchcard)全自动跑完,中途自动跳转。
按 F12 打开控制台,粘贴执行。所有对象都挂在 window.BR 上。
| 命令 | 作用 |
|---|---|
BR.pipeline.start() | 跑完整条流水线(推荐) |
BR.pipeline.stop() | 中止流水线 |
BR.pipeline.state() | 看当前管线状态机进度 |
BR.search.start(20) | 手动跑 n 次 PC 搜索 |
BR.search.startDaily() | 只跑当日搜索额度 |
BR.dailySet.claimApi() | 每日集三卡 API 上报 |
BR.claim.trigger() | 触发 dashboard 可领取 |
BR.quiz.run() / BR.puzzle.solve() | 首页测验 / 拼图求解 |
BR.tasks.run() | earn 页日常任务 |
BR.punchcard.run() | punchcard 打卡 |
BR.auto.toggle() / BR.auto.runNow() | 定时开关 / 立即跑一轮 |
BR.readPoints() | 读取当前可用积分 |
BR.logs(80) | 导出最近 80 条日志(含毫秒时间戳与页面上下文) |
BR.setLogLevel('INFO') | 日志降噪,可选 DEBUG/INFO/ERROR |
BR.build / BR.shellV2 | 查看核心版本 / 壳能力探针结果 |
BR.auto.flush() 手动冲刷。
脚本分两层,这是它能「装一次长期有效」的原因:
userscript 壳(装进油猴,约 4 KB,带 @updateURL)
└─ 每次打开 bing 页面时拉取 ──▶ core.js(137 KB 业务逻辑,托管在 CF Pages)
↑ 只改这一份,全网用户下次开页面即生效
@updateURL 定期检查,或在扩展面板点「检查更新」。version.json 比对版本号,命中本地缓存直接注入(零流量),未命中才拉 core.js 并缓存到 localStorage。userscript/core.js 热调试,在控制台执行一次 localStorage.setItem('br_dev_mode','1'),之后会优先请求 127.0.0.1:18927 的 dev-server;改回 '0' 恢复线上版。window.BR 未出现 / 没有 BR 面板*.bing.com(脚本只在 bing 域运行);③ 刷新页面;④ 看控制台有没有 [BR] 开头的红色报错 —— 通常是网络拉不到 core.js,检查能否访问本页域名;⑤ 执行 window.BR 看是否为 undefined。
BR.shellV2 为 false,测验/日常/punchcard 直接跳过https://*.bing.com/*。卸载旧脚本 → 重新点本页安装即可。装完 BR.shellV2 应为 true。
&search=&form=QBLH(首页搜索框来源标记)才会触发 Rewards 计分,裸 /search?q= 是 0 分。脚本已内置该逻辑;若手动测试请用面板按钮或 BR.search.start(),不要自己拼 URL。另外 PC 搜索每日上限 ≈20 次 / 60 分,到顶即停,超量无效。
isCompleted 字段,比面板准。
BR.auto.flush()。这不是卡死,是风控规避设计。
localStorage.removeItem('br_core_cache');localStorage.removeItem('br_core_cache_build');
localStorage.removeItem('br_shell_v2');localStorage.removeItem('br_core_loaded');
document.cookie.split(';').forEach(c=>{const k=c.split('=')[0].trim();if(k.startsWith('br_'))document.cookie=k+'=;domain=.bing.com;path=/;max-age=0'});
core.js 自身。