0


如何使用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 requestsimport 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"defcapsolver():
    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")ifnot task_id:print("创建任务失败:", res.text)returnprint(f"获得taskId: {task_id} / 正在获取结果...")whileTrue:
        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 requestsimport 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/"# 你的目标网站的页面urldefcapsolver():
    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")ifnot task_id:print("创建任务失败:", res.text)returnprint(f"获得taskId: {task_id} / 正在获取结果...")whileTrue:
        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# 验证分数defscore_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

标签: python selenium java

本文转载自: https://blog.csdn.net/weixin_68994939/article/details/140688482
版权归原作者 ForRunner123 所有, 如有侵权,请联系我们删除。

“如何使用Python和Selenium解决reCAPTCHA”的评论:

还没有评论