Scarnox · Blog

任意のページでcaptchaのサイトキーを見つける方法(4つ)

captchaの解決はすべて、サイトキーから始まります。サイトキーは、サイトがcaptchaプロバイダーに登録した公開のIDです。ブラウザはそれを見ているので、あなたも読み取れます。PopularCaptchaの場合、サイトキーはa5f74b19-9e45-40e0-b45d-47ff91b7a6c2のようなUUIDです。他のプロバイダーは別の形式を使います。たとえばGoogle reCAPTCHAのキーは6Lで始まります。以下が、簡単なものから確実なものへの順で、サイトキーを見つける4つの場所です。

Scarnoxは現在PopularCaptchaを解決しています。サイトキーの探し方はどのcaptchaでも同じなので、別の種類を計画するときにもこの方法が使えます。reCAPTCHAやCloudflare Turnstileなどの他の種類は近日対応予定です。

1. data-sitekey属性

DevToolsを開き(F12)、Elementsに移動して、Ctrl+Fを押し、data-sitekeyを検索します。ほとんどのウィジェットは、次のような属性にキーを入れています。

<div class="h-captcha" data-sitekey="a5f74b19-9e45-40e0-b45d-47ff91b7a6c2"></div>

ここで見つかれば終わりです。値をコピーして、解決に進んでください。

2. ネットワークタブ

ウィジェットがJavaScriptで描画されている場合、その属性はHTMLに一度も現れないことがあります。Networkを開いてページを再読み込みし、ウィジェットの設定リクエストで絞り込みます。PopularCaptchaの場合、そのリクエストは通常checksiteconfigという名前です。サイトキーはそのクエリパラメーターの1つです。

.../checksiteconfig?v=...&host=example.com&sitekey=a5f74b19-...

テストしているサイトで名前が違う場合は、リクエストのURLに含まれるsitekeyという語で絞り込んでも見つけられます。

3. iframeのURL

チャレンジ自体は、captchaプロバイダーから配信されるiframeです。そのsrcにはサイトキーがパラメーターとして含まれています。ウィジェットを右クリックして検証を選び、iframeのアドレスから値を読み取ってください。ページがメインのドキュメントから属性を隠している場合に、最も確実な方法です。

4. インビジブルウィジェット

インビジブルウィジェットにはチェックボックスがありません。サイトは自分のコードからウィジェットのrender()またはexecute()関数を呼び出し、サイトキーを引数として渡します。ページのJavaScriptからそれを探してください。Sourcesパネルを開き、Ctrl+Shift+Fを押して、sitekeyを検索します。インビジブルのサイトキーは、解決する際にインビジブルのフラグが必要です。インビジブルcaptchaの解決を参照してください。

スクリプトからサイトキーを読む

属性が生のHTMLに含まれている場合、スクリプトはブラウザを使わずに読み取れます。

import re
import requests

html = requests.get("https://example.com/signup", timeout=30).text
m = re.search(r'data-sitekey="([^"]+)"', html)
print(m.group(1) if m else "no data-sitekey in the raw HTML")

これが何も出力しない場合、ウィジェットはJavaScriptで描画されています。上のネットワークタブの方法と同じく、実際のブラウザを使ってください。自動化してよいページだけを取得し、リクエストの頻度は低く保ってください。

どのURLと組み合わせるか

ウィジェットがあるページのURLをsite_urlとして送ります。重要なのはホストなので、会員登録のウィジェットにはhttps://example.com/signupを使います。PopularCaptchaの完全なリクエストは次のようになります。

{
  "captcha_type": "PopularCaptchaTaskProxyless",
  "site_key": "a5f74b19-9e45-40e0-b45d-47ff91b7a6c2",
  "site_url": "https://example.com/signup"
}

これをhttps://api.scarnox.com/api/tasks/createに、Authorization: Bearerヘッダーでキーを付けて送ります。呼び出しはトークンの準備ができるまでブロックするので、結果を確認するための2回目のリクエストはありません。

よくある問題

正しいサイトキーかを確認する

1つのページに複数のサイトキーが含まれることがあります。分析用のウィジェット、コメントフォーム、ニュースレターのボックスが、それぞれ独自のキーを追加することもあります。解決する前に、そのサイトキーが自動化しようとしているフォームのものであることを確認してください。役立つ確認は3つです。

サイトを再デプロイすると、キーが変わることがあります。昨日は動いていたキーが、受け付けられるトークンを生成しなくなったら、ほかの原因を探す前に、ページを読み直してください。読み直しには費用がかからず、突然の失敗の最も多い原因を取り除けます。

クリックの後にだけウィジェットが読み込まれるページでは、もう一手間が必要です。ページを開き、ウィジェットを表示させるクリックを行い、その後でサイトキーを読み取ってください。クリックの前に読むと何も返ってきません。それは、ウィジェットが存在しないように見えますが、実際はタイミングの問題です。固定時間だけ待つのではなく、[data-sitekey]に一致する要素が現れるまで待ってください。

次のステップ

無料のトライアルクレジットで始める(カード登録は不要)、最初のサイトキーをテストしてみてください。