CapSolver APIを聞ったブラウザでのCAPTCHA盾Q圭隈

Sora Fujimoto
AI Solutions Architect
04-Sep-2025

Browser-useは、AIエ`ジェントがWebブラウザを崙Rして、デ`タスクレイピング、フォ`ム秘薦、郡畐弔淵ンラインアクティビティなどのタスクを徭啝できるようにする、薦なオ`プンソ`スのPythonライブラリです。Playwrightによるブラウザ徭啝と、OpenAIのGPTモデルなどの寄トQ壞ZモデルLLMとのy栽により、Browser-useは徭隼冱Zコマンドのk佩を辛嬬にし、レなコ`ディングスキルを隔たないユ`ザ`でもアクセスしやすくなっています。ただし、Web徭啝における匯違議なn}として、CAPTCHAがあります。CAPTCHAは徭啝されたスクリプトをブロックするようにOされており、Browser-useのワ`クフロ`を嶄爐垢訖苗榻圓あります。
CapSolverは、reCAPTCHAやCloudflare Turnstileなど、さまざまなタイプのCAPTCHAを盾Qすることに蒙晒したAI喜dサ`ビスです。CapSolverをBrowser-useとy栽することで、CAPTCHAを盾Qするために返咾能虍襪垢覬慴なく、徭啝タスクを匯にMめることができます。
この並では、CapSolverをBrowser-useとy栽してCAPTCHAを森議にI尖する圭隈をステップバイステップでh苧します。駅勣なO協、頼畠なコ`ド箭、_兵に叨羨つベストプラクティスについてh苧します。
Browser-useの古勣とユ`スケ`ス
Browser-useは、AIエ`ジェントが徭隼冱Zによる峺幣でWebサイトとできるようにすることで、Web徭啝を殆晒するPythonライブラリです。伐慎弔砲Playwrightを聞喘してChromium、Firefox、WebKitなどのブラウザを崙Rし、LLMとy栽してユ`ザ`コマンドを盾およびg佩します。これにより、Browser-useは、レなコ`ド峰なしに}jなタスクを徭啝するために恷mです。
ユ`スケ`ス
Browser-useは、參和を根むさまざまな徭啝タスクをサポ`トしています。
- デ`タスクレイピング: 偏{法鯉O、コンテンツ鹿sのためにWebサイトからデ`タ渇竃します。
- フォ`ム秘薦: 魥やアカウント鞠hなど、さまざまなソ`スからのデ`タを聞喘してオンラインフォ`ムの秘薦を徭啝します。
- タスク徭啝: アカウントへのログイン、Webサイトのナビゲ`ション、ボタンのクリックなどの郡畐弔淵織好をg佩します。
これらのタスクには、徭咼▲セスを契ぐためにCAPTCHAを婢_するWebサイトとのやり函りが根まれることが謹く、嶄爐里覆ぷ啝には佚mできるCAPTCHA盾Qソリュ`ションが音辛之です。
CAPTCHA盾Qが駅勣な尖喇
Webサイトは、徭咼▲セス、スパム、吭のあるアクティビティをブロックするために、CAPTCHAなどのボット貨を婢_することがよくあります。チェックボックスをクリックしたり、颯僖坤襪鮟發い燭蠅垢襪覆匹燐n}で繁gとボットを^eするようにOされたこれらのCAPTCHAは、Webスクレイピングにとって寄きな嬾墾となります。Browser-useでタスクを徭啝する栽、CAPTCHAに壟囑するとプロセスが頼畠に唯峭し、返咾能虍襪擦困膨慎弔離禰`タをスクレイピングすることができなくなります。
匯違議なCAPTCHAのNには參和が根まれます。
CAPTCHAのN | h苧 |
---|---|
reCAPTCHA v2 | ユ`ザ`は、プロンプトに児づいてボックスをチェックしたり、颪鰡xkしたりする駅勣があります。 |
reCAPTCHA v3 | ユ`ザ`の佩咾鰓uするスコアリングシステムを聞喘し、謹くの栽、ユ`ザ`には燕幣されません。 |
Cloudflare Turnstile | ユ`ザ`の荷恬を恷弌泙牧屬┐織廛薀ぅ丱粂`嶷のCAPTCHA旗紋返粁です。 |
Webスクレイピングの栽、これは嶷勣な}です。CAPTCHAは、Browser-useがWebサイトからデ`タを渇竃するために卆贋する徭啝を怦峭するために蒙eにOされています。これらの嬾謁を指閲する圭隈がないと、スクレイピングの適薦は唯嵳し、徭啝がo燭砲覆蠅泙后P劼い覆海箸法CapSolverのAPIをBrowser-useとy栽することで、薦なソリュ`ションが戻工されます。CapSolverはこれらのCAPTCHAを徭啜弔暴Qするため、Browser-useはボット貨を指閲し、嶄僅することなくデ`タを屎械にスクレイピングできます。reCAPTCHA v2やCloudflare TurnstileのI尖など、CapSolverは嫌レいCAPTCHAのn}にIできるため、隠oされたWebサイトからのシ`ムレスで紳糞弔淵禰`タ渇竃に音辛之なツ`ルになります。
このy栽は、CAPTCHAを聞喘するサイトからデ`タをスクレイピングしようとしているユ`ザ`にとって豚議なものであり、返喩訌Δ留慴來を電茅し、Webスクレイピングプロセスを匯にg佩しAけます。
CapSolverを聞喘してCAPTCHAをI尖する圭隈
CapSolverは、互業なAIアルゴリズムを聞喘してさまざまなCAPTCHAを盾QできるAPIを戻工しています。CapSolverをBrowser-useとy栽するには、@controller.action
デコレ`タを聞喘してカスタムアクションを協xできます。このアクションは、Webペ`ジ貧のCAPTCHAを奮し、駅勣な秤鵤╂reCAPTCHAのサイトキ`を渇竃し、CapSolverのAPIを柵び竃してソリュ`ションを函誼し、ソリュ`ションをペ`ジに携襪靴泙后
CapSolverをBrowser-useとy栽する返
- CapSolverにサインアップする: CapSolverでアカウントを恬撹し、Y署を弖紗してAPIキ`を函誼します。
- Browser-useをO協する: Browser-useとその卆贋vSをインスト`ルし、LLMプロバイダ`╂OpenAIのAPIキ`を聞喘してh廠を撹します。
- 卆贋vSをインスト`ルする: Pythonを聞喘して、駅勣なパッケ`ジ
browser-use
、playwright
、requests
をインスト`ルします。 - カスタムアクションを協xする: CapSolverのAPIを聞喘してCAPTCHAをI尖するカスタムアクションをBrowser-useスクリプトに恬撹します。
- エ`ジェントをg佩する: タスクのg佩嶄にCAPTCHAがk伏した栽に、AIエ`ジェントがカスタムアクションを柵び竃すように峺幣します。
麼勣なコ`ドスニペット
參和は、CapSolverのAPIを聞喘してreCAPTCHA v2を盾Qするカスタムアクションの箭です。
python
import requests
import time
from browser_use import Controller, ActionResult
from playwright.async_api import Page
CAPSOLVER_API_KEY = 'YOUR_CAPSOLVER_API_KEY'
@controller.action('Solve CAPTCHA', domains=['*'])
async def solve_captcha(page: Page) -> ActionResult:
if await page.query_selector('.g-recaptcha'):
site_key = await page.evaluate("document.querySelector('.g-recaptcha').getAttribute('data-sitekey')")
page_url = page.url
# CapSolverでタスクを恬撹する
response = requests.post('https://api.capsolver.com/createTask', json={
'clientKey': CAPSOLVER_API_KEY,
'task': {
'type': 'ReCaptchaV2TaskProxyLess',
'websiteURL': page_url,
'websiteKey': site_key,
}
})
task_id = response.json().get('taskId')
if not task_id:
return ActionResult(success=False, message='Failed to create CapSolver task')
# 盾Q貨をポ`リングする
while True:
time.sleep(5)
result_response = requests.post('https://api.capsolver.com/getTaskResult', json={
'clientKey': CAPSOLVER_API_KEY,
'taskId': task_id
})
result = result_response.json()
if result.get('status') == 'ready':
solution = result.get('solution', {}).get('gRecaptchaResponse')
if solution:
await page.evaluate(f"document.getElementById('g-recaptcha-response').innerHTML = '{solution}';")
return ActionResult(success=True, message='CAPTCHA solved')
else:
return ActionResult(success=False, message='No solution found')
elif result.get('status') == 'failed':
return ActionResult(success=False, message='CapSolver failed to solve CAPTCHA')
return ActionResult(success=False, message='No CAPTCHA found')
このスニペットは、reCAPTCHA v2勣殆をチェックし、サイトキ`を渇竃し、CapSolverでタスクを恬撹し、ソリュ`ションをポ`リングし、ト`クンをペ`ジに携襪垢襯スタムアクションを協xしています。
頼畠なコ`ド箭ステップバイステップのh苧
參和は、CapSolverをBrowser-useとy栽してCAPTCHAを盾Qする圭隈を幣す頼畠なコ`ド箭です。
並念l周
駅勣なパッケ`ジがインスト`ルされていることを_Jしてください。
bash
pip install browser-use playwright requests
playwright install
駅勣なAPIキ`を聞喘してh廠をO協します。OpenAIとCapSolverのAPIキ`を根む.env
ファイルを恬撹します。
env
OPENAI_API_KEY=your_openai_api_key
CAPSOLVER_API_KEY=your_capsolver_api_key
頼畠なコ`ド箭
參和の犯櫃鮑むPythonスクリプトを恬撹します。
python
import os
import asyncio
import requests
from dotenv import load_dotenv
from browser_use import Agent, Controller, ActionResult
from browser_use.browser import BrowserSession
from browser_use.llm import ChatOpenAI
from playwright.async_api import Page
# .envファイルからh廠篳をロ`ドする
load_dotenv()
CAPSOLVER_API_KEY = os.getenv('CAPSOLVER_API_KEY')
controller = Controller()
@controller.action('Solve CAPTCHA', domains=['*'])
async def solve_captcha(page) -> ActionResult:
if await page.query_selector('.g-recaptcha'):
site_key = await page.evaluate("document.querySelector('.g-recaptcha').getAttribute('data-sitekey')")
page_url = page.url
response = requests.post('https://api.capsolver.com/createTask', json={
'clientKey': CAPSOLVER_API_KEY,
'task': {
'type': 'ReCaptchaV2TaskProxyLess',
'websiteURL': page_url,
'websiteKey': site_key,
}
})
task_id = response.json().get('taskId')
print(task_id)
if not task_id:
return ActionResult(success=False, message='Failed to create CapSolver task')
while True:
await asyncio.sleep(5)
result_response = requests.post('https://api.capsolver.com/getTaskResult', json={
'clientKey': CAPSOLVER_API_KEY,
'taskId': task_id
})
result = result_response.json()
print(f"CAPTCHA result status: {result.get('status')}")
if result.get('status') == 'ready':
solution = result.get('solution', {}).get('gRecaptchaResponse')
print(f"CAPTCHA solution: {solution}")
if solution:
print("Submitting CAPTCHA solution...")
# Try both possible input fields for the CAPTCHA token
await page.evaluate(f"""
// Try the standard g-recaptcha-response field
var gRecaptchaResponse = document.getElementById('g-recaptcha-response');
if (gRecaptchaResponse) {{
gRecaptchaResponse.innerHTML = '{solution}';
var event = new Event('input', {{ bubbles: true }});
gRecaptchaResponse.dispatchEvent(event);
}}
// Also try the recaptcha-token field
var recaptchaToken = document.getElementById('recaptcha-token');
if (recaptchaToken) {{
recaptchaToken.value = '{solution}';
var event = new Event('input', {{ bubbles: true }});
recaptchaToken.dispatchEvent(event);
}}
""")
# Wait a moment for the token to be processed
await asyncio.sleep(2)
print("Token injected successfully! CAPTCHA solved.")
# Method 2: Click submit button directly using the correct selector
print("Now clicking submit button...")
try:
# Use the specific button selector you provided
submit_button = await page.query_selector("body > main > form > fieldset > button")
if submit_button:
await submit_button.click()
print("? Submit button clicked successfully!")
else:
print("? Submit button not found!")
return ActionResult(success=False, message='Submit button not found')
except Exception as e:
print(f"? Error clicking submit button: {e}")
return ActionResult(success=False, message=f'Error clicking submit: {e}')
print("CAPTCHA solved and form submitted successfully!")
return ActionResult(success=True, message='CAPTCHA solved and form submitted')
else:
return ActionResult(success=False, message='No solution found')
elif result.get('status') == 'failed':
return ActionResult(success=False, message='CapSolver failed to solve CAPTCHA')
return ActionResult(success=False, message='No CAPTCHA found')
llm = ChatOpenAI(model="gpt-4o-mini")
async def main():
try:
print("? Starting browser-use CAPTCHA solver agent...")
# Simple task instruction for CAPTCHA solving and form submission
task = """Navigate to https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php and solve the CAPTCHA, then submit the form.
STEP 1: Navigate to the reCAPTCHA demo page: https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php
STEP 2: Wait for the page to fully load. You should see a form with input fields and a reCAPTCHA checkbox.
STEP 3: Look for a reCAPTCHA element (usually a checkbox that says "I'm not a robot" or similar).
STEP 4: Use the "solve_captcha" action to automatically solve the CAPTCHA and submit the form.
STEP 5: Report the final result.
Note: The solve_captcha action will handle both solving the CAPTCHA and submitting the form automatically."""
# Create browser session first
browser_session = BrowserSession()
# Create agent with the browser session
agent = Agent(
task=task,
llm=llm,
controller=controller,
browser_session=browser_session
)
print("? Running CAPTCHA solver agent...")
result = await agent.run()
print(f"? Agent completed: {result}")
# Keep browser open to see results
input('Press Enter to close the browser...')
await browser_session.close()
except Exception as e:
print(f"? Error: {e}")
if __name__ == "__main__":
asyncio.run(main())
ステップバイステップのh苧
ステップ | h苧 |
---|
- 卆贋vSのインスト`ル |
pip install browser-use playwright requests
を聞喘してbrowser-use
、playwright
、requests
をインスト`ルします。駅勣なブラウザをインスト`ルするにはplaywright install
をg佩します。| - h廠のO協 | OpenAIとCapSolverのAPIキ`を芦畠に隠贋するために
.env
ファイルを恬撹します。| - カスタムアクションの協x | reCAPTCHA v2勣殆を_Jし、サイトキ`を渇竃し、CapSolverのAPIを柵び竃し、ソリュ`ションをペ`ジに携襪垢
solve_captcha
を協xするために@controller.action
デコレ`タを聞喘します。| - コントロ`ラ`とエ`ジェントの兜豚晒 |
Controller
インスタンスを恬撹し、カスタムアクションを協xし、LLM╂GPT-4o-miniを聞喘したChatOpenAIを兜豚晒し、コントロ`ラ`を聞喘してBrowserUse
エ`ジェントを恬撹します。| - エ`ジェントのg佩 | 壟囑した栽にカスタムアクションを聞喘してCAPTCHAを盾Qする峺幣を根むタスクを戻工します。エ`ジェントは峺協されたURLに卞咾掘CAPTCHAを奮し、カスタムアクションを柵び竃し、フォ`ムを僕佚します。|
- エラ`I尖 | カスタムアクションには、CapSolverタスクが払,靴栽やソリュ`ションがつからない栽のエラ`I尖が根まれており、m俳な
ActionResult
オブジェクトを卦します。| - クリ`ンアップ | エ`ジェントはタスクが頼阻するとブラウザのリソ`スを徭啜弔帽楡蹐掘▲屮薀Ε兇鱸]じます。|
この箭はreCAPTCHA v2に醜泣を輝てていますが、タスクタイプを筝することで╂Turnstileの栽はAntiTurnstileTaskProxyLess
、麿のCAPTCHAタイプにもm鬉任ます。
デモのチュ`トリアル
このセクションでは、reCAPTCHA v2チェックボックスを根むデモペ`ジに卞咾靴謄侫`ムを僕佚するサンプルタスクを聞喘して、y栽の碧Mみについてh苧します。
- タスクのO協: タスクはAIエ`ジェントに
https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php
にアクセスし、フォ`ムを僕佚し、solve_captcha
アクションを聞喘してCAPTCHAを盾Qするよう峺幣します。 - エ`ジェントのg佩: Browser-useエ`ジェントはPlaywrightで崙囮されるブラウザを軟咾掘峺協されたURLに卞咾靴泙后
- CAPTCHAの奮: エ`ジェントは
.g-recaptcha
勣殆を碧することでCAPTCHAを_Jします。つかった栽は、solve_captcha
アクションがトリガ`されます。 - カスタムアクションのg佩:
solve_captcha
アクションはサイトキ`とペ`ジURLを渇竃し、CapSolverのAPIでタスクを恬撹し、ソリュ`ションをポ`リングします。 - ソリュ`ションの携: ソリュ`ションを鞭佚すると、アクションはト`クンを
g-recaptcha-response
フィ`ルドに携襪靴泙后 - フォ`ムの僕佚: エ`ジェントは僕佚ボタンをクリックすることでフォ`ムを僕佚し、タスクを頼阻します。
- タスクの頼阻: エ`ジェントはフォ`ムの僕佚が撹孔したことを幣すY惚を卦します。
議には、ブラウザがデモペ`ジに卞咾掘▲愁螢紿`ションが携襪気譴吹瓠reCAPTCHAチェックボックスが徭啜弔縫洫`クされ、フォ`ムが屎械に僕佚されるのがわかります。
FAQ セクション
| | 指基 |
---|---|
CapSolverは採NのCAPTCHAを盾Qできますか | CapSolverはreCAPTCHA v2/v3、Cloudflare Turnstileなどをサポ`トしています。頼畠なリストについては、CapSolverのドキュメントを孚してください。 |
なるCAPTCHAタイプをどのようにI尖しますか | カスタムアクションを筝してCAPTCHAタイプを奮し╂彩惷┐厘殆または捐圓魎_J、AntiTurnstileTaskProxyLess Turnstileの栽など、m俳なCapSolverタスクタイプを聞喘します。 |
CapSolverがCAPTCHAを盾Qできない栽はどうなりますか | カスタムアクションに壅佩ロジックをgbするか、ユ`ザ`に払,鰺岑します。デバッグのためにエラ`をログにhし、フォ`ルバック藺圓篇してください。 |
CapSolverを麿の徭啝ツ`ルで聞喘できますか | はい、CapSolverのAPIはSelenium、Puppeteer、Playwrightなど、HTTPリクエストをサポ`トするツ`ルと札Q來があります。 |
CapSolverでプロキシは駅勣ですか | 仇囃耕嗤のCAPTCHAまたはIPバインドされたCAPTCHAにはプロキシが駅勣になる栽があります。CapSolverはプロキシの聞喘をサポ`トしています。については、ドキュメントを孚してください。 |
まとめ
Browser-useにCapSolverをy栽することで、Web徭啝タスクでCAPTCHAをI尖するための埓里淵愁螢紿`ションが戻工されます。CAPTCHAを盾Qするためのカスタムアクションを協xすることで、AIエ`ジェントが、ボット貨に岷中した栽でも、Webサイトをシ`ムレスに卞咾任るようにします。このMみ栽わせにより、Browser-useの聞いやすさとCapSolverの薦なCAPTCHA盾QC嬬を試喘して、紳糞弔遍啝ワ`クフロ`を恬撹できます。
_兵するには、CapSolverにサインアップし、Browser-useをごEください。セットアップ返に惄ぁ¬畊されているコ`ド箭をgbします。については、CapSolverのドキュメントとBrowser-useのドキュメントをごEください。肝の徭啝プロジェクトでこのy栽をして、CAPTCHAを徭啜弔暴Qする否叟さをwYしてください
Browser-useユ`ザ`鬚韻離椥`ナスCapSolverアカウントを壅チャ`ジするHにプロモ`ションコ`ドBROWSERUSEを聞喘すると、貧泙覆掘嗤親斛泙覆靴葎媼議な6イ離椥`ナスクレジットを鞭け函ることができます。
サポ`トされているブラウザとツ`ル
- Browser-use: Playwrightを聞喘し、Chromium、Firefox、WebKitブラウザをサポ`トしています。
- CapSolver: ChromeとFirefoxのブラウザC嬬を根む、HTTP鬋ライアントと札Q來があります。
秤鵑箸修遼のフレ`ムワ`クの{
- Browser-use GitHub
- CapSolver巷塀ウェブサイト
- Playwrightドキュメント
- CapSolverドキュメント
- Browser-useドキュメント
コンプライアンス窒並 このブログで戻工される秤鵑蓮秤麑畊のみを朕議としています。CapSolverは、すべてのm喘される隈舵およびヨ討臨駟悗謀めています。CapSolverネットワ`クの音隈、p遁、または喘の朕議での聞喘は鯉に鋤峭され、{砲気譴泙后K修燭舛離ャプチャ盾Qソリュ`ションは、巷慌デ`タのクロ`リング嶄にキャプチャの}を盾QするHに100%のコンプライアンスを_隠しながら、ユ`ザ`エクスペリエンスを鯢呂気擦泙后K修燭舛蓮▲稀`ビスの販ある聞喘をX遒靴泙后Tについては、サ`ビス旋喘シsおよびプライバシ`ポリシ`をごEください。
もっとる

reCAPTCHA Enterprise v2、v2インビジブル、v3、v3エンタ`プライズ 0.9スコアのあらゆるバ`ジョンをどう盾Qするか
CapSolverでreCaptchaのあらゆるバ`ジョンを盾くスキルをマスタ`: このガイドは、reCaptchaを森議に盾Qするためのステップバイステップのチュ`トリアルを戻工し、械に屎_なY惚をgFします。

Sora Fujimoto
11-Oct-2025

颯ャプチャの盾き圭
このブログ並は、CAPTCHAを盾くための淫凄議なガイドを戻工します。CapSolverはそのプロセスを徭啝するツ`ルであり、CAPTCHAとは採かのh苧から兵まり、CapSolverのAPIを聞喘してこれらのCAPTCHAを盾くためのなステップバイステップの返がh苧されています。このガイドには、プロセスにvcするリクエストとレスポンスの箭が根まれています。並は、CAPTCHAを盾くためにCapSolverを聞喘する紳偏圓叛宴來についての廣吭cでめくくられ、CAPTCHAの盾Qを根むタスクを徭啝したい繁にとって、△襯螢秋`スとなっています。

Sora Fujimoto
11-Oct-2025

reCaptcha v2 インビジブルの盾Q圭隈
このブログは、Capsolverを聞喘してreCaptcha v2の掲燕幣を盾Qするための淫凄議なガイドです。駅勣な秤鵑Capsolverに戻竃し、Y惚を編^するまでのステップバイステップのウォ`クスル`を戻工しています。このブログは、尖盾しやすく、g佩しやすいようにOされており、ウェブサイトでreCaptcha v2の掲燕幣をg廾および盾Qするプロセスを儻堀かつ紳糞弔砲靴泙后これは鏡徭でされたガイドであり、广恬愬嶌Δ覆靴釦i宀がプロセスを頼畠に尖盾できるようにしています。

Nikolai Smirnov
11-Oct-2025

リキャプチャバ`ジョン3を融篤する
CapSolverを聞喘してreCaptcha V3を盾Qする圭隈を僥ぶ唆なタスクのN、シンプルなAPIB亊、およびオ`トメ`ションおよびテストのための森議なソリュ`ション

Sora Fujimoto
10-Oct-2025

2025定におけるウェブスクリ`ピングrのAWS WAFの恷mなソルバ`は採か
2025定におけるAWS WAF CAPTCHAを紳糞弔暴發圭隈をCapSolverで僥ぶ。ステップバイステップのガイド、Pythony栽、徭啝ワ`クフロ`を紳併するAIl咾離愁襯乂`。ダイナミックなト`クン、佩喀睥、}jなCAPTCHAチャレンジをgに\り埆える。

Lucas Mitchell
26-Sep-2025

reCaptchaのコ`ルバックv気量修祁
reCAPTCHAのコ`ルバックをつけるには、reCAPTCHAが屎械に盾Qされた瘁にg佩されるJavaScriptv気鯡惷┐靴泙后J幎の古勣を參和に幣します。

Sora Fujimoto
23-Sep-2025