使用Selenium自动解答reCAPTCHA

作为一名自动化爱好者,我遇到过常见的绕过reCAPTCHA挑战。虽然有许多指南,分享个人经历可以让人有所启发。

我的方法是基于2Captcha手册,一项验证码识别服务,并决定进行测试。

准备工作:首先,确保您的环境配置正确。安装Python,然后下载必需组件:

  • Selenium:浏览器自动化库,可在 PyPI 获取。
  • 2Captcha Python SDK:与2Captcha API集成的官方Python SDK。可在 PyPI 获取。
  • Webdriver-manager:简化Selenium驱动程序的管理。可在 PyPI下载。

安装很简单:复制并在终端中运行所示命令。或使用通用命令:

python -m pip install 2captcha-python selenium webdriver-manager

查找Sitekey:site key是Google reCAPTCHA表单的唯一标识符。为使验证码服务识别需解答的验证码,您需要此标识符。

解答验证码:开发一个导航到目标页面并通过API解答验证码的脚本,提供解答方案代码。

提交已解答的验证码:下一步需要查找g-recaptcha-response元素,插入解答方案代码并提交表单。

下面是演示该操作的代码段:

recaptcha_response_element = driver.find_element(By.ID, 'g-recaptcha-response')
driver.execute_script(f'arguments[0].value = "{code}";', recaptcha_response_element)

submit_btn = driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]')
submit_btn.click()

自动解答reCaptcha的完整代码:

完整的Python脚本集成了所有步骤。它实例化WebDriver、加载目标页面、解答验证码、在网页中设置解答方案并提交。

完整代码如下:

from selenium.webdriver.common.by import By
from twocaptcha import TwoCaptcha
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
from selenium import webdriver

# Initialize the WebDriver
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))

# Go to the target page
captcha_page_url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.get(captcha_page_url)

# Start solving the Captcha
print("Solving Captcha")
solver = TwoCaptcha("2CAPTCHA_API_KEY")
response = solver.recaptcha(sitekey='SITE_KEY', url=captcha_page_url)
code = response['code']
print(f"Successfully solved the Captcha. The solve code is {code}")

# Insert the solved Captcha response
recaptcha_response_element = driver.find_element(By.ID, 'g-recaptcha-response')
driver.execute_script(f'arguments[0].value = "{code}";', recaptcha_response_element)

# Submit the form
submit_btn = driver.find_element(By.CSS_SELECTOR, 'button[type="submit"]')
submit_btn.click()

# Wait for the user to see the result before closing
input("Press enter to continue")
driver.close()

请随意使用,别忘了点赞感谢作者!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值