如何使用Python和Selenium解决reCAPTCHA

在这里插入图片描述

CAPTCHA已成为我们日常在线活动中重要的防御线。无论是登录账户、提交表单还是进行在线支付,CAPTCHA都在幕后保护我们的安全。然而,CAPTCHA有时可能会成为自动化的绊脚石,阻碍自动化测试、数据收集和效率提升。那么,如何以合法合理的方式绕过这些复杂的CAPTCHA挑战呢?在本文中,我们将深入探讨如何使用Python和Selenium解决reCAPTCHA,为开发人员和数据科学家提供一条高效的解决方案。

什么是reCAPTCHA?

reCAPTCHA是由Google开发的一项安全服务,用于保护网站免受垃圾邮件和滥用。它能区分人类用户和自动化机器人,确保表单提交、账户创建和登录尝试等交互是由真实的人执行的。reCAPTCHA使用各种挑战来验证用户的真实性,从简单的复选框到复杂的图像识别都有。

反复解决烦人的验证码却总是失败?使用CapSolver的AI驱动自动网页解锁技术,体验无缝的自动验证码解决方案!

获取顶级验证码解决方案的优惠码; CapSolver: WEBS。兑换后,每次充值都可获得额外5%的奖励,无限制。

reCAPTCHA的类型

  1. reCAPTCHA v2 (复选框): 用户会看到一个标有"我不是机器人"的复选框。点击复选框后,如果系统怀疑用户可能是机器人,可能会要求用户解决基于图像的挑战。
    [外链图片转存中…(img-adPpGWjx-1721887563579)]

  2. reCAPTCHA v2 (隐形): 这个版本不显示可见的复选框。它在后台运行,只有在检测到可疑活动时才触发挑战。

  3. reCAPTCHA v3: 与之前的版本不同,reCAPTCHA v3不会用挑战打断用户。相反,它根据用户行为分配一个分数,让网站管理员决定采取必要的行动。

  4. reCAPTCHA Enterprise: 一个为大型企业设计的更高级版本,提供更高的安全性和可定制性。

为什么要解决reCAPTCHA?

在某些合法场景下,解决reCAPTCHA是必要的:

  1. 自动化测试: 开发人员和测试人员可能需要解决reCAPTCHA来自动化测试他们的Web应用程序。
  2. 数据抓取: 当抓取自己的数据或在有权限的网站上执行任务时,解决reCAPTCHA可能至关重要。
  3. 无障碍访问: 为残障用户自动化重复任务或提供替代访问方法可能需要解决reCAPTCHA。
  4. 效率: 自动化使用reCAPTCHA的网站上的交互可以显著提高生产力和效率。

如何使用CapSolver解决reCAPTCHA

reCAPTCHA可能会给合法的自动化任务(如数据收集、测试自动化等)造成许多障碍。因此,为了彻底解决这些问题,建议开发人员使用第三方解决服务,如CapSolver。它可以自动解决多种类型的CAPTCHA问题,帮助开发人员克服这些障碍,使任务顺利运行。

1. 前提条件

  • 确认目标网站使用reCAPTCHA
    你通常可以在页面上看到明显的特征

在这里插入图片描述

在请求日志中,你还会看到https://www.google.com/recaptcha****

  • 获取网站密钥
    对于V2和V3,你可以在浏览器请求日志中搜索/recaptcha/api2/reload?k=6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf,其中k=后面的值就是我们需要的密钥

  • 区分V2和V3
    V2和V3有不同的处理方法。V2需要图像识别来选择答案,而V3相对不引人注目;但是,V3在验证时需要提供一个Action。根据之前获得的密钥值,搜索响应页面,你会在页面中找到Action值
    在这里插入图片描述

  • 调用CapSolver服务

2. 区分reCAPTCHA版本

  • 在浏览器请求日志中,你可以看到对于V2,在/recaptcha/api2/reload请求之后,通常需要一个/recaptcha/api2/userverify请求来获取通过令牌;
  • 对于V3,/recaptcha/api2/reload请求可以直接获取通过令牌

3. CapSolver API调用的完整示例

  • Python reCAPTCHA V2
# pip install requests
import requests
import time

# TODO: 设置你的配置
api_key = "YOUR_API_KEY"  # 你的capsolver api密钥
site_key = "6Le-wvkSAAAAAPBMRTvw0Q4Muexq9bi0DJwx_mJ-"  # 你的目标网站的site key
site_url = "https://www.google.com/recaptcha/api2/demo"  # 你的目标网站的页面url

# site_key = "6LelzS8UAAAAAGSL60ADV5rcEtK0x0lRsHmrtm62"
# site_url = "https://mybaragar.com/index.cfm?event=page.SchoolLocatorPublic&DistrictCode=BC45"


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)

  • Python reCAPTCHA V3
# pip install requests
import requests
import time

# TODO: 设置你的配置
api_key = "YOUR_API_KEY"  # 你的capsolver api密钥

site_key = "6LcR_okUAAAAAPYrPe-HK_0RULO1aZM15ENyM-Mf"  # 你的目标网站的site key
site_url = "https://antcpt.com/score_detector/"  # 你的目标网站的页面url


def capsolver():
    payload = {
        "clientKey": api_key,
        "task": {
            "type": 'ReCaptchaV3TaskProxyLess',
            "websiteKey": site_key,
            "websiteURL": site_url,
            "pageAction": "homepage",
        }
    }
    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

# 验证分数
def score_detector(token):
    headers = {
        "accept": "application/json, text/javascript, */*; q=0.01",
        "accept-language": "fr-CH,fr;q=0.9",
        "content-type": "application/json",
        "origin": "https://antcpt.com",
        "priority": "u=1, i",
        "referer": "https://antcpt.com/score_detector/",
        "sec-ch-ua": "\"Not/A)Brand\";v=\"8\", \"Chromium\";v=\"126\", \"Google Chrome\";v=\"126\"",
        "sec-ch-ua-mobile": "?0",
        "sec-ch-ua-platform": "\"macOS\"",
        "sec-fetch-dest": "empty",
        "sec-fetch-mode": "cors",
        "sec-fetch-site": "same-origin",
        "user-agent": "Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_7) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 Safari/537.36",
        "x-requested-with": "XMLHttpRequest"
    }
    url = "https://antcpt.com/score_detector/verify.php"
    data = {
        "g-recaptcha-response": token
    }
    data = json.dumps(data, separators=(',', ':'))
    response = requests.post(url, headers=headers, data=data)

    print(response.json())
    print(response)

token = capsolver()
print(token)

...
...
{
    'success': True, 
    'challenge_ts': '2024-07-19T10:50:56Z', 
    'hostname': 'antcpt.com', 
    'score': 0.7, 
    'action': 'homepage'
}

结论

使用Python、Selenium和CapSolver等服务来解决reCAPTCHA为合法的自动化任务提供了一个有效的解决方案。这种方法简化了自动化测试、数据收集和改善可访问性等过程,同时显著提高了效率。

需要记住的要点:

  1. 了解不同类型的reCAPTCHA及其机制。
  2. 正确识别reCAPTCHA版本并获取必要的网站密钥。
  3. 利用CapSolver等第三方服务来简化流程。
  4. 使用提供的Python脚本作为你特定需求的起点。

虽然这些技术很强大,但请始终负责任地使用它们,并遵守网站的服务条款。随着网络安全的不断发展,及时了解最新的CAPTCHA解决方法对于保持高效的自动化流程至关重要。

CapsolverCN官 方代理交流扣 群:497493756

  • 7
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PythonSelenium库可以用于处理人机验证中的reCAPTCHAreCAPTCHA是一种常见的验证码机制,用于验证用户是否为真实用户而不是机器人。 要使用Selenium处理reCAPTCHA,你需要以下步骤: 1. 安装Selenium库:在Python环境中,你可以使用pip命令来安装Selenium库。例如,在命令行中运行`pip install selenium`即可安装。 2. 下载并配置WebDriver:Selenium需要一个WebDriver来控制浏览器。你可以选择不同的浏览器驱动程序,如ChromeDriver或GeckoDriver。下载并配置适合你浏览器版本的WebDriver,并将其添加到系统路径中。 3. 导入Selenium库:在Python脚本中,你需要导入Selenium库以便使用其中的函数和类。 4. 打开浏览器:使用Selenium的WebDriver类创建一个浏览器实例。例如,对于Chrome浏览器,你可以使用`webdriver.Chrome()`来创建一个Chrome浏览器实例。 5. 导航到目标网页:使用WebDriver实例的`get()`方法导航到包含reCAPTCHA的目标网页。 6. 处理reCAPTCHA:一旦页面加载完成,你可以使用Selenium的定位方法(如`find_element_by_xpath()`或`find_element_by_css_selector()`)找到reCAPTCHA元素,并模拟用户操作来解决reCAPTCHA。这可能涉及到点击、拖动滑块或输入文本等操作。 7. 提交验证:完成reCAPTCHA后,你可以继续进行其他操作或提交表单。 下面是一些相关问题: 1. 什么是Selenium? 2. 如何安装Selenium库? 3. 如何配置WebDriver? 4. 如何使用Selenium打开浏览器并导航到网页? 5. 如何使用Selenium处理reCAPTCHA? 6. 还有其他的人机验证方法吗? 7. 有没有示例代码来演示如何使用Selenium处理reCAPTCHA
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值