Arkose Labs FunCaptchaを解説:検証チャレンジの仕組みと対処法
Arkose Labs(多くの開発者はFunCaptchaとして知っています)は、大手サイトが会員登録、ログイン、決済に使っているcaptchaプロバイダーです。最もよく知られている機能は検証チャレンジです。リスクエンジンが訪問者にもっと確認が必要と判断したときに表示される、物体を回転させたり模様を合わせたりする短いゲーム風のパズルです。Arkoseに対するScarnoxのサポートは近日対応予定です。このガイドでは、チャレンジの仕組み、単純なウィジェットより難しい理由、正当な用途での一般的なアプローチを説明します。
Arkoseのチャレンジの配信方法
保護されたページはArkoseのスクリプトを読み込み、サイトを識別する公開キーを渡します。チャレンジ自体はプロバイダーから配信され、ウィジェットは訪問者の回答をトークンの形で返します。他のトークン型ウィジェットと同様に、サイトのバックエンドは結果を信頼する前に、そのトークンをプロバイダーに対して検証します。
公開キーは、ページを扱うときに探す識別子です。PopularCaptchaやreCAPTCHAのウィジェットでサイトキーが識別子になるのと同じ役割です。ページ上で識別子を見つける方法はcaptchaのサイトキーを見つける方法で説明しています。
チャレンジの見た目
Arkoseのチャレンジは通常、短くて視覚的です。画像を正立するまで回す、一連の中から一致する項目を選ぶ、3Dシーンの順番をたどる、といった例があります。デザインは頻繁に変わり、サイトごとに異なるチャレンジの組み合わせが使われます。パズルはそれ自体がシグナルでもあります。訪問者の動きや所要時間は、最終的な答えと同じくらい重要になることがあります。
リスクエンジン
チャレンジを表示する前に、プロバイダーはセッションをスコア化します。スコアはブラウザのシグナル、デバイスの特徴、リクエストの履歴、ページ上での振る舞いをもとにします。リスクの低い訪問者はチャレンジなしで通過することがあります。リスクの高い訪問者は1つ以上のパズルを見せられ、非常にリスクの高い訪問者はブロックされることもあります。
リスクエンジンはサイトごとに調整され、時間とともに変わります。そのため、あるサイトで有効な汎用的な方法が別のサイトでは失敗することがあります。これが、エンフォースメントチャレンジが単純なウィジェットより扱いにくい理由の1つです。
自動化がフラグされる理由
自動化は、他のスコアベースのチェックと同じ理由でフラグされます。標準設定のヘッドレスブラウザ、履歴のない新しいセッション、速く規則的なリクエストのパターン、評判の悪いネットワークアドレスなどです。シグナルはそれぞれリスクスコアに加算されます。するとチャレンジは、自動化が苦手なこと、たとえば正確で人間らしいドラッグを要求してきます。
正当なアプローチ
自分のテストや正当なワークフローでは、次のアプローチによって不要なチャレンジを減らせます。
- 一貫した設定の実際のブラウザプロファイルを使う。 機能を削ぎ落とした自動化ビルドは避けます。
- セッションを継続させる。 訪問者がページごとに新規に見えないようにします。
- 人が実際に出せる程度のペースでリクエストする。
- サイトが自分のものなら、ベンダーのテスト環境を使う。 ArkoseやほとんどのCAPTCHAプロバイダーは、実際のリスクスコアリングなしで連携をテストする方法を提供しています。
- 正当な作業がまだブロックされるなら、サイトの運営者に許可リスト、APIまたはアクセシブルな代替手段を依頼する。
これらのアプローチでチャレンジが表示される頻度は下がります。ただし、プロバイダーがセッションにチャレンジを出す権利がなくなるわけではありません。自分が所有していないアカウントのログイン保護を突破するために使うべきではありません。
Arkoseソルバーができること
トークン型のArkoseソルバーは、公開キーとページURLを受け取り、有効なトークンを作ってコードに返すことになります。あなたのコードは、期限切れになる前にそのトークンをフォームと一緒に送信します。連携の形はライブのPopularCaptchaフローに似ていますが、細部は異なります。Scarnoxは、サポートが始まったときにタスクの種類とフィールドをAPIリファレンスに記載する予定です。
Scarnoxは現在、Arkoseをライブで解決していません。現在ライブのタスクの種類はPopularCaptcha(プロキシなし)のみです。Arkoseのサポートは近日対応予定です。
倫理的な境界
エンフォースメントチャレンジは、ログインページ、決済フロー、会員登録フォームを不正利用から守るためのものです。これらのフローに対してどのソルバーを使う場合でも、自分が所有していないアカウントにログインする、スパムアカウントを作る、他の顧客より先に限定在庫を買うといった用途は許されません。Scarnoxはそうした用途をサポートしません。保護されたサイトでの正当な作業は、まずサイトの運営者に相談するべきです。何が許されるかは運営者の判断で決まります。
作業前に確認すること
Arkoseで保護されたフローに対する作業を計画する前に、いくつかの質問に答えてください。そのフローは自分のものですか。自分のものであれば、構築とテストはベンダーのテスト環境や自分のステージング環境で行うべきです。作業は正当ですか。サイトが許可している方法での公開情報の収集は正当です。自分が所有していないアカウントへのログインや、大量のアカウント作成は正当ではありません。サイトにAPIやデータフィードがありませんか。多くのサイトにはあり、ブラウザでの作業を自動化するより速く安定しています。
次に量を確認してください。エンフォースメントチャレンジは時間をかけた振る舞いに反応するため、低く一定のペースで動くジョブは、一度に集中して動くジョブより少ないチャレンジしか受けないことが多いです。その点を考えてスケジュールを立て、設計外のチャレンジに出会ったら、ループで再試行するのではなく、ジョブが停止して報告するようにしてください。
最後に、チャレンジを完了できなかったときにジョブが何をするかを事前に決めておいてください。ログを残して明確に失敗するほうが、サイトに負荷をかけてトラフィックをブロックされる再試行の嵐より、はるかに良い結果になります。
責任あるスクレイピング
保護されたサイトをスクレイピングする予定なら、まずrobots.txtと利用規約を確認してください。リクエストの頻度は低く保ち、必要のない個人データは避け、ブラウザ作業を組む前にAPIがないか探してください。主な論点はWebスクレイピングは合法かで扱っています。