Python、Java、C++ を聞喘した reCAPTCHA の盾Q

Sora Fujimoto
AI Solutions Architect
25-Oct-2024

reCAPTCHAを聞い兵めた兜、それはT釆のだと湖じました。匯圭では、ボットをフィルタリングするのに叨羨ちますが、匯圭で、屎な徭啝プロジェクトにとって寄きな嬾墾となる辛嬬來があります。そこでこの並では、Python、Java、C++という3つの薦なプログラミング冱Zを聞ってreCAPTCHAを盾Qする圭隈をB初します。光冱ZはreCAPTCHAのn}にIするために徭の旋cがあり、プロジェクトのニ`ズに鬉犬独痣來をもたらします。まずは、CAPTCHAとreCAPTCHAとは採か、そしてWebセキュリティにおける嶷勣來について尖盾することから兵めましょう。
CAPTCHAとは
恷も児云議な古廷から兵めましょう。CAPTCHAとは、仝Completely Automated Public Turing test to tell Computers and Humans Apart々の待で、繁gのユ`ザ`とボットを曝eするための匯違議な圭隈です。これは、ユ`ザ`に繁gにとってはgだがC亠にとってはyしいタスクを盾くことを勣箔することで、ウェブサイトが徭啝された好帖▲好僖燹△泙燭喘を閲けるのに叨羨ちます。これは、浴んだテキストのJR、蒙協のオブジェクトを根む鮫颪累xk、またはロジックパズルの盾Qなどになる辛嬬來があります。
reCAPTCHAとは
reCAPTCHAはGoogleによって_kされたサ`ビスで、繁gのユ`ザ`とボットを^eすることで、ウェブサイトをスパムや音屎聞喘から隠oするのに叨羨ちます。reCAPTCHAはr旗とともにM晒し、それぞれが蒙協のC嬬を戻工するさまざまなバ`ジョンが戻工されています。
-
reCAPTCHA v2: これは恷も匯違議な侘塀で、ユ`ザ`はチェックボックスをクリックする("暴はロボットではありません")または鮫颪鰡xkするなどのタスクを盾Qします。これはよりユ`ザ`フレンドリ`ですが、リスク勣咀に児づいてチャレンジが燕幣される辛嬬來があります。
-
reCAPTCHA v3: このバ`ジョンは、ユ`ザ`を舒徴することなく、バックグラウンドで朕にえないように嘛します。ユ`ザ`の佩咾忙づいてリスクスコア0.0?1.0を護り輝てます。リスクの詰いユ`ザ`は、チャレンジが燕幣されることなく宥^しますが、夘わしいアクティビティは編^ステップをトリガ`する辛嬬來があります。
-
reCAPTCHA Enterprise: エンタ`プライズレベルの隠oのためにOされたこのバ`ジョンは、寄二I鬚韻離札ュリティC嬬を晒しています。互業な蛍裂、C亠僥モデル、リスクベ`スのuをMみ栽わせることで、ビジネスセキュリティニ`ズに栽わせて互業にカスタマイズされた、互リスクトランザクションに栽わせたセキュリティを戻工します。
これらのバ`ジョンのそれぞれは、ボットと好弔稜秒郢に栽わせて、屎なユ`ザ`にとっての彫価を恷弌泙牧屬┐覆ら、恷mなセキュリティを戻工することを朕峺しています。
- reCAPTCHA v2 デモ
reCAPTCHA v2 デモをる- reCAPTCHA v3 デモ
reCAPTCHA v3 デモをる- reCAPTCHA Enterprise デモ
reCAPTCHA Enterpriseのをる
Python、Java、C++でのreCAPTCHAの盾Q圭隈
光冱Zは、reCAPTCHAのn}にIするHに徭のみを戻工します。
-
Pythonは、シンプルさと、Web徭啝やデ`タスクレイピングを否叟にする寄トなライブラリセットで岑られています。SeleniumやPlaywrightなどのライブラリを聞喘することで、ブラウザタスクをgに徭啝し、m俳なツ`ルを聞ってCAPTCHAを指閲することができます。
-
Javaは、エンタ`プライズレベルのアプリケ`ションやクロスプラットフォ`ムプロジェクトにmしています。Selenium WebDriverなどのマルチスレッドC嬬やフレ`ムワ`クにより、スケ`ラブルなシステムでreCAPTCHAをスム`ズにI尖することができます。
-
**C++**はパフォ`マンスの旋cがあり、堀業と詰レイテンシが箔められるシステムに恷mです。徭啝にはあまり聞われていませんが、麿のツ`ルとy栽して互來嬬h廠でreCAPTCHAのn}を盾Qすることができます。
CapSolverのB初
枠にMむと、M晒するアルゴリズムや}jさのために、reCAPTCHAのn}を盾Qすることがyしくなることに櫃鼎でしょう。そこで叨羨つのがCapSolverです。これは、reCAPTCHA v2、reCAPTCHA v3など、}方のCAPTCHAタイプをI尖し、互い娼業でreCAPTCHAの盾Qプロセスを徭啝するTサ`ビスです。CapSolverをPython、Java、またはC++プロジェクトにy栽することで、CAPTCHA盾Qの}jさを喘のサ`ビスにオフロ`ドし、スクリプトをスム`ズかつ紳糞弔g佩することができます。
肝に、光冱Zのサンプルコ`ドと、CapSolverをプロジェクトに儻堀にy栽する圭隈についてh苧します...
ボ`ナスコ`ド
トップのCAPTCHAソリュ`ションのボ`ナスコ`ドを返に秘れましょう。CapSolverWEBS。コ`ドをm喘すると、チャ`ジごとに弖紗で5%のボ`ナスがもらえます。o崙沺
Pythonを聞ったreCAPTCHAの盾Q圭隈
並念
ステップ1. サイトキ`の函誼
V2とV3のI圭で、ブラウザのリクエストログで/recaptcha/api2/reload?k=6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf
というリクエストを碧できます。ここでk=
は、暴たちが駅勣とするキ`、任后
ステップ2. V2とV3の曝e
V2とV3では、I尖圭隈がなります。V2では騁JRを聞喘して指基をxkする駅勣がありますが、V3は曳^議朕羨ちません。ただし、V3では編^rにアクションを戻工する駅勣があります。念に函誼したキ`、忙づいて、レスポンスペ`ジを碧すると、ペ`ジ箸縫▲ション、つかります。

ステップ3. CapSolverサ`ビスの柵び竃し
reCAPTCHAのバ`ジョンの^e
- ブラウザのリクエストログでは、V2の栽、
/recaptcha/api2/reload
リクエストの瘁、宥械は/recaptcha/api2/userverify
リクエストが駅勣になり、宥^ト`クンを函誼できます。 - V3の栽、
/recaptcha/api2/reload
リクエストで岷俊宥^ト`クンを函誼できます。
CapSolver API柵び竃しの頼畠な箭
- Python reCAPTCHA V2
python
# pip install requests
import requests
import time
# TODO: O協
api_key = "YOUR_API_KEY" # CapSolverのAPIキ`
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" # タ`ゲットサイトのサイトキ`
site_url = "https://www.google.com/recaptcha/api2/demo" # タ`ゲットサイトのペ`ジURL
# site_key = "6LelzS8UAAAAAGSL60ADV5rcEtK0x0lRsHmrtm62"
# site_url = "https://mybaragar.com/index.cfm?event=page.SchoolLocatorPublic&DistrictCode=BC45"
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV2TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("タスクの恬撹に払,靴泙靴:", res.text)
return
print(f"taskIdを函誼しました: {task_id} / Y惚を函誼嶄...")
while True:
time.sleep(3) # W决
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("盾Qに払,靴泙靴殖.譽好櫂鵐:", res.text)
return
token = capsolver()
print(token)
- Python reCAPTCHA V3
python
# pip install requests
import requests
import time
# TODO: O協
api_key = "YOUR_API_KEY" # CapSolverのAPIキ`
site_key = "6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf" # タ`ゲットサイトのサイトキ`
site_url = "https://antcpt.com/score_detector/" # タ`ゲットサイトのペ`ジURL
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV3TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url,
"pageAction": "homepage",
}
}
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("タスクの恬撹に払,靴泙靴:", res.text)
return
print(f"taskIdを函誼しました: {task_id} / Y惚を函誼嶄...")
while True:
time.sleep(1) # W决
payload = {"clientKey": api_key, "taskId": task_id}
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("盾Qに払,靴泙靴殖.譽好櫂鵐:", res.text)
return
# スコアの編^
def score_detector(token):
headers = {
"accept": "application/json, text/javascript, */*; q=0.01",
"accept-language": "fr-CH,fr;q=0.9",
"content-type": "application/json",
"origin": "https://antcpt.com",
"priority": "u=1, i",
"referer": "https://antcpt.com/score_detector/",
"sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
"sec-ch-ua-mobile": "?0",
"sec-ch-ua-platform": "\"macOS\"",
"sec-fetch-dest": "empty",
"sec-fetch-mode": "cors",
"sec-fetch-site": "same-origin",
"user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
"x-requested-with": "XMLHttpRequest"
}
url = "https://antcpt.com/score_detector/verify.php"
data = {
"g-recaptcha-response": token
}
data = json.dumps(data, separators=(',', ':'))
response = requests.post(url, headers=headers, data=data)
print(response.json())
print(response)
token = capsolver()
print(token)
...
...
{
'success': True,
'challenge_ts': '2024-07-19T10:50:56Z',
'hostname': 'antcpt.com',
'score': 0.7,
'action': 'homepage'
}
Javaを聞ったreCAPTCHAの盾Q圭隈
並念
コ`ドにMむ念に、このチュ`トリアルを撹孔させるために、肝の並念笋鬚靴討く駅勣があります。
- Node.jsとnpm: Node.jsJavaScriptランタイムとnpmNode Package Managerを聞喘して、プロジェクトの卆贋vSを砿尖します。Node.jsがインスト`ルされていない栽は、Node.jsの巷塀ウェブサイトからダウンロ`ドできます。
- CapSolver APIキ`: reCAPTCHAのn}を盾Qするには、CapSolverなどのサ`ビスへのアクセスが駅勣です。このサ`ビスは、CAPTCHAのn}をプログラムで盾Qすることに蒙晒しています。CapSolverにサインアップしてAPIキ`を函誼し、ソリュ`ションにy栽できるようにしてください。
これらの並念笋鰺蠢砲靴燭蕁↓h廠をセットアップして、JavaScriptとCapSolverでreCAPTCHAのn}を盾Qすることができます。
ステップ1. サイトキ`の函誼
- ブラウザのリクエストログで、
/recaptcha/api2/reload?k=6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-
というリクエストを碧します。ここでk=
の瘁の、、駅勣なサイトキ`です。または、CapSolverC嬬を聞喘して、recaptchaを盾Qするためのすべてのパラメ`タをつけることができます。 - URLは、reCAPTCHA V2をトリガ`するペ`ジのアドレスです。
ステップ2. requestsライブラリのインスト`ル
bash
pip install requests
ステップ3. 箭コ`ド
python
import requests
import time
from DrissionPage import ChromiumPage
# ChromiumPageのインスタンスを恬撹
page = ChromiumPage()
# reCAPTCHAをトリガ`する箭ペ`ジにアクセス
page.get("https://www.google.com/recaptcha/api2/demo")
# TODO: O協
api_key = "CapSolverのAPIキ`" # CapSolverのAPIキ`
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-" # タ`ゲットサイトのサイトキ`
site_url = "https://www.google.com/recaptcha/api2/demo" # タ`ゲットサイトのペ`ジURL
def capsolver():
payload = {
"clientKey": api_key,
"task": {
"type": 'ReCaptchaV2TaskProxyLess',
"websiteKey": site_key,
"websiteURL": site_url
}
}
# CapSolverにタスクを恬撹するリクエストを僕佚
res = requests.post("https://api.capsolver.com/createTask", json=payload)
resp = res.json()
task_id = resp.get("taskId")
if not task_id:
print("タスクの恬撹に払,靴泙靴:", res.text)
return
print(f"taskIdを函誼しました: {task_id} / Y惚を函誼嶄...")
while True:
time.sleep(3) # W决
payload = {"clientKey": api_key, "taskId": task_id}
# タスクY惚をい栽わせる
res = requests.post("https://api.capsolver.com/getTaskResult", json=payload)
resp = res.json()
status = resp.get("status")
if status == "ready":
return resp.get("solution", {}).get('gRecaptchaResponse')
if status == "failed" or resp.get("errorId"):
print("盾Qに払,靴泙靴殖.譽好櫂鵐:", res.text)
return
def check():
# reCAPTCHAの盾Q貨を函誼
token = capsolver()
# reCAPTCHAのレスポンス、鰓O協
page.run_js(f'document.getElementById("g-recaptcha-response").value="{token}"')
# 撹孔コ`ルバックv方を柵び竃す
page.run_js(f'onSuccess("{token}")')
# フォ`ムを僕佚
page.ele('x://input[@id="recaptcha-demo-submit"]').click()
if __name__ == '__main__':
check()
C++を聞ったreCAPTCHAの盾Q圭隈
並念
兵める念に、肝のライブラリがインスト`ルされていることを_Jしてください。
- cpr: C++のHTTPライブラリです。
- jsoncpp: C++のJSONパ`シングライブラリです。
vcpkgを聞喘してインスト`ルできます。
bash
vcpkg install cpr jsoncpp
ステップ1. プロジェクトのO協
仟しいC++プロジェクトを恬撹し、cpr
とjsoncpp
に駅勣なヘッダ`を根めます。
cpp
#include <iostream>
#include <cpr/cpr.h>
#include <json/json.h>
ステップ2. タスクの恬撹とY惚の函誼のためのv方の協x
2つの麼勣なv気魘xします。createTask
とgetTaskResult
です。
- createTask: このv方は、reCAPTCHAタスクを恬撹します。
- getTaskResult: このv方は、恬撹されたタスクのY惚を函誼します。
頼畠なコ`ドは參和のとおりです。
cpp
#include <iostream>
#include <cpr/cpr.h>
#include <json/json.h>
std::string createTask(const std::string& apiKey, const std::string& websiteURL, const std::string& websiteKey) {
Json::Value requestBody;
requestBody["clientKey"] = apiKey;
requestBody["task"]["type"] = "ReCaptchaV2Task";
requestBody["task"]["websiteURL"] = websiteURL;
requestBody["task"]["websiteKey"] = websiteKey;
Json::StreamWriterBuilder writer;
std::string requestBodyStr = Json::writeString(writer, requestBody);
cpr::Response response = cpr::Post(
cpr::Url{"https://api.capsolver.com/createTask"},
cpr::Body{requestBodyStr},
cpr::Header{{"Content-Type", "application/json"}}
);
Json::CharReaderBuilder reader;
Json::Value responseBody;
std::string errs;
std::istringstream s(response.text);
std::string taskId;
if (Json::parseFromStream(reader, s, &responseBody, &errs)) {
if (responseBody["errorId"].asInt() == 0) {
taskId = responseBody["taskId"].asString();
} else {
std::cerr << "エラ`: " << responseBody["errorCode"].asString() << std::endl;
}
} else {
std::cerr << "レスポンスの盾裂に払,靴泙靴: " << errs << std::endl;
}
return taskId;
}
std::string getTaskResult(const std::string& apiKey, const std::string& taskId) {
Json::Value requestBody;
requestBody["clientKey"] = apiKey;
requestBody["taskId"] = taskId;
Json::StreamWriterBuilder writer;
std::string requestBodyStr = Json::writeString(writer, requestBody);
while (true) {
cpr::Response response = cpr::Post(
cpr::Url{"https://api.capsolver.com/getTaskResult"},
cpr::Body{requestBodyStr},
cpr::Header{{"Content-Type", "application/json"}}
);
Json::CharReaderBuilder reader;
Json::Value responseBody;
std::string errs;
std::istringstream s(response.text);
if (Json::parseFromStream(reader, s, &responseBody, &errs)) {
if (responseBody["status"].asString() == "ready") {
return responseBody["solution"]["gRecaptchaResponse"].asString();
} else if (responseBody["status"].asString() == "processing") {
std::cout << "タスクはまだI尖嶄です。5昼棋ちます..." << std::endl;
std::this_thread::sleep_for(std::chrono::seconds(5));
} else {
std::cerr << "エラ`: " << responseBody["errorCode"].asString() << std::endl;
break;
}
} else {
std::cerr << "レスポンスの盾裂に払,靴泙靴: " << errs << std::endl;
break;
}
}
return "";
}
int main() {
std::string apiKey = "YOUR_API_KEY";
std::string websiteURL = "https://example.com";
std::string websiteKey = "SITE_KEY";
std::string taskId = createTask(apiKey, websiteURL, websiteKey);
if (!taskId.empty()) {
std::cout << "タスクが屎械に恬撹されました。タスクID: " << taskId << std::endl;
std::string recaptchaResponse = getTaskResult(apiKey, taskId);
std::cout << "reCAPTCHAレスポンス: " << recaptchaResponse << std::endl;
} else {
std::cerr << "タスクの恬撹に払,靴泙靴拭" << std::endl;
}
return 0;
}
まとめ
まとめとして、CapSolverをプロジェクトにy栽することで、reCAPTCHAのn}をI尖することがはるかにgになったと冱えるでしょう。V2であろうとV3であろうと、プロセスはgで、謹くのrgをsすることができました。揖のn}に岷中している栽は、CapSolverをしてみることをくお瓩瓩靴泙后K修砲箸辰謄鴬`ムチェンジャ`となりました。
コンプライアンス窒並 このブログで戻工される秤鵑蓮秤麑畊のみを朕議としています。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

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

Nikolai Smirnov
11-Oct-2025

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

Sora Fujimoto
23-Sep-2025

reCaptcha v2 の盾き圭
この並では、reCaptchaとは採か、そしてCapSolverを聞ってreCaptcha v2をgに盾Qする圭隈をh苧します。

Nikolai Smirnov
23-Sep-2025

reCaptcha v3を盾いて繁gらしいスコア(0.7゛0.9參貧)を誼る圭隈
CapsolverでreCaptcha v3を森議に盾Qする圭隈を僥びましょう。このガイドでは、O協からCAPTCHAの盾QまでをW_し、互スコアとスム`ズなWebナビゲ`ションを隠^します。

Sora Fujimoto
23-Sep-2025

2025定のウェブスクレイピングにおける恷mなreCAPTCHA v2およびv3ソルバ`は採ですか
2025定、互業晒されたボット貨システムにより、佚mできるreCAPTCHAソルバ`をつけることがデ`タ渇竃撹孔のIとなっています。

Sora Fujimoto
17-Jan-2025