CAPSOLVER
ブログ
PythonとGoを用いてreCAPTCHAを解決する方法

reCAPTCHA を Python と GO を使用して解決する方法

Logo of CapSolver

Sora Fujimoto

AI Solutions Architect

24-Nov-2025

reCAPTCHAはGoogleによって開発された、ウェブサイトが自動化されたボットから保護するための広く使用されているセキュリティ対策です。ユーザーにチャレンジを提示して人間のアイデンティティを確認します。この記事では、PythonとGoを使用してreCAPTCHAチャレンジをプログラムで解決する方法について説明します。reCAPTCHA v2とv3の両方をカバーし、ウェブスクレイピングプロジェクトでこれらのセキュリティ対策を乗り越える知識とツールを提供します。

reCAPTCHAとは何ですか?

reCAPTCHAは、ウェブサイトを詐欺行為や悪用から効果的に保護し、ユーザーの利便性を維持する強力な保護を提供します。知能型リスク評価エンジンと適応型チャレンジにより、悪意のあるソフトウェアを効果的に妨げ、正当なユーザーにスムーズなアクセスを確保します。10年以上の実績があり、無数のウェブサイトのデータの整合性を積極的に守っています。シームレスなアプローチにより、ボットや自動攻撃を効果的に識別・ブロックし、本物のユーザーが混乱することなくナビゲートできるようにします。継続的な機械学習を活用し、reCAPTCHAの適応型アルゴリズムはユーザーの行動やボットの挙動を分析し、従来のチャレンジベースのボット検出方法の制限を乗り越えています。

reCAPTCHAにはいくつかのバージョンがあります:

reCAPTCHAはGoogleによって開発され、人間とボットを区別する方法がそれぞれ異なります:

  • reCAPTCHA v1: 最初期のバージョンで、ユーザーが歪んだテキストを解読してテキストボックスに入力する必要があります。
  • reCAPTCHA v2: このバージョンでは、ユーザーが人間であることを確認するためのチェックボックスが導入されています。場合によっては、グリッドから特定の画像を選択するように求められることがあります。
  • reCAPTCHA v3: 以前のバージョンとは異なり、このバージョンはバックグラウンドで動作し、ユーザーの行動を分析して人間またはボットの活動の可能性を示すスコアを割り当てます。ユーザーに直接のインタラクションを必要とせず、シームレスな体験を提供します。

この記事では、reCAPTCHA V2とV3の解決方法に焦点を当てます。このバージョンは通常、「I am not a robot(私はロボットではありません)」のプロンプト付きのチェックボックスを表示するか、または非表示のバッジとして表示され、本物のユーザーとボットを区別することを目的としています。実際にどう表示されるかは次の通りです:

"

最も優れたreCAPTCHAソルバー:Capsolver

CapSolver は、市場で最も優れたreCAPTCHAソルバーの一つです。コストパフォーマンス、速度、信頼性の組み合わせを提供し、AI駆動のキャプチャ解決アルゴリズムにより、より高速な解決速度とコスト削減を実現します。この優れたソリューションは、reCAPTCHAチャレンジを扱う際の開発者体験を向上させます。

なぜCapSolverを選択すべきですか?

手頃な価格で高速:
CapSolverは競争力のある価格を提供し、reCAPTCHAを解決するための最もコスト効率の良いオプションの一つです。AI駆動のアルゴリズムにより、解決速度が向上し、貴重な時間を節約できます。

高信頼性:
CapSolverは、同様のプロバイダーの中で最も速いアップデート速度を誇り、最新で正確なキャプチャ解決技術へのアクセスを確保します。この信頼性により、スムーズで途切れのない解決体験が保証されます。

リスクフリーのソリューション:
CapSolverでは、成功したキャプチャのみに料金が発生します。厳格な協力レビューのプロセスにより、違法行為は迅速に特定され、禁止されるため、reCAPTCHAを解決する安全で信頼できるプラットフォームを提供します。

AI駆動の自動化:
CapSolverは人工知能の力を借りて、完全に自動化されたキャプチャ解決を提供します。これにより、手動の介入が不要となり、解決プロセスがスムーズになり、効率が向上します。

人気のサービスとの互換性:
CapSolverは、人気の手動キャプチャ認識サービスのAPIとシームレスに動作し、さまざまなプラットフォームやシステムとの互換性を確保します。この柔軟性により、既存のワークフローに簡単に統合できます。

多様なソリューション:
APIサービスに加え、CapSolverはChrome拡張機能も提供しており、キャプチャ解決の能力を拡張し、reCAPTCHAを解決するためのオプションをさらに豊富にしています。この柔軟性は、さまざまなユーザーのニーズや要件に応じた対応を可能にします。

幅広いプラットフォームで信頼されています:
1000以上のプラットフォームがCapSolverのAPIを統合しており、多くの企業や開発者から信頼と信頼を得ています。この広範な採用は、CapSolverソリューションの信頼性と効果を証明しています。

CapSolverのボーナスコードを引き換える

操作をさらに最適化する機会を逃さないでください!CapSolverアカウントにチャージする際、ボーナスコード CAPN を使用すると、各チャージに対して上限なしの5%のボーナスが得られます。今すぐCapSolverにアクセスしてボーナスを引き換えてください!

reCAPTCHA v3を解決する方法 – APIガイド

ReCaptchaV3Task

ReCaptchaV3Taskは、独自のプロキシが必要なタスクタイプです。信頼性の高いプロキシプールをお持ちのユーザーに最適です。個人のプロキシを使用することで、解決プロセスのより高い制御とカスタマイズが可能です。

python Copy
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'

import capsolver
# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "ReCaptchaV3Task",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
    "proxy":"ip:port:user:pass", ...
})

ReCaptchaV3TaskProxyLess

プロキシへのアクセスがない場合や、プロキシを使用したくない場合は、ReCaptchaV3TaskProxyLessが最適です。サーバー内蔵のプロキシを活用することで、プロセスがよりスムーズで使いやすくなります。

python Copy
# pip install --upgrade capsolver
# export CAPSOLVER_API_KEY='...'

import capsolver

# capsolver.api_key = "..."
solution = capsolver.solve({
    "type": "ReCaptchaV3TaskProxyLess",
    "websiteURL": "https://www.google.com/recaptcha/api2/demo",
    "websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
    "proxy":"yourproxy"
})

ステップ1: タスクの作成

プロセスを開始するには、createTaskメソッドを使用して認識タスクを作成する必要があります。

以下は例です:

json Copy
POST https://api.capsolver.com/createTask

{
  "clientKey":"yourapiKey",
  "task": {
    "type":"ReCaptchaV3Task",
    "websiteURL":"https://antcpt.com/score_detector",
    "websiteKey":"6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf",
    "pageAction": "homepage",
    "proxy":"yourproxy"
  }
}

タスクが正常に提出されると、レスポンスでタスクIDが返されます:

json Copy
{
  "errorId": 0,
  "errorCode": "",
  "errorDescription": "",
  "taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}

ステップ2: 結果の取得

タスクIDが得られたら、解決結果を取得するためにgetTaskResultメソッドにタスクIDを送信します。結果は1秒から10秒の間で準備が整います。

以下は例です:

json Copy
POST https://api.capsolver.com/getTaskResult
Host: api.capsolver.com
Content-Type: application/json

{
  "clientKey":"YOUR_API_KEY",
  "taskId": "TASKID OF CREATETASK" //createTaskメソッドで作成されたID
}

レスポンスには解決トークンが含まれます:

json Copy
{
  "errorId": 0,
  "errorCode": null,
  "errorDescription": null,
  "solution": {
    "userAgent": "xxx",
    "expireTime": 1671615324290,
    "gRecaptchaResponse": "3AHJ....."
  },
  "status": "ready"
}

レスポンスの「solution」には「userAgent」、トークンの有効期限「expireTime」、解決トークン「gRecaptchaResponse」が含まれます。キャプチャが解決された後、トークンをサイトに送信してキャプチャトークンを確認できます。例:

json Copy
var request = require('request');

var options = {
  method: 'POST',
  url: 'https://antcpt.com/score_detector/verify.php',
  headers: {
    'Content-Type': 'application/json',
  },
  body: JSON.stringify({ 'g-recaptcha-response': 'here the token of capsolver' }),
};

request(options, function (error, response) {
  if (error) throw new Error(error);
  console.log(response.body);
});

reCAPTCHA v2の解決方法については、こちらのドキュメントを参照してください。

PythonとGOを使用してreCAPTCHAを解決する方法

reCAPTCHA v2のサンプルコード

python Copy
# pip install requests
import requests
import time

# TODO: あなたの設定を入力してください
api_key = "YOUR_API_KEY"  # 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
        }
    }
    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"タスクIDを取得しました: {task_id} / 結果を取得中...")

    while True:
        time.sleep(3)  # 待ち時間
        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("解決に失敗しました!レスポンス:", res.text)
            return


token = capsolver()
print(token)
go Copy
package main

import (
	"bytes"
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"net/http"
	"time"
)

type capSolverResponse struct {
	ErrorId          int32          `json:"errorId"`
	ErrorCode        string         `json:"errorCode"`
	ErrorDescription string         `json:"errorDescription"`
	TaskId           string         `json:"taskId"`
	Status           string         `json:"status"`
	Solution         map[string]any `json:"solution"`
}

func capSolver(ctx context.Context, apiKey string, taskData map[string]any) (*capSolverResponse, error) {
	uri := "https://api.capsolver.com/createTask"
	res, err := request(ctx, uri, map[string]any{
		"clientKey": apiKey,
		"task":      taskData,
	})
	if err != nil {
		return nil, err
	}
	if res.ErrorId == 1 {
		return nil, errors.New(res.ErrorDescription)
	}

	uri = "https://api.capsolver.com/getTaskResult"
	for {
		select {
		case <-ctx.Done():
			return res, errors.New("解決タイムアウト")
		case <-time.After(time.Second):
			break
		}
		res, err = request(ctx, uri, map[string]any{
			"clientKey": apiKey,
			"taskId":    res.TaskId,
		})
		if err != nil {
			return nil, err
		}
		if res.ErrorId == 1 {
			return nil, errors.New(res.ErrorDescription)
		}
		if res.Status == "ready" {
			return res, err
		}
	}
}

func request(ctx context.Context, uri string, payload interface{}) (*capSolverResponse, error) {
	payloadBytes, err := json.Marshal(payload)
	if err != nil {
		return nil, err
	}
	req, err := http.NewRequestWithContext(ctx, "POST", uri, bytes.NewReader(payloadBytes))
	if err != nil {
		return nil, err
	}
	req.Header.Set("Content-Type", "application/json")
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	responseData, err := io.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}
	capResponse := &capSolverResponse{}
	err = json.Unmarshal(responseData, capResponse)
	if err != nil {
		return nil, err
	}
	return capResponse, nil
}

func main() {
	apikey := "YOUR_API_KEY"
	ctx, cancel := context.WithTimeout(context.Background(), time.Second*120)
	defer cancel()

	res, err := capSolver(ctx, apikey, map[string]any{
		"type":       "ReCaptchaV2TaskProxyLess",
		"websiteURL": "https://www.google.com/recaptcha/api2/demo",
		"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-",
	})
	if err != nil {
		panic(err)
	}
	fmt.Println(res.Solution["gRecaptchaResponse"])
}

reCAPTCHA v3のサンプルコード

python Copy
# pip install requests
import requests
import time

# TODO: あなたの設定を入力してください
api_key = "YOUR_API_KEY"  # CapSolverのAPIキー
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-"  # ターゲットサイトのサイトキー
site_url = "https://www.google.com"  # ターゲットサイトのページURL


def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV3TaskProxyLess',
            "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"タスクIDを取得しました: {task_id} / 結果を取得中...")

    while True:
        time.sleep(1)  # 待ち時間
        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("解決に失敗しました!レスポンス:", res.text)
            return


token = capsolver()
print(token)
go Copy
package main

import (
	"bytes"
	"context"
	"encoding/json"
	"errors"
	"fmt"
	"io"
	"net/http"
	"time"
)

type capSolverResponse struct {
	ErrorId          int32          `json:"errorId"`
	ErrorCode        string         `json:"errorCode"`
	ErrorDescription string         `json:"errorDescription"`
	TaskId           string         `json:"taskId"`
	Status           string         `json:"status"`
	Solution         map[string]any `json:"solution"`
}

func capSolver(ctx context.Context, apiKey string, taskData map[string]any) (*capSolverResponse, error) {
	uri := "https://api.capsolver.com/createTask"
	res, err := request(ctx, uri, map[string]any{
		"clientKey": apiKey,
		"task":      taskData,
	})
	if err != nil {
		return nil, err
	}
	if res.ErrorId == 1 {
		return nil, errors.New(res.ErrorDescription)
	}

	uri = "https://api.capsolver.com/getTaskResult"
	for {
		select {
		case <-ctx.Done():
			return res, errors.New("解決タイムアウト")
		case <-time.After(time.Second):
			break
		}
		res, err = request(ctx, uri, map[string]any{
			"clientKey": apiKey,
			"taskId":    res.TaskId,
		})
		if err != nil {
			return nil, err
		}
		if res.ErrorId == 1 {
			return nil, errors.New(res.ErrorDescription)
		}
		if res.Status == "ready" {
			return res, err
		}
	}
}

func request(ctx context.Context, uri string, payload interface{}) (*capSolverResponse, error) {
	payloadBytes, err := json.Marshal(payload)
	if err != nil {
		return nil, err
	}
	req, err := http.NewRequestWithContext(ctx, "POST", uri, bytes.NewReader(payloadBytes))
	if err != nil {
		return nil, err
	}
	req.Header.Set("Content-Type", "application/json")
	client := &http.Client{}
	resp, err := client.Do(req)
	if err != nil {
		return nil, err
	}
	defer resp.Body.Close()
	responseData, err := io.ReadAll(resp.Body)
	if err != nil {
		return nil, err
	}
	capResponse := &capSolverResponse{}
	err = json.Unmarshal(responseData, capResponse)
	if err != nil {
		return nil, err
	}
	return capResponse, nil
}

func main() {
	apikey := "YOUR_API_KEY"
	ctx, cancel := context.WithTimeout(context.Background(), time.Second*120)
	defer cancel()

	res, err := capSolver(ctx, apikey, map[string]any{
		"type":       "ReCaptchaV3TaskProxyLess",
		"websiteURL": "https://www.google.com/recaptcha/api2/demo",
		"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
	})
	if err != nil {
		panic(err)
	}
	fmt.Println(res.Solution["gRecaptchaResponse"])
}

コンプライアンス免責事項: このブログで提供される情報は、情報提供のみを目的としています。CapSolverは、すべての適用される法律および規制の遵守に努めています。CapSolverネットワークの不法、詐欺、または悪用の目的での使用は厳格に禁止され、調査されます。私たちのキャプチャ解決ソリューションは、公共データのクローリング中にキャプチャの問題を解決する際に100%のコンプライアンスを確保しながら、ユーザーエクスペリエンスを向上させます。私たちは、サービスの責任ある使用を奨励します。詳細については、サービス利用規約およびプライバシーポリシーをご覧ください。

もっと見る

JavaScriptでreCAPTCHAを解く: 完全なチュートリアル
JavaScriptでレカプチャを解く:完全なチュートリアル

reCAPTCHAはウェブコンテンツを効果的に保護していますが、研究やデータ分析、またはコンプライアンスに基づいた自動化タスクなど、ウェブサービスと相互作用する正当な活動を妨げる場合があります。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

02-Dec-2025

reCaptcha v3 EnterpriseをPythonで解く方法
reCAPTCHA v3 エンタープライズの解決方法 Pythonで

reCAPTCHA v3 Enterprise Pythonガイド:高スコア技術、プロキシオプション、CapSolverとの統合による安定した0.7~0.9の結果

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

02-Dec-2025

AIスクラビングワークフローにCAPTCHA解決を組み込む方法
AIスクリーピングワークフローにCAPTCHA解決を組み込む方法

CAPTCHA解決サービスをAIスクリーピングワークフローに統合する方法を習得してください。reCAPTCHA v3、Cloudflare、AWS WAFのベストプラクティスを学んで、信頼性の高い大量データ収集を確保してください

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

28-Nov-2025

reCaptcha v3をNode.JSで解決する方法
reCAPTCHA v3 を Node.JS で解決する方法

この記事では、Node.JS を使って reCaptcha v3 を解く方法を紹介します。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

28-Nov-2025

reCAPTCHA v3をPythonで解決する方法
reCAPTCHA v3 を Python で解決する方法

PythonとCapSolverを用いてGoogle reCAPTCHA v3を解く方法を学び、高いスコアを取得し、オートメーションワークフローに統合してください。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

28-Nov-2025

CapSolverのキャプチャソルバー Chrome エクステンション
CapSolverのキャプチャソルバー Chrome拡張機能

CapSolverのAI Chrome拡張機能は、高い精度で、最小限の設定でキャプチャを自動で解く—自動化に最適です。

reCAPTCHA
Logo of CapSolver

Sora Fujimoto

27-Nov-2025