Scarnox · Blog

プロキシあり・なしのキャプチャ解決: どちらのタスク種別が必要か

Scarnox は PopularCaptcha を2つの形式で提供しています。プロキシなしは、Scarnox 自身のネットワーク上でキャプチャを解決します。プロキシありは、ボットが使うプロキシを送ります。どちらも同じ形式のレスポンスでトークンを返し、解決に失敗した場合はどちらも課金されません。リクエストの違いはプロキシだけです。

ほとんどのサイトでは、プロキシなしが適切な出発点です。サイトがトークンを IP アドレスに結びつけている場合にのみ、自分のプロキシを送ってください。

2つのタスク種別

タスク種別送るもの
PopularCaptchaTaskProxylesssitekey とページの URL
PopularCaptchaTask(プロキシ版)sitekey、ページの URL、そしてあなたの proxy

どちらも PopularCaptcha のタスクです。リクエストの残りの部分、レスポンス、トークンの扱いは同じです。

まずはプロキシなしから

プロキシなしの解決は、Scarnox 自身のネットワーク上で動きます。連携は書けるものの中で最もシンプルで、ほとんどのサイトでは、後でどの IP がトークンを送信しても、トークンは機能します。どちらが必要か分からない場合は、ここから始めてください。

{
  "captcha_type": "PopularCaptchaTaskProxyless",
  "site_key": "10000000-ffff-ffff-ffff-000000000001",
  "site_url": "https://example.com/signup"
}

トークンが IP に結びついている場合はプロキシを送る

一部のサイトは、キャプチャを解決したIP と、フォームを送信するIP が同じであることを確認します。症状は明確です。トークンはエラーなしで返ってくるのに、サイトは毎回拒否します。解決策は、セッションの残りの部分でボットが使っているのと同じプロキシを通して解決することです。

{
  "captcha_type": "PopularCaptchaTask",
  "site_key": "10000000-ffff-ffff-ffff-000000000001",
  "site_url": "https://example.com/signup",
  "proxy": "http://user:pass@203.0.113.10:8080"
}

プロキシの形式は http://user:pass@host:port です。解決と送信には同じプロキシを使い、セッション全体を通して固定してください。解決と送信の間にプロキシをローテーションすると、IP の不一致が再び起きます。

どちらにするかの判断

次の質問を順番に確認してください。

  1. 別のマシンからトークンを送信しても機能するか。機能するなら、プロキシなしを使います。
  2. 送信元の IP が解決元の IP と異なるときだけ、サイトがトークンを拒否するか。そうなら、プロキシを送ります。
  3. サイトが、一つの IP に結びついたセッションクッキーやデバイスチェックを使っているか。そうなら、プロキシを送り、セッション全体で同じ IP を維持します。

コミットする前に、無料トライアルで両方をテストしてください。アカウントを作成して、クレジットカード不要の無料トライアルクレジットから始め、種別ごとに一度ずつ同じフローを実行します。

プロキシが機能しない場合

失敗した解決は無料です。プロキシが停止している、またはターゲットにブロックされている場合、解決は失敗し、その分の課金はありません。実行前に自分でプロキシをテストし、形式を確認し、ターゲットがそのアドレス範囲をブロックしていないことを確かめてください。ブラウザでは動くのに解決に失敗するプロキシは、たいてい形式の問題です。

プロキシの認証情報をログに残さない

パスワード付きのプロキシアドレスは秘密情報です。環境変数かシークレットマネージャーに保存してください。ログに出力したり、コミットしたり、バグレポートに貼り付けたりしないでください。デバッグのために解決リクエストをログに残す場合は、まず proxy フィールドを取り除いてください。

バリアント用のプロキシを選ぶ

解決は送ったどのプロキシでも動きますが、トークンが役立つのは同じ IP がフォームを送信する場合だけです。セッション全体を通して自分が管理する住宅用または固定のアドレスを使い、リクエストごとにローテーションするプールは使わないでください。トークンを IP に結びつけるサイトは、通常セッションも結びつけるため、ローテーションするプールは二重に失敗を招きます。

速度について

どちらの種別も、ポーリングのループなしで、1回のブロッキングリクエストからトークンを返します。タイムアウトも同じで、約185秒です。速度ではなく IP に関する問題で種別を選んでください。

実際のセッションとプロキシ

セッションの最初のリクエストから最後まで、同じプロキシを使います。典型的なフローは、サインアップページを読み込み、キャプチャを解決し、フォームを送信するものです。ページ読み込みが一つのアドレスを通り、解決が別のアドレスを通ると、IP を結びつけるサイトは、他のすべてが正しく見えても、トークンを拒否することがあります。

コード内ではプロキシ設定を一つだけ保持し、サイトに触れるすべてのステップに渡してください。ジョブの他の部分がスクレイピングのためにプロキシをローテーションする場合は、キャプチャのフローに専用の固定プロキシを与えてください。両者を混ぜることは、テストでは動いたトークンが本番で失敗する最も一般的な理由の一つです。

proxy フィールドは、プロキシを使うバリアントにだけ設定してください。プロキシなしのタスク種別にプロキシを送っても、解決は改善せず、ログを読んでどちらのモードで実行されたかを判断しにくくなります。

ログで正しい答えを読む

どちらのモードがサイトに必要か分からない場合は、同じページで両方を実行して比較してください。各トークンが受け入れられたかどうか、タスク種別、プロキシを送ったかどうかを記録します。プロキシなしのトークンが一貫して受け入れられるサイトには、プロキシ版は不要です。特定の実行でだけ拒否されるサイトは、IP チェックを示しています。推測ではなく、ログに判断させてください。

次のステップ

無料トライアルクレジットから始められ、クレジットカードは不要です。アカウントを作成して、1ページで両方のタスク種別を試してください。