如何使用Python和Selenium解决reCAPTCHA

devtools/2024/9/23 6:29:15/

在这里插入图片描述

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
python"># 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)returnprint(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)returntoken = capsolver()
print(token)
  • Python reCAPTCHA V3
python"># 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/"  # 你的目标网站的页面urldef 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)returnprint(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


http://www.ppmy.cn/devtools/84828.html

相关文章

java题目之数字加密以及如何解密

public class Main6 {public static void main(String[] args) {// 某系统的数字密码&#xff08;大于0&#xff09;&#xff0c;比如1983&#xff0c;采用加密方式进行传输//定义了一个静态数组int []arr{1,9,8,3};//1.加密//先给每位数加上5for (int i 0; i <arr.length …

HarmonyOS 状态管理(一)

1. HarmonyOS 状态管理 1.1. 说明 官方文档&#xff08;https://developer.huawei.com/consumer/cn/doc/harmonyos-guides-V5/arkts-state-management-V5&#xff09; 1.1.1. 状态管理&#xff08;V1稳定版&#xff09; 状态管理&#xff08;V1稳定版&#xff09;提供了多种…

3.2、数据结构-数组、矩阵和广义表

数组结构 数组是定长线性表在维度上的扩展,即线性表中的元素又是一个线性表。N维数组是一种“同构”的数据结构,其每个数据元素类型相同、结构一致。 一个m行n列的数组表示如下: 其可以表示为行向量形式&#xff08;一行一行的数据&#xff09;或者列向量形式&#xff08;一…

【Python】主字符串中查找子字符串:滑动窗口、正则表达式、递归检查

一、题目 In this challenge, the user enters a stirng and a substring. You have to print the number of times that the substring occurs in the given string. String traversal will tack place from left to right, not from right to lef. NOTE: String letters ar…

uniapp实现表格的多选功能

记录一下最近在做一个的表格数据多选功能。需求大致为支持多选、支持跨分页的连续选择、支持通过查询框后手动选择数据&#xff08;我是后端选手&#xff0c;前端不太熟悉单纯记录~&#xff09;。 主要思路为&#xff1a; 将table中的唯一id&#xff0c;存入数组tableIds中进…

zyx青岛实训day14 7/25

Git 一种分布式版本控制系统&#xff0c;用于跟踪和管理代码的变更 一&#xff0e;Git的主要功能&#xff1a; 二&#xff0e;准备git机器 修改静态ip&#xff0c;主机名 三&#xff0e;git仓库的建立&#xff1a; 1.安装git [rootgit ~]# yum -y install git 2.创建一个…

Java整理11

1、Web乱码及路径问题 建多级目录Package中&#xff1a;a.b.cDirectory中&#xff1a;a/b/c 当前页面中所有不加任何修饰的相对路径前&#xff0c;会自动加上href中的内容&#xff0c;将绝对路径问题转换成相对路径问题 <head><base href" "> </he…

【HarmonyOS】应用设置屏幕常亮

【HarmonyOS】应用设置屏幕常亮 一、问题背景&#xff1a; 金融类或钱包场景的应用APP&#xff0c;对于付款码&#xff0c;扫一扫等场景都会对屏幕设置常亮。防止屏幕长时间不操作&#xff0c;自动息屏。 目前这种场景的需求也是非常有必要的&#xff0c;也是行业内默认的处理…