bing-rewards-auto:Microsoft Rewards を自動で回すスクリプト(開発終了)
bing-rewards-auto は Playwright で Microsoft Rewards のタスクを自動でこなすスクリプトで、rewards.bing.com でまだ回収できる検索・quiz・パズルをひと通りさらってポイントに換える。先に言っておくと、このプロジェクトはもうメンテしていない、コードはアーカイブとして残してあるだけだ。Microsoft Rewards の公式規約は bot・macro・automated をすべて禁止項目に挙げているので、走らせ続けるのはアカウントにリスクを足すことになる。以下は当時どうやったかの話であって、誰かに走らせろという推奨ではない。
ブラウザの経路は3本とも通る。Edge、Chrome、そして Playwright 同梱の Chromium をフォールバックにして、それぞれ auth_msedge.json / auth_chrome.json / auth_chromium.json に独立したログイン状態を持たせ、互いに干渉しない。ローカルの Edge が企業ポリシーで塞がれていれば Chromium に切り替える。ログイン状態はまず既存の profile からインポートし、それが取れない場合だけ一度だけ対話的にログインする。
設計はあえて保守的にしている。この手の周回で一番こけやすいのは、頭に血が上って着地したかどうかも構わずひたすらクリックすることだ。デフォルトでは dashboard に実際に表示されていて期限切れでないカードだけをクリックし、一度に1アクション、アクションが終わったら即座にポイントを読み戻す。増加に換わらなければ Safety stop を1本打ってそのラウンドの残りをスキップする。失敗したカードは .rewards_failures.json に書き込み、その日の以降のラウンドではそのままスキップする。
タスクの振り分けは URL と aria-label の pattern で分類し、検索・quiz・Explore on Bing・パズル(Skip puzzle を押すと得点)・Image Creator にそれぞれ handler を1つずつ紐づけている。新しいタスクを足すなら classify() に pattern を1本追加し、HANDLERS に関数を紐づければいい。ロックされた punch card、アプリインストール、抽選はすべて能動的にスキップする。PC / Mobile の検索クォータと1日100ポイントの bonus はデフォルトでは走らず、明示的に --search-quota / --search-bonus を付ける必要がある。ログはタイムスタンプ付きで logs/ に落とし、末尾に before/after のポイント delta を出すので、このラウンドでどれだけ稼いだか一目でわかる。見ていたいなら --show を付けて headless を切り、--dump-rewards でタスク診断が出る。
いくつか地雷を踏んだ。新版 dashboard のデイリーアクティビティの折りたたみ領域はまず展開しないとスキャンで拾いきれない。rnoreward=1 はフィルタ条件のつもりだったが、実測ではこれを付けた可視の daily でも着地するものがあり、一律の切り分けは諦めるしかなかった。デイリー連続サインインのような遷移のない純ボタンは盲目的に押す勇気が出ず、まず trace でプロトコルを把握して docs/earn-protocol-notes.md に書き留めた。
auth_*.json は MS アカウント丸ごとのログイン状態に等しいので、共有するな、クラウドドライブに上げるな。スクリプトは注文もしないし、交換もしないし、設定も変えない。手動と同じクリック・検索・画像生成をするだけだ。それでもどれだけ抑えてもリスクがゼロになるわけではなく、それが止めた理由でもある。