Anti-Bot保護の処理

現代のウェブサイトは高度なボット検知を使用しています。本ガイドでは、FourAがアンチボットシステムをどのように処理し、成功率を最大化するかを説明します。

ボット検知の仕組み

ウェブサイトは複数の保護レイヤーを使用しています:

  • IPレピュテーション: データセンターや既知のproxyアドレスはブロックされます
  • ワイヤーフィンガープリンティング: 各HTTPクライアントには、サイトが検知可能な固有のハンドシェイクシグネチャがあります
  • ブラウザフィンガープリンティング: JavaScriptにより、headlessブラウザの指標がチェックされます
  • 行動分析: リクエストのパターン、タイミング、ナビゲーションフローが分析されます
  • CAPTCHA: 最後の防衛線としての視覚的なチャレンジです

一般的なアンチボットプロバイダーには、Cloudflare、DataDome、PerimeterX、Akamai Bot Managerが含まれます。

最速のパス: Auto

保護レベルが不明な場合は、実際のページのみが持つvalidate.data.acceptのサブストリングを使用して/api/auto/を呼び出します。Autoはコストを考慮したラダー(安価なプローブ、ローテーションされたproxy、ブラウザレンダリング、proxy経由のブラウザ)を進み、ルールが許容するレスポンスを返す最初の段階で停止します。同じホストへの繰り返しの呼び出しでは、ウォームセッションが再生されるため、2回目のアクセスは安価になります。

curl -X POST https://eu.api.foura.ai/api/auto/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "url": "https://protected-site.com/product/42",
    "validate": {"data": {"accept": ["Add to cart"]}}
  }'

validate.data.acceptがないと、autoは実際の200とステータス200で返されるチャレンジインタースティシャルを区別できず、チャレンジを成功として返す可能性があります。完全な手順については、Smart Fetchガイドを参照してください。

各レイヤーにおけるFourAの役割

リアルなワイヤーレベルのrequest

単一のendpoint(POST /api/single/)は、実際のブラウザに一致するハンドシェイク特性を発行します。これにより、完全なブラウザを実行するオーバーヘッドなしに、最も一般的なワイヤーレベルのチェックを通過できます。

unblockerを有効にすると、リアルなブラウザのheader(User-Agent、Sec-Ch-Ua、Sec-Fetch-*、Accept-Encoding)も注入されます。unblockerはデフォルトでオンになっています。プレーンなクライアントシグネチャを送信する場合にのみ、falseを設定してください。

{
  "method": "GET",
  "url": "https://protected-site.com/data",
  "unblocker": true
}

実際のブラウザレンダリング

ブラウザのendpoint(POST /api/browser/)は、完全なChromeブラウザインスタンスを実行します。検知回避パッチと組み合わせることで、ほとんどのJavaScriptベースのフィンガープリントチェックを通過します。ブラウザでunblockerを使用すると、自動防御ソルバー(Turnstileのクリアなど)がトリガーされます。生のチャレンジページが必要な場合を除き、オンのままにしてください。

proxyのローテーション

proxyのendpoint(POST /api/proxy/)は、住宅用およびデータセンターのproxyを自動的にローテーションします。1つのIPがブロックされた場合、次の試行では別のIPを使用します。後続の呼び出しでignoreProxiesを使用すると、すでにブロックされた出口をスキップできます。maxTries(デフォルト5、最大90)を使用して、試行回数を制御します。

国指定の出口

/api/proxy/exitCountriesを渡すことで、ターゲットから見える国が厳密な許可リストと一致するproxyのみに選択を制限します。値は2文字のコード(["CZ", "GB"])であり、トリム、大文字化、および重複排除されます。FourAが要求されていない国にフォールバックすることはありません。現在のプールに一致するものがない場合、responseはcode: "no_eligible_proxy"を返し、details.exitCountriesに正規化されたスコープを含めます。これにより、要件を緩めることなく後で再試行できます。

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 5,
    "exitCountries": ["CZ", "GB"],
    "request": {"method": "GET", "url": "https://target.example/pricing"}
  }'

スコーピングがリクエストされた場合、responseにはexitCountryが含まれます。ペイロードを信頼する前にそれがallowlistに属していることを確認し、その後のBrowser呼び出しで返されたproxy IDを再利用して、JavaScriptのレンダリングが同じ出口を経由するようにしてください。

FourAはブロックの原因を通知します

どのシステムがrequestをブロックしたかを推測する必要はありません。ターゲットがボットチェックを実行すると、responseにその名前が記載されます。

  • POST /api/single/およびPOST /api/proxy/defenseオブジェクトを返します。defense.vendorはシステムであり、defense.solvedはチェックがクリアされたかどうかを示し、defense.presentはそのresponseで認識されたすべてのものをリストします。
  • POST /api/browser/defenseSolvedに加えてdefenses.presentおよびdefenses.clearedを返します。
{
  "status": 200,
  "data": "<!doctype html>...",
  "defense": {
    "vendor": "sgcaptcha",
    "solved": true,
    "present": ["sgcaptcha"],
    "cookie": "_I_=<clearance>"
  }
}

ここから2つのルールが導き出されます。

  1. solved: falseは、bodyがページではなくチャレンジである可能性があることを意味します。 FourAが未解決のチャレンジをコンテンツとして装うことはないため、パースする前にフラグを確認してください。
  2. 解決によりクリアランスが付与されます。 defense.cookieが存在する場合、同じ出口で同じUser-Agentを使用してCookie headerとして送り返すと、後続のrequestはチェックを完全にスキップします。

FourAはCloudflare、SiteGround、DataDome、PerimeterX、Akamai、Incapsula、AWS WAF、hCaptcha、reCAPTCHA、およびeBay独自のチャレンジを認識します。認識はクリアよりも広範です。名前を特定できてもクリアできないシステムは報告され、requestのコストが変わることはありません。各フィールド、現在のクリアと検出の分類、およびリプレイの例については、Anti-Bot Defensesを参照してください。

保護レベル別の戦略

不明な保護

autoを使用してください。まずは低コストで調査し、ターゲットに強制された場合にのみエスカレーションするため、ディスカバリのコストはホストごとに1回のみ発生します。

低レベルの保護(ほとんどのサイト)

unblockerと共に単一のendpointを使用してください。ワイヤーレベルの照合で十分です。

curl -X POST https://eu.api.foura.ai/api/single/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"method": "GET", "url": "https://news-site.com/article", "unblocker": true}'

中程度の保護 (Cloudflare、基本WAF)

JavaScriptチャレンジを通過するには、ブラウザのendpointを使用します:

curl -X POST https://eu.api.foura.ai/api/browser/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{"url": "https://protected-site.com/data", "timeout_ms": 15000}'

高度な保護 (DataDome, PerimeterX)

複数回のリトライを設定してproxy endpointを使用してください:

curl -X POST https://eu.api.foura.ai/api/proxy/ \
  -H "X-API-Key: YOUR_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "maxTries": 10,
    "request": {
      "method": "GET",
      "url": "https://heavily-protected.com/prices",
      "unblocker": true
    }
  }'

チャレンジクリア後のレンダリングされたページが必要な、連鎖的なWAFチャレンジ(Cloudflare "Just a moment"、Vercel Security Checkpoint、Akamai Bot Manager)については、MCP Recipesを参照してください。「Protected page: proxy first, browser when JavaScript is needed」のレシピで、proxyからbrowserへの正確なハンドオフを確認できます。

ベストプラクティス

  1. 未知のターゲットにはautoから始める。 validateルールを渡し、ラダーに最も安価な階層を選択させ、レスポンスのmeta.rungを読んでどのエンジンが機能したかを確認します。判明した後は、繰り返しトラフィックに対して直接そのエンジンを呼び出します。

  2. 成功したセッションを再利用する。 auto呼び出し後、返されたsession(proxy ID + cookies + userAgent)は、同じホスト上の後続ページに対して、Singleの価格で/api/single/または/api/browser/経由でリプレイできます。

  3. レート制限を遵守する。 proxyローテーションを使用しても、単一サイトに毎秒数百のrequestを送信すると、振る舞い検知がトリガーされます。requestの間隔は少なくとも1〜2秒空けてください。

  4. unblockerをオンにしておく。 Single、Proxy、およびBrowserのrequestでは、unblocker: true(デフォルト)が自動的にリアルなブラウザのheaderを注入します。プレーンなクライアント署名や生のチャレンジページが特に必要な場合のみ、これをオフにしてください。

  5. 成功率を監視する。 Dashboardのメトリクスを確認し、成功率の推移をトラッキングしてください。急激な低下は、通常、ターゲットサイトが保護を更新したことを意味します。

  6. 機能しない出口をスキップする。 /api/proxy/または/api/auto/の呼び出しで返されたproxy IDが失敗し始めた場合は、次の呼び出しでそれをignoreProxiesに渡して、FourAが異なる出口を選択するようにします。

  7. リトライする前にdefenseを読む。 ベンダー名によって、別のブラウザプロファイルを試す価値があるか、フルレンダリングが必要か、あるいは解決サービスなしではクリアできないチェックであるかがわかります。

  8. 提示するブラウザを変更する。 一部のターゲットは特定のブラウザを受け入れ、他のブラウザを拒否します。SingleおよびProxyでbrowseros、またはversionを設定し、現在のカタログについてはGET /api/profilesを読んでください。詳細はendpoint referenceにあります。

FourAがバイパスできないもの

一部のシナリオでは、APIの外部での追加処理が必要です。

  • ログイン保護されたコンテンツ: FourAは長期的なログインを管理しません。ブラウザのエンドポイントはリクエストごとにcookiesを受け付けます。セッションcookieは自分で渡してください。
  • インタラクティブなCAPTCHA: reCAPTCHAとhCaptchaは解決サービスを必要とします。FourAは両方を認識しdefense.presentで報告しますが、クリアはしません。Turnstileはブラウザで処理されます。
  • 地域制限のあるコンテンツ: 許可された国に選択を固定するには、/api/proxy/exitCountriesを使用してください。ISPやASNで追加の制限を行うサイト(一部の国で認可されたブックメーカーや特定の政府サービス)は、一般的な住宅用出口をブロックする場合があります。現在のプールに一致する出口がない場合、リクエストはno_eligible_proxyを返します。
  • 法的制限のあるサイト: データ収集が対象サイトの利用規約および適用される法律に準拠していることを常に確認してください。

次のステップ

最終更新日: 2026年8月12日