如何绕过 reCAPTCHA v2/v3:使用 Python 和 Selenium、Puppeteer、JavaScript、PHP 自动解决并通过 Google reCAPTCHA
如何绕过 reCAPTCHA
尽管人们多次指出验证码早已过时,无法达到其开发者最初期望的效果,但互联网资源的拥有者仍然继续用验证码来保护他们的项目。那么,当今最流行的验证码是什么呢?
说明:本文中将要展示的所有代码均基于验证码识别服务 2Captcha 的 API 文档编写。
就是 reCAPTCHA。reCAPTCHA V2、V3 等,早在 2007 年由谷歌创建。自第一代 reCAPTCHA 出现以来已经过去了许多年,但它仍然保持着领先地位,偶尔会被竞争对手超越,但随后又重新夺回。尽管在神经网络面前存在各种不完善之处,但 reCAPTCHA 在受欢迎程度上从未跌至第二位。
曾经有大量试图创建“reCAPTCHA 杀手”的尝试,有的成功较少,有的看似对 reCAPTCHA 构成威胁,但实际上却不值一提。然而,事实仍然是,竞争对手想要做出比 reCAPTCHA 更好、更可靠的东西,这证明了它的受欢迎程度。
reCAPTCHA 的类型
reCAPTCHA 可以分为三个版本:
- reCAPTCHA V1
- reCAPTCHA V2
- reCAPTCHA V3
它们每一个都是对前一代 reCAPTCHA 的改进版本。让我们更详细地了解一下:
如何解决 reCAPTCHA V1?简单!
第一代验证码 reCAPTCHA V1 由扫描书籍的文本片段组成,也被称为文本验证码。这是一种相当简单的验证码,对用户非常干扰和烦人。
用户被要求在一个特殊的窗口中输入文本,现在在一些旧网站上仍能看到类似的东西,但在正常的网站上已经没人再使用 reCAPTCHA V1 了。
reCAPTCHA V1 是 2007 年引入的第一个版本。它使用来自扫描书籍的扭曲文本,用户需要输入这些文本以证明自己不是机器人。该系统利用用户的输入来数字化书籍、报纸和旧的广播节目。
正是在谷歌引入第一代 reCAPTCHA 的时期,自动 reCAPTCHA 解算器开始出现,它们可以轻松绕过文本验证码。起初,它们在一个数据集上进行训练,然后投入使用,随着时间的推移,这些解算器犯的错误越来越少,为所有者节省了大量时间和金钱。
各种与验证码识别服务配合的自动 reCAPTCHA 解算器 Chrome 扩展程序很好地处理了文本验证码。现代的替代方案,如 reCAPTCHA solver GitHub,继续演进,提供了这些挑战的精炼解决方案。
reCAPTCHA V2——如何绕过图片?文本去哪了?
在意识到文本验证码已不再有效后,创建了新的 V2 验证码。它旨在缓解用户因第一代版本带来的烦恼,增强项目保护的安全性,并总体改善用户体验。
第二代 reCAPTCHA 是一个空白字段。当您点击它时,会出现一个对勾,验证码就通过了。或者可能会弹出一个带有交通信号灯的窗口,您需要找到它们。交通信号灯当然是一个比喻,您需要寻找各种对象。我相信大家都明白我在说什么。
- 复选框(“我不是机器人”):最简单的验证类型,用户只需点击复选框。系统会分析用户的行为以确定其是人还是机器人。
- 图片任务:如果系统有疑虑,它会提示用户从图片中选择特定的对象(例如,“选择所有包含交通信号灯的图片”)。
接着,出现了各种绕过 reCAPTCHA V2 的方法,如 reCAPTCHA v2 solver、reCAPTCHA v2 invisible solver,甚至是 reCAPTCHA v2 callback solver。许多自动解算器停止了正常工作,市场开始重组,并且即使到了现在也在继续发展,因为在解决 reCAPTCHA 时出现了越来越多的新参数,包括像 bypass reCAPTCHA v2 和 bypass reCAPTCHA v2 invisible 的方法。
尽管有了新意,第二代仍然极大地惹恼了普通用户,这种负面情绪并未消失。系统并不完美,这促使谷歌继续前进,创造新产品,开发者们也在努力应对如 Google reCAPTCHA v2 bypass 的挑战,并寻求自动化的解决方案。
Google reCAPTCHA V3——如何绕过看不见的东西?
谷歌在创建 reCAPTCHA 的所有阶段都追求不打扰用户的目标,但该如何实现呢?通过隐藏 reCAPTCHA。因此,第三代变得不可见。它在后台工作,持续监控用户在网站上的行为,并根据其行为分配风险评分(从 0.1 到 1.0)。这种演进导致需要能够与这种更复杂系统交互的解决方案,如各种 reCAPTCHA V3 解算器和绕过 reCAPTCHA V3 的技术。
网站可以为风险评分设置阈值,根据感知到的风险水平决定交互或验证的程度。如果网站所有者想最大化用户体验,他们会设置较低的评分,反之亦然。随着更复杂的方法的发展,一些人开始探索使用不同编程语言或工具绕过 reCAPTCHA V3 的选项。因此,谷歌给了所有者在用户体验和保护之间的选择,在这种情况下找到平衡并不那么困难。
Python 和 reCAPTCHA,Python 中最好的 reCAPTCHA 解算器是什么?
最受欢迎的编程语言无疑是 Python,当人们在互联网上搜索“如何绕过 reCAPTCHA”时,有 10 次中有 5 次会搜索到这个编程语言的代码(不包括包含“Python”一词的查询,如“如何在 Python 中绕过 reCAPTCHA”、“Python reCAPTCHA solver”或“Python reCAPTCHA bypass”等等)。
实现这一切的最简单方法是使用只需在可执行文件中连接的模块。在研究了互联网后,我确定了以下流行的模块,您可以用它们来识别 reCAPTCHA(顺便说一下,使用所有这些模块,您可以识别其他类型的验证码):
- 2captcha-python
- 2captcha-solver
- captchatools
- twocaptcha-extension-python
- Captcha-Tools
用于 2Captcha 的 Python 模块以避免 reCAPTCHA(验证码解算器 API)
来自验证码识别服务 2Captcha 的官方模块 2captcha-python,旨在轻松与其 API 集成。该模块具有高级功能,支持代理配置。该模块得到维护并定期更新,可用于解析网络资源和自动化。这个模块经常与 Python reCAPTCHA 解算器方法一起使用,对于那些想要绕过 reCAPTCHA V2 Python 的人来说,是一个强大的工具。
该服务非常适合专注于验证码识别可靠性的用户,以及需要 2Captcha 服务官方支持的用户。Python bypass reCAPTCHA 技术可以有效地使用此模块实现,特别是对于需要稳定性和支持的任务。
该模块支持异步操作。
Python 的 Google reCAPTCHA 解算器模块
一个用于解决 reCAPTCHA 和一些其他流行验证码的模块 2captcha-solver(reCAPTCHA V2、V3、FunCaptcha 和 hCaptcha)。它与前一个模块的主要区别在于它的专注度更窄(支持的验证码较少),并且在 reCAPTCHA 更新方面,其灵活响应可能不如前一个官方模块。然而,它仍然是一个有价值的选项,适用于那些寻求 Python reCAPTCHA V2 解算器或 Python reCAPTCHA V3 解算器的人。
2captcha-solver 支持代理配置,特别适用于需要高性能的任务,因为它支持异步操作,允许您同时解决多个 reCAPTCHA。
由 Python 编写的 reCAPTCHA 解算器模块
一个多功能模块 captchatools,其主要重点是支持多个验证码识别服务。该模块的功能与前两个大致相同,支持代理配置和异步操作。对于需要实现 Python reCAPTCHA 绕过或 Python Google reCAPTCHA 解算器策略的人,captchatools 提供了灵活的选项。
基于该模块允许通过多个服务集成验证码识别,它具有一个独特的功能——在验证码识别过程中对服务进行轮询。也就是说,您可以使用一个服务作为主服务,其他作为备份,当您的主服务资金耗尽,或者主服务无法完成任务时,验证码将转到备份服务并得到解决。这样,您的脚本将更加自动化,不会依赖于某个特定服务的稳定性。
通过 Python 绕过 reCAPTCHA 的模块(用于 Selenium)
这是一个专注度较窄的模块 twocaptcha-extension-python,用于与 Selenium 和 Playwright 轻松集成,支持所有类型的 reCAPTCHA。这个模块对于需要通过 Selenium 实现 Python 绕过 reCAPTCHA 或其他类似任务的人特别有用。
该模块可以在无需安装额外扩展的情况下使用,只需 API 密钥即可开始。其集成功能使其成为开发人员在 Python 解决 reCAPTCHA 项目中的绝佳选择。
与前述模块的主要区别在于,twocaptcha-extension-python 如果不使用 Selenium 或 Playwright,将难以用于自动化问题,因为它专门用于所列的服务。
通过 Python 绕过 reCAPTCHA V2/V3 的模块
一个与 captchatools 功能相似的模块 Captcha-Tools,可以称之为上述服务的替代品。也就是说,您可以选择其中之一使用。
所有特性都相同:支持多个服务,在验证码识别过程中对服务进行轮询,异步操作,代理配置。这些都在这里。唯一不同的是开发者。
我还假设,这两个服务对验证码识别服务发生的变化以及验证码开发者所做的更改的反应速度可能会比官方模块慢一些。
我还想指出,所有这些服务(不仅仅是 twocaptcha-extension-python)都可以与 Selenium 和 Playwright 一起使用,唯一的区别在于连接和同步。
| 名称 | 开发者 | 异步操作 | 代理 | reCAPTCHA 类型 | 使用场景 |
|---|---|---|---|---|---|
| 2captcha-python | 官方 | 是 | 是 | 所有 | 任何脚本 |
| 2captcha-solver | 第三方 | 是 | 是 | 所有 | 任何脚本 |
| captchatools | 第三方 | 是 | 是 | 所有 | 任何脚本 |
| twocaptcha-extension-python | 第三方 | 是 | 是 | 所有 | Selenium、Playwright |
| Captcha-Tools | 第三方 | 是 | 是 | 所有 | 任何脚本 |
如何使用 Selenium 绕过 reCAPTCHA
Selenium 是一个用于浏览器自动化的强大工具,经常用于在 Web 应用测试和自动化过程中绕过 reCAPTCHA。该框架允许您模拟用户操作,如点击、文本输入和页面导航,使其成为处理各种类型 reCAPTCHA(包括 reCAPTCHA V3)的理想选择。
有专门为与 Selenium 一起工作而设计的模块,简化了绕过 reCAPTCHA 的过程。这些模块自动化了绕过 reCAPTCHA 的任务,使处理诸如识别和规避 reCAPTCHA、处理复杂场景以及与网页上的动态内容交互的任务更加高效。将 Selenium 与这些模块结合使用,显著提高了自动化测试的效率,并优化了与绕过 reCAPTCHA 相关的流程。
如何使用 Python 绕过 reCAPTCHA(代码示例)
如果您不信任任何第三方模块,我已经准备了最通用的代码,稍加修改即可插入您的 Python 脚本,并自动解决 reCAPTCHA。以下是代码本身:
import requests
import time
API_KEY = 'Your_API_2Captcha_key'
def solve_recaptcha_v2(site_key, url):
payload = {
'key': API_KEY,
'method': 'userrecaptcha',
'googlekey': site_key,
'pageurl': url,
'json': 1
}
response = requests.post('https://2captcha.com/in.php', data=payload)
result = response.json()
if result['status'] != 1:
raise Exception(f"Error when sending captcha: {result['request']}")
captcha_id = result['request']
while True:
time.sleep(5)
response = requests.get(f"https://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}&json=1")
result = response.json()
if result['status'] == 1:
print("Captcha solved successfully.")
return result['request']
elif result['request'] == 'CAPCHA_NOT_READY':
print("The captcha has not been solved yet, waiting...")
continue
else:
raise Exception(f"Error while solving captcha: {result['request']}")
def solve_recaptcha_v3(site_key, url, action='verify', min_score=0.3):
payload = {
'key': API_KEY,
'method': 'userrecaptcha',
'googlekey': site_key,
'pageurl': url,
'version': 'v3',
'action': action,
'min_score': min_score,
'json': 1
}
response = requests.post('https://2captcha.com/in.php', data=payload)
result = response.json()
if result['status'] != 1:
raise Exception(f"Error when sending captcha: {result['request']}")
captcha_id = result['request']
while True:
time.sleep(5)
response = requests.get(f"https://2captcha.com/res.php?key={API_KEY}&action=get&id={captcha_id}&json=1")
result = response.json()
if result['status'] == 1:
print("Captcha solved successfully.")
return result['request']
elif result['request'] == 'CAPCHA_NOT_READY':
print("The captcha has not been solved yet, waiting...")
continue
else:
raise Exception(f"Error while solving captcha: {result['request']}")
# 使用 reCAPTCHA v2 的示例
site_key_v2 = 'your_site_key_v2'
url_v2 = 'https://example.com'
recaptcha_token_v2 = solve_recaptcha_v2(site_key_v2, url_v2)
print(f"Received token for reCAPTCHA v2: {recaptcha_token_v2}")
# 使用 reCAPTCHA v3 的示例
site_key_v3 = 'your_site_key_v3'
url_v3 = 'https://example.com'
recaptcha_token_v3 = solve_recaptcha_v3(site_key_v3, url_v3)
print(f"Received token for reCAPTCHA v3: {recaptcha_token_v3}")
然而,在使用提供的脚本之前,请仔细阅读服务对于识别特定类型 reCAPTCHA 的建议,以便了解此代码的工作原理。
此外,不要忘记在代码中插入您的 API 密钥,并安装必要的模块。
JavaScript 和 reCAPTCHA,如何使用模块在 JavaScript 中绕过 reCAPTCHA
第二大受欢迎的语言是 Node.js,当用户寻找绕过 reCAPTCHA 的方法时,约有 10 次中有 3 次是针对这种编程语言。
与 Python 的情况一样,最简单的方法是通过特殊的模块识别 reCAPTCHA,特别是验证码识别服务有兴趣简化客户的工作,许多都创建和维护这样的模块,以下是一些最受欢迎的,可以帮助您在 JavaScript 中绕过 reCAPTCHA。
- 2captcha
- 2captcha-javascript
- captcha-solver
- multi-captcha-solver-adapter
使用 JavaScript 绕过 reCAPTCHA 的模块
来自验证码识别服务 2Captcha 的官方模块 2captcha,支持大多数已知的验证码类型,包括 reCAPTCHA。与其他模块的重要区别在于 TypeScript 的支持,使其在开发各种应用程序时非常方便。
模块中存在所有基本设置,包括异步操作、代理设置等,这使其成为解决大多数验证码的通用模块。而且,该模块是由 2Captcha 服务创建的,可以得出其可靠性的结论。
用于 2Captcha 的 JavaScript 模块以通过 reCAPTCHA
这也是来自 2Captcha 服务的官方模块,用于识别主要的验证码类型(2captcha-javascript),支持与前一个模块相同的所有设置(除了 TypeScript 支持),但我觉得它更强调集成的简便性和快速启动。
它比前一个更简单,并且像它的前身一样,解决了主要任务——绕过 reCAPTCHA。因此,如果您只是需要您的脚本(程序)用 Node.js 编写来绕过 reCAPTCHA,使用这个模块;如果您需要更深入的集成,请仔细查看前一个模块。
用于绕过 Google reCAPTCHA 响应的模块
该模块专为与 Puppeteer 集成而定制,允许您解决 reCAPTCHA 和其他流行的验证码。
除了该模块专为 Puppeteer 定制外,它还提供了选择解验证码服务提供商的机会,这也允许您在过程中对服务进行轮询(如在 Python 模块部分所述)。
应注意的是,前两个模块可以集成到 Puppeteer 中,但 captcha-solver 提供了一个开箱即用的解决方案,即您设置并忘记它,而在使用 2captcha 和 2captcha-javascript 的情况下,可能需要手动处理结果或配置此处理。
用于跳过 reCAPTCHA 的 JavaScript 模块
一个来自第三方开发者的模块,支持 reCAPTCHA 的解决(multi-captcha-solver-adapter),以及一些其他流行的验证码。模块中集成了几个验证码识别服务,允许您配置对服务的轮询(将一个设为主要的,其余设为备份)。
该服务是 2captcha 和 2captcha-javascript 的替代品,但由于模块不受官方服务支持,可能在更新方面会有延迟,但其功能与竞争对手类似。
| 名称 | 开发者 | 异步操作 | 代理 | reCAPTCHA 类型 | 使用场景 |
|---|---|---|---|---|---|
| 2captcha | 官方 | 是 | 是 | 所有 | 任何脚本 |
| 2captcha-javascript | 官方 | 是 | 是 | 所有 | 任何脚本 |
| captcha-solver | 第三方 | 是 | 是 | 所有 | Puppeteer |
| multi-captcha-solver-adapter | 第三方 | 是 | 是 | 所有 | 任何脚本 |
如何在 Node.js 中绕过 reCAPTCHA
与 Python 的情况一样,对于那些不喜欢现成解决方案的人,下面是使用 Node.js 编程语言解决验证码的脚本。我提醒您不要忘记安装代码运行所需的模块,包括:
axios
您可以使用以下命令安装它:
npm install axios
以下是代码本身:
const axios = require('axios');
const sleep = require('util').promisify(setTimeout);
const API_KEY = 'YOUR_API_KEY_2CAPTCHA'; // 用您的真实 API 密钥替换
// 解决 reCAPTCHA V2 的函数
async function solveReCaptchaV2(siteKey, pageUrl) {
try {
// 发送验证码解决请求
const sendCaptchaResponse = await axios.post(`http://2captcha.com/in.php`, null, {
params: {
key: API_KEY,
method: 'userrecaptcha',
googlekey: siteKey,
pageurl: pageUrl,
json: 1
}
});
if (sendCaptchaResponse.data.status !== 1) {
throw new Error(`Error when sending captcha: ${sendCaptchaResponse.data.request}`);
}
const requestId = sendCaptchaResponse.data.request;
console.log(`Captcha sent, request ID: ${requestId}`);
// 等待验证码解决
while (true) {
await sleep(5000); // 等待 5 秒再发送下一个请求
const getResultResponse = await axios.get(`http://2captcha.com/res.php`, {
params: {
key: API_KEY,
action: 'get',
id: requestId,
json: 1
}
});
if (getResultResponse.data.status === 1) {
console.log('Captcha solved successfully.');
return getResultResponse.data.request;
} else if (getResultResponse.data.request === 'CAPCHA_NOT_READY') {
console.log('The captcha has not been solved yet, waiting...');
} else {
throw new Error(`Error while solving captcha: ${getResultResponse.data.request}`);
}
}
} catch (error) {
console.error(`An error occurred: ${error.message}`);
}
}
// 解决 reCAPTCHA V3 的函数
async function solveReCaptchaV3(siteKey, pageUrl, action = 'verify', minScore = 0.3) {
try {
// 发送验证码解决请求
const sendCaptchaResponse = await axios.post(`http://2captcha.com/in.php`, null, {
params: {
key: API_KEY,
method: 'userrecaptcha',
googlekey: siteKey,
pageurl: pageUrl,
version: 'v3',
action: action,
min_score: minScore,
json: 1
}
});
if (sendCaptchaResponse.data.status !== 1) {
throw new Error(`Error when sending captcha: ${sendCaptchaResponse.data.request}`);
}
const requestId = sendCaptchaResponse.data.request;
console.log(`Captcha sent, request ID: ${requestId}`);
// 等待验证码解决
while (true) {
await sleep(5000); // 等待 5 秒再发送下一个请求
const getResultResponse = await axios.get(`http://2captcha.com/res.php`, {
params: {
key: API_KEY,
action: 'get',
id: requestId,
json: 1
}
});
if (getResultResponse.data.status === 1) {
console.log('Captcha solved successfully.');
return getResultResponse.data.request;
} else if (getResultResponse.data.request === 'CAPCHA_NOT_READY') {
console.log('The captcha has not been solved yet, waiting...');
} else {
throw new Error(`Error while solving captcha: ${getResultResponse.data.request}`);
}
}
} catch (error) {
console.error(`An error occurred: ${error.message}`);
}
}
// 使用 reCAPTCHA V2 的示例
(async () => {
const siteKeyV2 = 'YOUR_SITE_KEY_V2'; // 用真实的站点密钥替换
const pageUrlV2 = 'https://example.com'; // 用真实的页面 URL 替换
const tokenV2 = await solveReCaptchaV2(siteKeyV2, pageUrlV2);
console.log(`Received token for reCAPTCHA V2: ${tokenV2}`);
})();
// 使用 reCAPTCHA V3 的示例
(async () => {
const siteKeyV3 = 'YOUR_SITE_KEY_V3'; // 用真实的站点密钥替换
const pageUrlV3 = 'https://example.com'; // 用真实的页面 URL 替换
const action = 'homepage'; // 替换为相应的操作
const minScore = 0.5; // 设置最低允许的评分
const tokenV3 = await solveReCaptchaV3(siteKeyV3, pageUrlV3, action, minScore);
console.log(`Received token for reCAPTCHA V3: ${tokenV3}`);
})();
此外,不要忘记将您的 API 密钥插入代码中,代替
YOUR_API_KEY_2CAPTCHA
PHP 和 reCAPTCHA,如何使用模块在 PHP 中绕过 reCAPTCHA
第三大受欢迎的语言是 PHP。我建议像前两种情况一样从模块开始,以代码结束。那么,PHP 中解决 reCAPTCHA 最流行的模块是:
- 2captcha-php
- php-captcha-solver
使用 reCAPTCHA 绕过 API 编写的 PHP 模块
这个模块(2captcha-php)使您可以轻松地将 2Captcha API 集成到您的 PHP 验证码解决代码中。它支持诸如 reCAPTCHA、FunCaptcha、GeeTest 等类型的验证码。该模块旨在快速设置和使用,包括支持文本验证码和 reCAPTCHA V3。它还支持处理图像和音频文件的各种方法。对于那些想要在 PHP 中绕过 reCAPTCHA 的人来说,该模块提供了可靠而简单的解决方案。
用于在 Chrome 中绕过 reCAPTCHA 的模块
一个提供友好接口以与各种验证码服务集成的模块,包括 2Captcha(php-captcha-solver)。它支持各种类型的验证码,如 reCAPTCHA 和 FunCaptcha。该模块专注于易用性和快速设置。如果您希望使用 PHP 绕过 reCAPTCHA,这个工具也是一个不错的选择。
实际上,如果我们比较这两个模块,第一个是由 2Captcha 服务开发的,第二个是由开发者社区制作的,两者都解决了相同的任务,具有大致相同的功能集。然而,第二个模块在更新方面可能不如官方模块及时。
如何在 PHP 中识别 reCAPTCHA
对于那些不习惯使用现成模块的人,这里是直接集成的代码。代码使用标准的 PHP 函数,如 file_get_contents 和 json_decode,这里是代码本身:
<?php
function solveRecaptchaV2($apiKey, $siteKey, $url) {
$requestUrl = "http://2captcha.com/in.php?key={$apiKey}&method=userrecaptcha&googlekey={$siteKey}&pageurl={$url}&json=1";
$response = file_get_contents($requestUrl);
$result = json_decode($response, true);
if ($result['status'] != 1) {
throw new Exception("Error when sending captcha: " . $result['request']);
}
$captchaId = $result['request'];
while (true) {
sleep(5);
$resultUrl = "http://2captcha.com/res.php?key={$apiKey}&action=get&id={$captchaId}&json=1";
$response = file_get_contents($resultUrl);
$result = json_decode($response, true);
if ($result['status'] == 1) {
return $result['request'];
} elseif ($result['request'] == 'CAPCHA_NOT_READY') {
continue;
} else {
throw new Exception("Error while solving captcha: " . $result['request']);
}
}
}
function solveRecaptchaV3($apiKey, $siteKey, $url, $action = 'verify', $minScore = 0.3) {
$requestUrl = "http://2captcha.com/in.php?key={$apiKey}&method=userrecaptcha&googlekey={$siteKey}&pageurl={$url}&version=v3&action={$action}&min_score={$minScore}&json=1";
$response = file_get_contents($requestUrl);
$result = json_decode($response, true);
if ($result['status'] != 1) {
throw new Exception("Error when sending captcha: " . $result['request']);
}
$captchaId = $result['request'];
while (true) {
sleep(5);
$resultUrl = "http://2captcha.com/res.php?key={$apiKey}&action=get&id={$captchaId}&json=1";
$response = file_get_contents($resultUrl);
$result = json_decode($response, true);
if ($result['status'] == 1) {
return $result['request'];
} elseif ($result['request'] == 'CAPCHA_NOT_READY') {
continue;
} else {
throw new Exception("Error while solving captcha: " . $result['request']);
}
}
}
// 使用 reCAPTCHA V2 的示例
$apiKey = 'YOUR_API_KEY_2CAPTCHA';
$siteKeyV2 = 'YOUR_SITE_KEY_V2';
$urlV2 = 'https://example.com';
try {
$tokenV2 = solveRecaptchaV2($apiKey, $siteKeyV2, $urlV2);
echo "Received token for reCAPTCHA V2: {$tokenV2}\n";
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
}
// 使用 reCAPTCHA V3 的示例
$siteKeyV3 = 'YOUR_SITE_KEY_V3';
$urlV3 = 'https://example.com';
$action = 'homepage'; // 指定相应的操作
$minScore = 0.5; // 指定最低允许的评分
try {
$tokenV3 = solveRecaptchaV3($apiKey, $siteKeyV3, $urlV3, $action, $minScore);
echo "Received token for reCAPTCHA V3: {$tokenV3}\n";
} catch (Exception $e) {
echo "Error: " . $e->getMessage() . "\n";
}
?>
我还提醒您需要在代码中替换一些参数,特别是:
$apiKey = 'YOUR_API_KEY_2CAPTCHA';
$siteKeyV2 = 'YOUR_SITE_KEY_V2';
$urlV2 = 'https://example.com';
因此,使用给出的示例,您可以解决与 reCAPTCHA 识别相关的大多数问题。如果还有任何问题,可以在评论中提问!