///
Python ReCaptcha v.3
January 20, 2025

How to Solve ReCaptcha v3 in Python Using Selenium & CapMonster Cloud

  • To solve this type of captcha, create a ".env" 文件,其中包含以下值:

CAPMONSTER_API_KEY=YOUR_API_KEY
WEBSITE_KEY=6Le0xVgUAAAAAIt20XEB4rVhYOODgTl00d8juDob
WEBSITE_URL=https://lessons.zennolab.com/captchas/recaptcha/v3.php?level=beta

 

  • 通过 pip install (请参见 Python ReCaptcha v.2),将它们导入到您的项目中,然后将验证码任务提交到 CapMonster 云服务器:

导入 asyncio
导入 os
from dotenv import load_dotenv
from selenium import webdriver
from capmonstercloudclient import CapMonsterClient, ClientOptions
from capmonstercloudclient.requests import RecaptchaV3ProxylessRequest
from selenium.webdriver.common.by import By

load_dotenv()

CAPMONSTER_API_KEY = os.getenv('CAPMONSTER_API_KEY')
WEBSITE_KEY = os.getenv('WEBSITE_KEY')
WEBSITE_URL = os.getenv('WEBSITE_URL')

async def solve_recaptcha():
    # 初始化 CapMonster 客户端
    client_options = ClientOptions(api_key=CAPMONSTER_API_KEY)
    cap_monster_client = CapMonsterClient(options=client_options)

    # 初始化 Selenium WebDriver
    options = webdriver.ChromeOptions()
    options.headless = False
    browser = webdriver.Chrome(options=options)
    print('Browser initialized!')

    try:
       # 进入指定页面
       browser.get(WEBSITE_URL)
       print('Browser switched to the page with captcha!')

       # 创建解决 reCAPTCHA V3 无验证码类型的请求
       recaptcha_request = RecaptchaV3ProxylessRequest(
         websiteUrl=WEBSITE_URL、
         websiteKey=WEBSITE_KEY、
        action='verify'、
        min_score=0.7、
         )

        # 使用 CapMonster 解决重新验证码问题
       task_result = await cap_monster_client.solve_captcha(recaptcha_request)
       print('reCAPTCHA V3 solved:', task_result)

       # 安装用户代理(可选)
       user_agent = 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0 Safari/537.36'
       browser.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": user_agent})

       # 将结果插入页面
       script = f'document.querySelector(\'#g-recaptcha-response-100000\').style.display = "block";'
       script += f'document.querySelector(\'#g-recaptcha-response-100000\').style.visibility = "visible";'
        script += f'document.querySelector(/g-recaptcha-response-100000\').value = "{task_result}";'
       browser.execute_script(script)
       print('The result is inserted into the page!')

       # 点击按钮检查
       submit_button = browser.find_element(By.ID, 'v3_submit')
      submit_button.click()
       print('"Check" button is pressed!')

       # 暂停 10 秒
       await asyncio.sleep(10)

    finally:
       # 关闭浏览器
      browser.quit()

# 运行异步函数来解决 reCAPTCHA 问题
asyncio.run(solve_recaptcha())

 

 

代码说明: 

 

加载环境变量: load_dotenv().加载环境变量:load_dotenv():该函数从 .env 文件中加载环境变量的值,并将其提供给程序使用。

 

从环境中初始化变量: CAPMONSTER_API_KEY = os.getenv('CAPMONSTER_API_KEY').在此,我们将从环境变量中获取 CAPMONSTER_API_KEY 变量的值。

 

WEBSITE_KEY = os.getenv('WEBSITE_KEY'): 同样,我们将获得 WEBSITE_KEY 变量的值。

WEBSITE_URL = os.getenv('WEBSITE_URL'): 我们将得到 WEBSITE_URL 变量的值。38;margin-bottom:0pt;margin-top:0pt;" dir="ltr">async def solve_recaptcha(): 声明异步函数 solve_recaptcha。

 

初始化 CapMonster 客户端和 Selenium WebDriver: client_options = ClientOptions(api_key=CAPMONSTER_API_KEY)。创建一个对象,其中包含用于初始化 CapMonster 客户端的选项。

 

: 使用选项初始化 CapMonster 客户端。

 

options = webdriver.ChromeOptions(): 创建选项对象以配置 Chrome Web 驱动程序。

 

options.headless = False: 设置浏览器可见性模式(False - 可见,True - 不可见)。38;margin-bottom:0pt;margin-top:0pt;" dir="ltr">browser = webdriver.Chrome(options=options): 使用选项初始化 Chrome Web 驱动程序。

 

Working with a web page: browser.get(WEBSITE_URL).转到指定的网页。

 

recaptcha_request = RecaptchaV3ProxylessRequest(...)

&bsp;

: 为 reCAPTCHA V3 Proxyless 解决方案创建请求对象。38;margin-bottom:0pt;margin-top:0pt;" dir="ltr">task_result = await cap_monster_client.solve_captcha(recaptcha_request): 使用 CapMonster 解决 reCAPTCHA。

 

user_agent = '....': 设置用户代理(标识浏览器和平台的字符串)。38;margin-bottom:0pt;margin-top:0pt;" dir="ltr">browser.execute_cdp_cmd('Network.setUserAgentOverride', {"userAgent": user_agent}): 使用 Chrome DevTools 协议安装用户代理

 

script = '....'

 

browser.execute_script(script): 在当前浏览器页面的上下文中执行 JavaScript 代码。

 

submit_button = browser.find_element(By.ID, 'v3_submit'): 通过页面上的 ID 搜索 HTML 元素。38;margin-bottom:0pt;margin-top:0pt;" dir="ltr">submit_button.click(): 模拟点击找到的按钮。

 

完成工作: await asyncio.sleep(10).异步暂停 10 秒。

浏览器。quit():关闭网络驱动程序和浏览器窗口。

 

Running an asynchronous function: asyncio.run(solve_recaptcha()).在异步环境中运行异步 solve_recaptcha 函数。

 

 

运行脚本并成功执行: 

none provided

Note:我们在此提醒您,该产品用于在您自己的网站和您拥有合法访问权限的网站上自动进行测试。

ItGuy
geear
面向软件开发者的联盟计划
通过用户识别验证码的消费获取高达 30% 的返佣。
✅ 请求已发送
感谢您对我们的合作伙伴计划感兴趣!我们将在 7 个工作日内与您联系。
请求加入
填写表格以提交申请加入合作伙伴计划。
更多文章