Scarnox · Blog

正当な自動化とテストのためにcaptchaを回避する方法

captchaを正当に回避するとは、サイトのルールを破らず、サイトの利用者を攻撃せずに、自動化された作業をチャレンジの向こう側へ通すことを意味します。実際には、次の4つのケースを指します。自分が所有するワークフローの自動化、自分のサイトのテスト、アクセシビリティに配慮したツール作り、そして責任ある頻度での公開データの収集です。最も確実で正直な方法は、通常、captchaを発生させないことです。避けられない場合は、Scarnoxのようなソルバーのapiが、ページが期待するトークンを返せます。

このガイドでは、試すべき順番でアプローチを並べ、越えてはいけない境界線を示します。

まず、なぜcaptchaが出たのかを考える

captchaはシグナルです。サイトは、リクエストが自動化されている、またはリスクがあると判断したのです。チャレンジを突破しようとする前に、何が原因かを確認してください。

原因を直すと、captchaそのものが出なくなることが多く、毎回解くよりも良い結果になります。

captchaを避けるアプローチを試す

  1. 公式APIがあれば使う。 多くのサイトは、独自のキーと制限を付けたAPIでデータを公開しています。その経路は速く、安定していて、明確に許可されています。
  2. 速度を落とし、リクエストを分散する。 リクエストの間に遅延を入れ、同時実行数を抑え、警告が出たらバックオフします。1分間に数リクエストという安定したペースは、数百リクエストのバーストとはサイトから見て大きく違います。
  3. セッションを保つ。 ページごとに新しく始めるのではなく、セッション全体でCookieと一貫したブラウザプロファイルを再利用します。なぜこれが重要かはブラウザフィンガープリントのガイドで説明しています。
  4. 作業を始める前に、robots.txtと利用規約を確認する。 ブロックされてからではなく、開始前に確認してください。サイトが求めていることを尊重してください。

テスト用のキーとテスト環境を使う

captchaが自分のステージング環境をブロックしている場合は、テストを本番に向けて回避しようとしないでください。GoogleやCloudflareを含むほとんどのcaptchaベンダーは、開発用のテストキーを公開しています。これらのキーは、実際のチャレンジなしで有効なトークンを返すので、自動テストに適した道具です。チームに頼んで、ステージングサーバーのcaptchaを無効にしてもらうこともできます。このセットアップは自動テストでのcaptchaガイドで手順を説明しています。

正当な作業の前に出てくるcaptchaはAPIで解決する

適切なペースで作業していても、正当な作業にcaptchaが出ることがあります。たとえば、自社のサプライヤーのポータルを監視するジョブです。その場合は、解決APIが適切な道具です。

Scarnoxはcaptcha解決APIです。現在ライブのタスクの種類はPopularCaptcha(プロキシなし)のみです。コードはサイトキーとページURLを送り、フォームと一緒に送信するトークンを受け取ります。

import requests

r = requests.post(
    "https://api.scarnox.com/api/tasks/create",
    headers={"Authorization": "Bearer scarnox_YOURAPIKEY"},
    json={
        "captcha_type": "PopularCaptchaTaskProxyless",
        "site_key": "10000000-ffff-ffff-ffff-000000000001",
        "site_url": "https://example.com/login",
    },
    timeout=185,
)
data = r.json()
token = data["solution"]["token"] if data.get("errorId") == 0 else None

トークンは約2分で期限切れになるため、すぐに送信してください。完全な例はPythonでPopularCaptchaを解くガイドにあります。reCAPTCHA、Cloudflare Turnstile、Arkoseを含む他のcaptchaの種類は近日対応予定です。対応が始まるまでは、ソルバーがそれらを扱えると思い込まないでください。

アクセシビリティも正当な理由になる

captchaは、スクリーンリーダーを使う人、デバイスを切り替える人、認知や視覚に障がいのある人にとって障壁になります。アクセシビリティのツールを作っている場合、またはチャレンジを完了できない利用者の代理で行動している場合、まずサイトの運営者にアクセシブルな代替手段を尋ねるのが正しい第一歩です。多くのサイトには代替手段があります。captchaを自動化することは、その相談の代わりにはなりません。

正当ではないこと

captchaの解決には、理由がどうであれ越えてはいけない用途があります。次の目的ではソルバーや、いかなる回避手段も使わないでください。

これらの用途は実在の人々に害を与え、サイトの利用規約に違反し、深刻な法的リスクを招きます。Scarnoxはこれらをサポートしておらず、このガイドもこれらを扱いません。

責任あるスクレイピング

回避の目的が公開データの収集である場合は、次の点を心に留めてください。

まとめ

まず原因を直して、captchaを避けてください。テストにはテスト用のキーを使ってください。正当な作業でまだチャレンジに当たるなら、現在ライブのタスクの種類の範囲で、解決APIを使ってください。上に挙げた用途からは離れ、サイトが耐えられるペースでスクレイピングしてください。

次のステップ