AIアプリの無料クレジット悪用を止める方法
AI製品の無料クレジットには実際の推論コストがかかります。クレジットファームの仕組み、アカウント単位のレート制限で止められない理由、そして登録フローのどこで判定すべきか。
AI製品の無料クレジットが特別な理由
多くのSaaSでは、偽アカウントのコストはデータベースの1行と指標の少しのノイズです。AI製品では、無料アカウント1つごとに本物のお金が使われ得ます。プロンプトのたびに、あなたが費用を払うGPUで推論が走るからです。無料クレジットは事実上の現金であり、お金に換えられるものは何でも自動化を呼び寄せます。
そのため無料枠を悪用する相手も変わります。単にもっと無料で使いたい人に加えて、クレジットファームが現れます。スクリプトで大量のアカウントを作り、それぞれの無料クレジットを集め、アクセスを転売したり、あなたのAPI経由で自分の処理を動かしたりします。
クレジットファームの仕組み
細部は違っても、形はいつも同じです。
- アカウントはスクリプトで作られます。多くはPuppeteer、Playwright、Seleniumで操作するヘッドレスブラウザで、フィンガープリントをランダム化するアンチディテクトブラウザのこともあります。
- 受信箱は使い捨てです。使い捨てドメイン、ファーム側が所有するキャッチオールドメイン、あるいはドットやプラスで何十通りにも書き換えた1つのGmailアカウントです。
- 通信はサーバーから来ます。クラウドやホスティングは安いので多くのファームはそこで動き、プロキシやTorを挟むこともあります。
- クレジットはすぐに使い切られます。多くは最初の数分で、利用量のアラートが反応する前です。
アカウント単位のレート制限が効かない理由
レート制限は1つのアカウントの使いすぎを防ぎます。ファームはそんなことをしません。各アカウントは行儀よく無料枠内にとどまります。悪用はアカウントの数にあるので、防御は利用段階ではなく、クレジットを付与する前の登録時に行う必要があります。
正しい問いは「このリクエストは不正か?」ではなく、「この新しいアカウントにそもそも無料クレジットを与えるべきか、与えるならいくらか?」です。
登録時にファームを暴くシグナル
自動化
自動化で操作されるブラウザには痕跡が残ります。navigator.webdriver がtrue、HeadlessChrome のユーザーエージェント、接続されたDevToolsプロトコルのクライアント、WebGLのソフトウェアレンダリング、サイズゼロのウィンドウなどです。注意深い運用者なら一つずつ隠せるので、組み合わせて使うのが最も効果的です。ヘッドレスブラウザの検出ガイドで一つずつ解説しています。
ネットワーク
本物のユーザーは家庭や携帯のネットワークから登録します。クラウドのIP範囲(AWS、Google Cloud、Oracle、DigitalOcean、Linode)やTorの出口ノードからの登録、そして今日たくさんのアカウントを作ったアドレスやサブネットには、より注意を払う価値があります。
受信箱
使い捨てドメイン、メールを受信できないドメイン、既存アカウントのGmailエイリアス。Gmailのドットとプラスエイリアスを参照してください。
アカウント間のつながり
ファームの最も強いシグナルは、アカウント同士がつながっていることです。同じデバイス、同じ正規化済み受信箱、同じカードのフィンガープリント。リンクされたアカウントが1つなら弱い証拠ですが、10あればファームです。
チェックを置く場所
登録フォームの送信後、アカウントにクレジットを付与する前に、サーバーで不正チェックを呼び出しましょう。クレジットがバックグラウンドジョブやメール確認時に付与されるなら、そのステップの直前にチェックを置きます。大事なのは、クレジットより先に判定が存在することです。
// Node.js、無料クレジット付与の前 const res = await fetch("https://attrelix.com/v1/check", { method: "POST", headers: { Authorization: `Bearer ${process.env.ATTRELIX_SECRET}`, "Content-Type": "application/json" }, body: JSON.stringify({ email, ip, visitor: req.body.attrelix_visitor }), signal: AbortSignal.timeout(3000), }).catch(() => null); const decision = res?.ok ? (await res.json()).decision : "allow"; const credits = { allow: 100, review: 10, block: 0 }[decision] ?? 100; await grantCredits(user.id, credits);
一律ブロックより段階的なクレジット
AI製品でうまくいくパターンは、全部かゼロかを選ぶのではなく、リスクに応じて無料クレジットを調整することです。
- 許可:無料枠をすべて付与。
- 確認:製品を試せる程度の少ない枠を付与し、残りはカード、電話番号、メール確認の後に付与。
- ブロック:無料クレジットなし。有料プランを案内します。
確認に回った正直なユーザーも製品を試せますし、1アカウントあたり10分の1のクレジットしか得られないファームは採算の大半を失います。
コストを把握する
問題を数字にしましょう。新規アカウントが受け取る無料クレジットの価値に、チェックが確認やブロックに回したはずのアカウント数を掛けます。それが何もしない場合の月間コストで、どれだけ手間を加える価値があるかの目安になります。Attrelixのダッシュボードは、あなたのクレジット価値からこれを計算します。
まとめ
- クレジットファームはアカウントごとの上限内に収まります。登録時に止めましょう。
- 自動化、ネットワーク、受信箱、アカウント間のつながりのシグナルを組み合わせます。
- クレジットが生まれる前に判定し、チェックが使えないときは通します。
- すぐにブロックするのではなく、リスクに応じてクレジットを調整します。