如何使用 Python 和 Go 解决 reCAPTCHA

Emma Foster
Machine Learning Engineer
24-Nov-2025

reCAPTCHA是由Google开发的一种广泛使用的安全措施,网站使用它来防止自动化机器人。它向用户提出挑战以验证其人类身份。在本文中,我们将探讨如何使用Python和Go编程解决reCAPTCHA挑战。我们将涵盖reCAPTCHA v2和v3,为您提供克服这些安全措施的知识和工具,用于您的网络爬虫项目。
什么是reCAPTCHA?
reCAPTCHA为网站提供强大的保护,有效防止欺诈活动和滥用,同时保持用户便利。它由智能风险评估引擎和自适应挑战驱动,有效阻止恶意软件并确保合法用户的顺畅访问。经过十多年的发展,reCAPTCHA积极保护无数网站的数据完整性。其无缝的方法可以轻松识别和阻止机器人和自动化攻击,同时仍允许真实用户无干扰地浏览。利用持续的机器学习,reCAPTCHA的自适应算法分析用户交互和机器人行为,超越了传统基于挑战的机器人检测方法的局限性。

reCAPTCHA有几种版本:
reCAPTCHA由Google开发,有几种版本,每种版本都以不同的方式区分人类和机器人:
- reCAPTCHA v1:初始版本要求用户辨认扭曲的文本并将其输入文本框。
- reCAPTCHA v2:此版本引入了一个复选框,让用户确认其人类身份。有时,它还可能提示用户从网格中选择特定的图片。
- reCAPTCHA v3:与之前的版本不同,此版本在后台运行,分析用户行为以分配一个分数,表示人类或机器人活动的可能性。它提供无缝体验,不需要用户直接交互。
本文将重点介绍解决reCAPTCHA V2和V3。这些版本通常显示一个带有“我不是机器人”提示的复选框,或者可能显示为不可见的徽章,旨在区分真实用户和机器人。以下是其实际运行情况:

最佳的reCAPTCHA求解器:Capsolver
CapSolver 是市场上最优秀的 reCAPTCHA 求解器之一。它提供了一种经济实惠、快速且可靠的解决方案,利用 AI 驱动的 Captcha 求解算法,从而实现更快的求解速度和更低的成本。这一卓越的解决方案确保了处理 reCAPTCHA 挑战时的优秀开发者体验。
为什么选择 CapSolver?
经济实惠且快速:
CapSolver 提供具有竞争力的价格,使其成为解决 reCAPTCHAs 最具成本效益的选择之一。凭借其 AI 驱动的算法,它实现了更快的求解速度,节省了宝贵的时间。
高可靠性:
CapSolver 在类似供应商中拥有最快的更新速度,确保您能够访问最新和最准确的 Captcha 求解技术。这种可靠性确保了顺畅且无中断的求解体验。
无风险解决方案:
使用 CapSolver 时,您只需支付成功解决的 Captcha。他们严格的协作审查流程确保任何非法活动都能被迅速识别和禁止,为解决 reCAPTCHAs 提供了一个安全且值得信赖的平台。
AI 驱动的自动化:
CapSolver 利用人工智能的力量,提供完全自动化的 Captcha 求解。这消除了手动干预的需要,简化了求解过程并提高了效率。
兼容主流服务:
CapSolver 可无缝与主流手动 Captcha 识别服务的 API 配合使用,确保与各种平台和系统的兼容性。这种灵活性允许轻松集成到您的现有工作流程中。
多样化的解决方案:
除了其 API 服务外,CapSolver 还提供了一个 Chrome 扩展程序,扩展了其功能,并为解决 reCAPTCHAs 提供了更多选择。这种多功能性满足了不同的用户偏好和需求。
被广泛平台信任:
超过 1000 个平台集成了 CapSolver 的 API,使其获得了众多企业和开发者的信任和信心。这种广泛的采用证明了 CapSolver 解决方案的可靠性和有效性。
领取 CapSolver 奖励代码
不要错过进一步优化您的操作的机会!在充值 CapSolver 账户时使用奖励代码 CAPN,每次充值均可获得额外 5% 的奖励,没有限制。立即访问 CapSolver 来领取您的奖励!
如何通过 API 解决 reCAPTCHA v3
ReCaptchaV3Task
ReCaptchaV3Task 是一种需要您自己代理的求解任务类型。它适合那些拥有可靠代理池的用户。使用个人代理可以对求解过程进行更大的控制和自定义。
python
# 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
# 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-", ...
})
步骤 1:创建任务
要开始这个过程,您需要使用 createTask 方法创建一个识别任务。
这是一个示例请求:
json
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
{
"errorId": 0,
"errorCode": "",
"errorDescription": "",
"taskId": "61138bb6-19fb-11ec-a9c8-0242ac110006"
}
步骤 2:获取结果
一旦您有了任务 ID,就可以使用它来获取解决方案。使用 getTaskResult 方法提交任务 ID。结果应该在 1 秒到 10 秒之间准备好。
这是一个示例请求:
json
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
{
"errorId": 0,
"errorCode": null,
"errorDescription": null,
"solution": {
"userAgent": "xxx",
"expireTime": 1671615324290,
"gRecaptchaResponse": "3AHJ....."
},
"status": "ready"
}
在响应中,'solution' 包含 'userAgent',令牌的过期时间 'expireTime' 和解决方案令牌 'gRecaptchaResponse'。在验证码被解决后,您可以将令牌发送到网站以检查验证码令牌,例如:
json
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': '这里是 Capsolver 的令牌' }),
};
request(options, function (error, response) {
if (error) throw new Error(error);
console.log(response.body);
});
有关如何 解决 reCAPTCHA v2 的更多信息,请参阅此 文档
如何使用 Python 和 GO 解决 reCAPTCHA
reCAPTCHA v2 的示例代码
python
# 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"获取到 taskId: {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
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("solve timeout")
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
# 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"获取到 taskId: {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
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("solve timeout")
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",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
})
if err != nil {
panic(err)
}
fmt.Println(res.Solution["gRecaptchaResponse"])
}
}
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",
"websiteKey": "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_kl-",
})
if err != nil {
panic(err)
}
fmt.Println(res.Solution["gRecaptchaResponse"])
}
## 总结
使用 Python 和 Go 编程解决 reCAPTCHA 挑战,并结合强大的 [CapSolver](https://dashboard.capsolver.com/dashboard/overview/?utm_source=blog&utm_medium=article&utm_campaign=price-intelligence-captcha) 解决方案,为网络爬虫和自动化任务提供了有效的途径。通过理解 reCAPTCHA v2 和 v3 的复杂性,并利用 CapSolver 的功能,开发者人员可以高效且可靠地克服这些安全措施。按照提供的完整指南和代码示例,您可以成功将 CapSolver 集成到 Python 和 Go 应用程序中,无缝解决 reCAPTCHA 挑战。
# **常见问题**
### **1. 本文重点是什么?**
本文解释了如何使用 Python 和 Go 编程解决 reCAPTCHA v2 和 v3,包括完整的 API 工作流程和示例代码。
### **2. 适用于哪些人群?**
从事网络爬虫、自动化、SEO 工具、监控系统或任何遇到 reCAPTCHA 挑战的工作流程的开发人员。
### **3. 支持哪些 reCAPTCHA 版本?**
reCAPTCHA v2(复选框和不可见)和 reCAPTCHA v3(基于分数)。
### **4. 开始需要什么?**
* 目标网站的 sitekey
* 页面 URL
* CapSolver API 密钥
* 可选:代理(用于非无代理任务类型)
### **5. 可以直接使用代码示例吗?**
可以。替换 API 密钥、sitekey 和目标 URL,代码将按提供的内容运行。
### **6. 解决通常需要多长时间?**
通常在 1-10 秒之间,具体取决于验证码难度和环境。
### **7. 如何验证返回的令牌是否有效?**
将 `gRecaptchaResponse` 提交到网站的验证端点(文章中提供了示例)。
### **8. 支持无代理模式吗?**
是的,reCAPTCHA v2 和 v3 都有无代理任务类型,非常适合没有代理的用户。
### **9. 是否它保证 reCAPTCHA v3 的高分吗?**
它提供高质量的环境模拟,但最终分数取决于 Google 的风险评估。
### **10. 可以用于大规模或商业项目吗?**
是的。该 API 适用于大规模爬虫、自动化流水线和可扩展系统。
合规声明: 本博客提供的信息仅供参考。CapSolver 致力于遵守所有适用的法律和法规。严禁以非法、欺诈或滥用活动使用 CapSolver 网络,任何此类行为将受到调查。我们的验证码解决方案在确保 100% 合规的同时,帮助解决公共数据爬取过程中的验证码难题。我们鼓励负责任地使用我们的服务。如需更多信息,请访问我们的服务条款和隐私政策。
更多

使用 JavaScript 解决 reCAPTCHA:完整教程
尽管reCAPTCHA能有效保护网络内容,但它有时会阻碍合法活动,例如研究、数据分析或其他合规驱动的自动化任务,这些任务涉及与网络服务进行交互。

Anh Tuan
02-Dec-2025

如何用 Python 解决 reCAPTCHA v3 企业版
reCAPTCHA v3 企业版 Python 指南,包含高分技巧、代理选项和 CapSolver 集成,以实现稳定 0.7–0.9 的结果。

Lucas Mitchell
02-Dec-2025

如何使用 Node.JS 解决 reCAPTCHA v3
在本文中,我们将向您展示如何使用 Node.JS 解决 reCaptcha v3。

Adélia Cruz
28-Nov-2025

如何使用Python解决reCAPTCHA v3
学习使用 Python 和 CapSolver 解决 Google 的 reCAPTCHA v3,获得高分,并与自动化工作流集成。

Emma Foster
28-Nov-2025

CapSolver 验证码解决工具 Chrome 扩展程序
CapSolver的人工智能Chrome扩展程序以高精度和极简设置自动解决CAPTCHA——非常适合自动化。

Emma Foster
27-Nov-2025

通过最高令牌分数0.7-0.9解决reCaptcha v3 - 详解
通过Capsolver轻松解决reCaptcha v3,获得0.7到0.9之间的分数,用于可靠且高效的数字验证

Emma Foster
26-Nov-2025

