HeliumとCapSolverを統合してスムーズなCAPTCHA解決を実現する方法

Sora Fujimoto
AI Solutions Architect
30-Dec-2025

1. はじめに
Webオートメーションには、強力で使いやすいツールが必要です。しかし、現代のウェブサイトでは、自動化スクリプトを停止するような高度なアンチボット対策やCAPTCHAが導入されています。
HeliumとCapSolverの組み合わせは、エレガントな解決策を提供します。
- Helium: Seleniumをより使いやすくする軽量なPythonライブラリで、シンプルで人間が読みやすいAPIを提供
- CapSolver: AIを駆使したCAPTCHA解決サービスで、Cloudflare Turnstile、reCAPTCHAなどに対応
これらのツールを組み合わせることで、CAPTCHAチャレンジを自動的に処理するスムーズなWebオートメーションが可能になります。
1.1. 統合の目的
このガイドでは、以下の3つのコアゴールを達成するお手伝いをします。
- ブラウザオートメーションの簡素化 - クリーンで読みやすいコードを書くためにHeliumの直感的なAPIを使用
- CAPTCHAの自動解決 - CapSolverのAPIを統合して、手動の介入なしにCAPTCHAチャレンジを処理
- 柔軟性の維持 - 必要に応じてSeleniumの完全な機能にアクセスしながら、コードをシンプルに保つ
2. Heliumとは何か?
Heliumは、Seleniumをより使いやすくするPythonライブラリです。シンプルで英語のような構文でブラウザオートメーションを記述できる高レベルなAPIを提供します。
2.1. 主な特徴
- シンプルな構文 - 複雑なXPathセレクタではなく
click("Submit")を書く - 自動待機 - 要素が表示されるのを自動的に待機
- 人間が読みやすい - コードが指示のように読める:
write("Hello", into="Search") - Selenium互換性 - 必要に応じて下位のSeleniumドライバにアクセス可能
- 軽量 - Seleniumの上に最小限のオーバーヘッド
2.2. インストール
bash
# Heliumをインストール
pip install helium
# CapSolver API用のrequestsライブラリをインストール
pip install requests
2.3. 基本的な使い方
python
from helium import *
# ブラウザを起動し、移動
start_chrome("https://wikipedia.org")
# 検索ボックスにタイプ
write("Python programming", into=S("input[name='search']"))
# 検索ボタンをクリック
click(Button("Search"))
# テキストが存在するか確認
if Text("Python").exists():
print("Pythonの記事が見つかりました!")
# ブラウザを終了
kill_browser()
3. CapSolverとは何か?
CapSolverは、幅広い種類のCAPTCHAに対応したAIを駆使した自動CAPTCHA解決サービスです。数秒でCAPTCHAチャレンジを送信し、解決結果を受け取るシンプルなAPIを提供します。
3.1. 対応するCAPTCHAの種類
- Cloudflare Turnstile - 最も一般的な現代のアンチボットチャレンジ
- reCAPTCHA v2 - イメージベースと非表示のバージョン
- reCAPTCHA v3 - スコアベースの検証
- AWS WAF - Amazon Web ServicesのCAPTCHA
- DataDome - 企業向けのボット保護
- その他にも多数...
3.2. CapSolverの使い始め
- capsolver.comで登録
- アカウントに資金を追加
- ダッシュボードからAPIキーを取得
ボーナス: 登録時にコード
HELIUMを使用するとボーナスクレジットがもらえます!
3.3. APIエンドポイント
- サーバーA:
https://api.capsolver.com - サーバーB:
https://api-stable.capsolver.com
4. 統合前の課題
HeliumとCapSolverを組み合わせる前に、Webオートメーションには以下の課題がありました:
| 課題 | 影響 |
|---|---|
| CAPTCHAチャレンジ | 手動で解決する必要があり、オートメーションを妨げる |
| 複雑なセレクタ | Seleniumでは冗長なXPath/CSSセレクタが必要 |
| タイミングの問題 | 要素がアクセス時に準備できていない |
| コードの可読性 | オートメーションスクリプトが保守しにくくなる |
Helium + CapSolverの統合により、クリーンで読みやすいコードでこれらの課題を解決します。
5. 統合方法
5.1. API統合(推奨)
API統合アプローチでは、CAPTCHA解決プロセスの完全な制御が可能で、あらゆる種類のCAPTCHAに対応します。
5.1.1. セットアップ要件
bash
pip install helium requests
5.1.2. コア統合パターン
python
import time
import requests
from helium import *
CAPSOLVER_API_KEY = "YOUR_API_KEY"
CAPSOLVER_API = "https://api.capsolver.com"
def create_task(task_payload: dict) -> str:
"""CAPTCHA解決タスクを作成し、タスクIDを返します。"""
response = requests.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": task_payload
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"CapSolverエラー: {result.get('errorDescription')}")
return result["taskId"]
def get_task_result(task_id: str, max_attempts: int = 120) -> dict:
"""タスク結果をポーリングして解決またはタイムアウトまで待機します。"""
for _ in range(max_attempts):
response = requests.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
)
result = response.json()
if result.get("status") == "ready":
return result["solution"]
elif result.get("status") == "failed":
raise Exception(f"タスク失敗: {result.get('errorDescription')}")
time.sleep(1)
raise TimeoutError("CAPTCHA解決がタイムアウトしました")
def solve_captcha(task_payload: dict) -> dict:
"""CAPTCHA解決ワークフローを完了します。"""
task_id = create_task(task_payload)
return get_task_result(task_id)
5.2. ブラウザ拡張機能
Heliumと組み合わせて、CapSolverのブラウザ拡張機能を使用することもできます。自動的なCAPTCHA検出と解決が可能です。
5.2.1. インストール手順
- capsolver.com/en/extensionからCapSolver拡張をダウンロード
- 拡張機能のファイルを抽出
- 拡張機能の
config.jsファイルにAPIキーを設定します:
javascript
// 拡張機能フォルダ内で編集: assets/config.js
var defined = {
apiKey: "YOUR_CAPSOLVER_API_KEY", // 実際のAPIキーに置き換えてください
enabledForBlacklistControl: false,
blackUrlList: [],
enabledForRecaptcha: true,
enabledForRecaptchaV3: true,
enabledForTurnstile: true,
// ...その他の設定
}
- ChromeにHeliumでロードします:
python
from helium import *
from selenium.webdriver import ChromeOptions
options = ChromeOptions()
options.add_argument('--load-extension=/path/to/capsolver-extension')
start_chrome(options=options)
# 拡張機能が自動的にCAPTCHAを検出および解決します
注意: 拡張機能は、自動的にCAPTCHAを解決する前に有効なAPIキーを設定する必要があります。
6. コード例
6.1. reCAPTCHA v2の解決
この例では、GoogleのデモページでreCAPTCHA v2を自動的にサイトキー検出で解決します:
python
import time
import requests
from helium import *
from selenium.webdriver import ChromeOptions
CAPSOLVER_API_KEY = "YOUR_API_KEY"
CAPSOLVER_API = "https://api.capsolver.com"
def solve_recaptcha_v2(site_key: str, page_url: str) -> str:
"""reCAPTCHA v2を解決し、トークンを返します。"""
# タスクを作成
response = requests.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "ReCaptchaV2TaskProxyLess",
"websiteURL": page_url,
"websiteKey": site_key,
}
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"エラー: {result.get('errorDescription')}")
task_id = result["taskId"]
print(f"タスクを作成しました: {task_id}")
# 結果をポーリング
while True:
result = requests.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
).json()
if result.get("status") == "ready":
return result["solution"]["gRecaptchaResponse"]
elif result.get("status") == "failed":
raise Exception(f"失敗: {result.get('errorDescription')}")
print(" 解決を待機中...")
time.sleep(1)
def main():
target_url = "https://www.google.com/recaptcha/api2/demo"
# 逆検出を備えたブラウザを設定
options = ChromeOptions()
options.add_experimental_option('excludeSwitches', ['enable-automation'])
options.add_experimental_option('useAutomationExtension', False)
options.add_argument('--disable-blink-features=AutomationControlled')
print("ブラウザを起動中...")
start_chrome(target_url, options=options)
driver = get_driver()
try:
time.sleep(2)
# ページからサイトキーを自動検出
recaptcha_element = driver.find_element("css selector", ".g-recaptcha")
site_key = recaptcha_element.get_attribute("data-sitekey")
print(f"検出されたサイトキー: {site_key}")
# CAPTCHAを解決
print("\nCapSolverでreCAPTCHA v2を解決中...")
token = solve_recaptcha_v2(site_key, target_url)
print(f"トークンを取得: {token[:50]}...")
# トークンをインジェクト
print("\nトークンをインジェクト中...")
driver.execute_script(f'''
var responseField = document.getElementById('g-recaptcha-response');
responseField.style.display = 'block';
responseField.value = '{token}';
''')
print("トークンをインジェクトしました!")
# Heliumのシンプルな構文でフォームを送信
print("\nフォームを送信中...")
click("Submit")
time.sleep(3)
# 成功を確認
if "Verification Success" in driver.page_source:
print("\n=== 成功! ===")
print("reCAPTCHAが解決され、フォームが送信されました!")
finally:
kill_browser()
if __name__ == "__main__":
main()
自分でテストしてください:
bash
python demo_recaptcha_v2.py
6.2. Cloudflare Turnstileの解決
Cloudflare Turnstileは、最も一般的なCAPTCHAチャレンジの一つです。以下はその解決方法です:
python
import time
import requests
from helium import *
from selenium.webdriver import ChromeOptions
CAPSOLVER_API_KEY = "YOUR_API_KEY"
CAPSOLVER_API = "https://api.capsolver.com"
def solve_turnstile(site_key: str, page_url: str) -> str:
"""Cloudflare Turnstileを解決し、トークンを返します。"""
response = requests.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "AntiTurnstileTaskProxyLess",
"websiteURL": page_url,
"websiteKey": site_key,
}
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"エラー: {result.get('errorDescription')}")
task_id = result["taskId"]
while True:
result = requests.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
).json()
if result.get("status") == "ready":
return result["solution"]["token"]
elif result.get("status") == "failed":
raise Exception(f"失敗: {result.get('errorDescription')}")
time.sleep(1)
def main():
target_url = "https://your-target-site.com"
turnstile_site_key = "0x4XXXXXXXXXXXXXXXXX" # ページソース内で確認
# ブラウザを設定
options = ChromeOptions()
options.add_argument('--disable-blink-features=AutomationControlled')
start_chrome(target_url, options=options)
driver = get_driver()
try:
# Turnstileが読み込まれるのを待機
time.sleep(3)
# CAPTCHAを解決
print("Turnstileを解決中...")
token = solve_turnstile(turnstile_site_key, target_url)
print(f"トークンを取得: {token[:50]}...")
# トークンをインジェクト
driver.execute_script(f'''
document.querySelector('input[name="cf-turnstile-response"]').value = "{token}";
// コールバックが存在する場合をトリガー
const callback = document.querySelector('[data-callback]');
if (callback) {{
const callbackName = callback.getAttribute('data-callback');
if (window[callbackName]) {{
window[callbackName]('{token}');
}}
}}
''')
# Heliumでフォームを送信
if Button("Submit").exists():
click("Submit")
print("Turnstileをバイパスしました!")
finally:
kill_browser()
if __name__ == "__main__":
main()
6.3. reCAPTCHA v3の解決
reCAPTCHA v3はスコアベースで、ユーザーの操作は必要ありません:
python
import time
import requests
from helium import *
from selenium.webdriver import ChromeOptions
CAPSOLVER_API_KEY = "YOUR_API_KEY"
CAPSOLVER_API = "https://api.capsolver.com"
def solve_recaptcha_v3(
site_key: str,
page_url: str,
action: str = "verify",
min_score: float = 0.7
) -> str:
"""指定されたアクションと最小スコアでreCAPTCHA v3を解決します。"""
response = requests.post(
f"{CAPSOLVER_API}/createTask",
json={
"clientKey": CAPSOLVER_API_KEY,
"task": {
"type": "ReCaptchaV3TaskProxyLess",
"websiteURL": page_url,
"websiteKey": site_key,
"pageAction": action,
"minScore": min_score
}
}
)
result = response.json()
if result.get("errorId") != 0:
raise Exception(f"エラー: {result.get('errorDescription')}")
task_id = result["taskId"]
while True:
result = requests.post(
f"{CAPSOLVER_API}/getTaskResult",
json={
"clientKey": CAPSOLVER_API_KEY,
"taskId": task_id
}
).json()
if result.get("status") == "ready":
return result["solution"]["gRecaptchaResponse"]
elif result.get("status") == "failed":
raise Exception(f"失敗: {result.get('errorDescription')}")
time.sleep(1)
def main():
target_url = "https://your-target-site.com"
recaptcha_v3_key = "6LcXXXXXXXXXXXXXXXXXXXXXXXXX"
# v3用のヘッドレスブラウザを設定
options = ChromeOptions()
options.add_argument('--headless')
start_chrome(target_url, options=options)
driver = get_driver()
try:
# "login"アクションでreCAPTCHA v3を解決
print("reCAPTCHA v3を解決中...")
token = solve_recaptcha_v3(
recaptcha_v3_key,
target_url,
action="login",
min_score=0.9
)
# トークンをインジェクト
driver.execute_script(f'''
var responseField = document.querySelector('[name="g-recaptcha-response"]');
if (responseField) {{
コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。
もっと見る

AIスクラピングとは何ですか? 定義、利点、利用ケース。
AIスクリーピングとは何かを学び、その仕組みについて、そして従来のウェブスクレイピングに取って代わっている理由を知る。利点、使用例、およびボット対策を回避する方法について学ぶ。

Sora Fujimoto
31-Dec-2025

HeliumとCapSolverを統合してスムーズなCAPTCHA解決を実現する方法
HeliumとCapSolverを用いて、PythonとSeleniumを使用してブラウザを自動化し、Cloudflare Turnstile、reCAPTCHA v2/v3を解決する。

Sora Fujimoto
30-Dec-2025

DrissionPageをCapSolverと統合する方法:シームレスなCAPTCHA解決のため
DrissionPage + CapSolverのチュートリアル:WebDriver検出なしでCloudflare TurnstileおよびreCAPTCHAを解決する方法

Sora Fujimoto
30-Dec-2025

医療ライセンス検証ワークフローにおけるCAPTCHAの解決方法
コンプライアンスを妨げるCAPTCHAを停止してください。医療分野でライセンス確認ワークフローを自動化する方法を学び、reCAPTCHAとAWS WAF向けのAIを コンプライアンスを妨げるCAPTCHAを停止してください。医療分野でライセンス確認ワークフローを自動化する方法を学び、reCAPTCHAおよびAWS WAF向けにAIを活 コンプライアンスを妨げるCAPTCHAを停止してください。医療分野でライセンス確認ワークフローを自動化する方法を学び、reCAPTCHAおよびAWS WAF向けにAIを駆動したCAPTCHAの解決を実現してください。

Sora Fujimoto
25-Dec-2025

トップ5 ウェブスクラピング - データスクラピングサービス
ウェブスクリーピングサービスは、ウェブサイトからデータを抽出し、使用可能な形式に整理するためのソリューションです。データ抽出の面倒で複雑な作業を自動化することで、時間とお金を節約できます。一度きりのデータ配信が必要か、継続的なデータフードが必要かに関わらず、ウェブスクリーピングサービスは技術的な側面を処理し、必要なデータを提供します。

Sora Fujimoto
25-Dec-2025

マスターMCP: AIのスマートを2026年に高める
モデルコンテキストプロトコル(MCP)は、AI統合の未来です。2026年におけるAIツール間の通信の標準化、企業の自動化の推進、AIの知能の向上について学びましょう。

Anh Tuan
24-Dec-2025

