如何在 Selenium Python 中解决验证码 | 2024 完整指南

在这里插入图片描述
由于在进行网络自动化时遇到验证码是让许多人感到不知所措的问题。这些验证码专为区分人类用户和自动化脚本而设计,对于使用Selenium进行网络爬虫或自动化任务而言,无疑是一个巨大的挑战。2024年的完全指南将为您提供全面的解决方案,帮助您高效地应对这些障碍,尤其是两种常见的CAPTCHA类型,funcaptcha和recaptcha,当然我们还需要整合第三方CAPTCHA解决方案工具CapSolver。

目录

  1. 什么是CAPTCHA
  2. CAPTCHA示例
  3. 先决条件
  4. 方法1:通过Capsolver API解决CAPTCHA
    • 理解HTML表单
    • 处理隐藏的Textarea元素
    • 获取Token
    • 使用Capsolver Python SDK获取Token
    • 在Selenium中使用Token
  5. 方法2:使用Capsolver扩展解决CAPTCHA
    • 下载和重打包Capsolver扩展

奖励代码

领取您的奖励代码,用于顶级验证码解决方案;CapSolver:WEBS。兑换后,每次充值都将额外获得5%的奖励,无限次数。

在这里插入图片描述

什么是CAPTCHA

CAPTCHA要求用户执行特定任务,例如输入图像中显示的文本或点击符合特定标准的一组图像。这些任务旨在验证用户是人类还是机器人。由于这些任务的动态性质,只有通过人类认知和正确信息解释才能成功完成,这是人工智能常常遇到困难的领域。

某些CAPTCHA变体还支持视力受损的人士,通过生成音频而不是图像来进行验证。

CAPTCHA示例

Google的开源CAPTCHA小部件reCAPTCHA广泛使用,因为它支持各种主要的屏幕阅读器,如JAWS和NVDA,适用于Windows OS上的IE、Edge或Chrome,Chrome OS上的ChromeVox,以及Mac OS上的Safari和Chrome。
在这里插入图片描述

此外,FunCaptcha是另一种常见的CAPTCHA类型,用户需要点击特定的图像,例如选择所有包含特定对象的图像,以完成验证。正常的人类用户通常需要花费长达一分钟的时间来完成复杂的FunCaptcha验证。这两种类型的CAPTCHA有效地防止了自动化脚本攻击,并被许多网站广泛采用。
在这里插入图片描述

先决条件

  • Google Chrome:安装最新版本的Chrome,因为我们将通过代码与Chrome进行交互。
  • Python:确保已安装Python,并且版本为3或更高。不推荐使用3以下的版本。
  • Selenium:Python的自动化工具Selenium的库。
  • Capsolver Python SDK:官方Capsolver Python SDK,可轻松与Capsolver集成。
  • Capsolver Extension:官方Capsolver Chrome扩展,可以自动为您解决各种挑战。

方法1:通过Capsolver API解决CAPTCHA

我们将使用此演示页面作为示例,演示如何在Python Selenium中使用Capsolver API解决reCAPTCHA。

理解HTML表单

在开始之前,我们需要了解HTML表单的基础知识。观察此页面并打开开发者工具。手动解决reCAPTCHA,然后点击提交按钮。您将看到发送的POST请求,提交了三个字段:ex-aex-bg-recaptcha-response,如下图所示:

在这里插入图片描述

这三个字段对应于初始HTML源代码中表单下的两个输入元素和一个文本框元素,如下图所示:
在这里插入图片描述

我们的方法是使用Capsolver API解决reCAPTCHA,获取Token,将其输入到文本区域元素中,然后点击提交按钮以提交表单。

处理隐藏的Textarea元素

在将Token输入到文本区域元素时,请注意页面上的文本区域元素具有CSS样式display: none,这意味着文本区域是不可见的。在这种情况下,如果您尝试直接在Selenium中向文本区域元素输入内容,将会抛出错误:
selenium.common.exceptions.ElementNotInteractableException: Message: element not interactable,因为此时文本区域元素是不可交互的。为了解决这个问题,我们需要将文本区域元素的CSS样式设置为display: block。具体的操作方法将在稍后的代码中体现。

获取Token

使用Capsolver API需要我们提供websiteKey,可以通过在页面源代码中搜索关键字data-sitekey来找到:
在这里插入图片描述

使用Capsolver Python SDK获取Token

以下是使用Capsolver Python SDK获取Token的方法:

import capsolvercapsolver.api_key = "your api key"
solution = capsolver.solve({"type": "ReCaptchaV2TaskProxyLess","websiteKey": "6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9","websiteURL": "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php",
})
token = solution["gRecaptchaResponse"]
print(token)

在Selenium中使用Token

接下来,我们需要在Selenium中使用Token。在Selenium中有两个关键操作:

  • 使文本区域元素可见,以便可以与之交互并将Token输入其中。
  • 定位提交按钮并点击以提交表单。

这些操作涉及到元素的定位和交互。如果您对Selenium不太熟悉,可以参考使用Selenium和Python进行网页抓取 | 在网页抓取时解决CAPTCHA

结合Capsolver API,完整的代码如下所示:

import capsolver
from selenium import webdriver
from selenium.webdriver.common.by import By# 初始化Chrome选项对象并访问目标网站
chrome_options = webdriver.ChromeOptions()
driver = webdriver.Chrome(options=chrome_options)
url = "https://recaptcha-demo.appspot.com/recaptcha-v2-checkbox.php"
driver.get(url)# 调用Capsolver API解决ReCaptcha
capsolver.api_key = "your api key"
solution = capsolver.solve({"type": "ReCaptchaV2TaskProxyLess","websiteKey": "6LfW6wATAAAAAHLqO2pb8bDBahxlMxNdo9g947u9","websiteURL": url,
})
token = solution["gRecaptchaResponse"]
print(f"Token returned by capsolver: {token}")# 修改Textarea的display样式属性为block,使其可见
driver.execute_script("document.getElementById('g-recaptcha-response').style.display = 'block';")
# 模拟向Textarea输入Token
textarea = driver.find_element(By.ID, "g-recaptcha-response")
textarea.send_keys(token)# 模拟点击并提交表单
submit_btn = driver.find_element(By.CSS_SELECTOR, "button[type='submit']")
submit_btn.click()
input("按任意键退出.")
driver.close()

以上代码演示了如何在Python Selenium中使用Capsolver API解决reCAPTCHA。成功解决后,您将看到以下页面:
在这里插入图片描述

方法2:使用Capsolver扩展解决CAPTCHA

方法1涉及使用Capsolver API解决CAPTCHA,包含许多复杂的操作。如果您正在寻找一种更简单、更方便的解决CAPTCHA的方式,那么Capsolver扩展是您的最佳选择。它可以轻松集成到Chrome和Firefox等浏览器中。Capsolver扩展可以自动识别并解决各种CAPTCHA挑战,无需任何人工干预,让您享受Capsolver的CAPTCHA解决服务,而无需编写任何代码。

我们以FunCaptcha为例,使用目标网页

下载和重新打包Capsolver扩展

由于我们在Selenium中使用Capsolver扩展,我们需要从Capsolver的官方GitHub下载zip文件。使用Capsolver扩展需要您在以下位置输入您的API密钥:
在这里插入图片描述

在Selenium中与浏览器扩展进行交互可能会非常麻烦,因此我们可以在扩展的配置文件中预填写API密钥,然后直接在Selenium中加载它。解压缩我们下载的Capsolver扩展zip文件,并在\assets\config.js文件中输入您的API密钥,如下图所示:
在这里插入图片描述

接下来,我们使用Chrome内置的扩展打包功能重新打包Capsolver扩展。请注意,您不能简单地将文件夹压缩回zip文件;这样的扩展是无法使用的。在Chrome中,访问chrome://extensions/,启用开发者模式,选择打包扩展选项,并导入整个Capsolver扩展文件夹。重新打包后,您将获得一个.crx文件。
在这里插入图片描述

在Selenium中使用Capsolver扩展

使用add_extension方法加载新打包的.crx格式Capsolver扩展。示例代码如下:

from selenium import webdriverchrome_options = webdriver.ChromeOptions()
chrome_options.add_extension(r"C:\path\to\CapSolver.Browser.Extension-chrome-v1.14.0.crx")
driver = webdriver.Chrome(options=chrome_options)
driver.get("https://iframe.arkoselabs.com/3117BF26-4762-4F5A-8ED9-A85E69209A46/index.html")input("按任意键退出.")
driver.close()

运行代码,您将看到Capsolver扩展自动解决FunCaptcha挑战:
在这里插入图片描述

CapsolverCN官 方代理交流扣 群:497493756

结论

无论是使用Capsolver API还是Capsolver扩展,您都可以在Python Selenium中完美解决CAPTCHA问题。如有任何疑问,请参考Capsolver文档获取更多有用信息。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/40351.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ios-实验室暑假培训(1)

一 组队 在正式培训之前,也是数模比赛的众中之重。 一定要商讨好组队的相关事宜!要求建模/编程/写作/写作三方能力交叉! 而这三个当中,决定比赛拿奖上限的是编程手,决定比赛能不能拿奖的是写作手。而建模的更像是一个…

巴图自动化PN转Modbus RTU协议转换网关模块快速配置

工业领域中常用的通讯协议有:Profinet协议,Modbus协议,ModbusTCP协议,Profibus协议,Profibus DP协议,EtherCAT协议,EtherNET协议,CAN,CanOpen等,它们在自动化…

使用Scrapy进行网络爬取时的缓存策略与User-Agent管理

缓存策略的重要性 缓存策略在网络爬虫中扮演着至关重要的角色。合理利用缓存可以显著减少对目标网站的请求次数,降低服务器负担,同时提高数据抓取的效率。Scrapy提供了多种缓存机制,包括HTTP缓存和Scrapy内置的缓存系统。 HTTP缓存 HTTP缓…

ueditor集成秀米编辑器

ueditor集成秀米编辑器 一、背景二、集成秀米编辑器流程2.1、新增秀米插件的按钮,显示在我们的富文本编辑器上2.2、点击该按钮,可以呼出一个iframe,这个iframe引用的是秀米自己的编辑器页面2.3、要是有图片,需要再修改配置哈2.4、…

tkinter给按钮设置背景图片

tkinter给按钮设置背景图片 效果代码 效果 代码 import tkinter as tk from PIL import Image, ImageTk# 创建主窗口 root tk.Tk() root.title("按钮背景图片示例")# 加载图片 image Image.open("new.png") photo ImageTk.PhotoImage(image)# 创建按钮…

【代码随想录】【算法训练营】【第58天】 [卡码101]孤岛的总面积 [卡码102]沉没孤岛 [卡码103]水流问题 [卡码104]建造最大岛屿

前言 思路及算法思维,指路 代码随想录。 题目来自 卡码网。 day 58,周四,ding~ 题目详情 [卡码101] 孤岛的总面积 题目描述 卡码101 孤岛的总面积 解题思路 前提: 思路: 重点: 代码实现 C语言 […

【TS】TypeScript 中的 any 与 unknown:理解与实践

🌈个人主页: 鑫宝Code 🔥热门专栏: 闲话杂谈| 炫酷HTML | JavaScript基础 ​💫个人格言: "如无必要,勿增实体" 文章目录 TypeScript 中的 any 与 unknown:理解与实践一、引言二、any&#x…

如何学习大型语言模型中的量化

前言 图片来自作者:Flow 展示了量化的必要性。(笑脸和生气脸图片来自Yan Krukau) 在我解释上面的图表之前,让我先介绍一下您将在本文中学习的重点内容。 首先,您将了解量化是什么以及为什么量化。接下来,您将深入了解…

the problem when using langchain chat openai model and crewai same llm models

题意: when i am using langchain chat openai model and invoking method its working but when using in crewai same llm models it gives invalid api key 当你提到在使用 langchain 的 chatopenai 模型并调用方法时一切正常,但在 crewai 中使用相…

小程序 npm 支持

使用 npm 包 目前小程序已经支持使用 npm 安装第三方包,因为 node_modules 目录中的包不会参与小程序项目的编译、 上传和打包,因此在小程序 项目中要使用的 npm 包,必须走一遍构建 npm 的过程。在构建成功以后,默认 会在小程序目…

【keil5问题】keil5中突然debug调试不能全速运行的问题

1、问题现象: 原本的项目工程是正常debug单步调试,然后突然出现是点击左上角的run全速运行,也全速运行不了,出现如下图的情况,点一次一步走的现象 2、问题解决: 2-1、问题分析: 点击reset、…

JavaScript中的this指向

1. 全局环境下的this 在全局环境中(在浏览器中是window对象,在Node.js中是global对象),this指向全局对象。 console.log(this window); // 在浏览器中为true console.log(this.document ! undefined); // true,因为…

opencv编译报错OpenCV does not recognize MSVC_VERSION “1940“

具体如下: CMake Warning at cmake/OpenCVDetectCXXCompiler.cmake:182 (message):OpenCV does not recognize MSVC_VERSION "1940". Cannot set OpenCV_RUNTIME Call Stack (most recent call first):CMakeLists.txt:174 (include) 打开源码\opencv\sources\cmak…

如何加密U盘?U盘加密软件推荐

U盘是我们最常用的移动存储设备,可以帮助我们随身携带大量数据。为了避免U盘数据泄露,我们需要加密保护U盘。那么,U盘该如何加密呢?下面小编就为大家推荐两款专业的U盘加密软件。 U盘超级加密3000 U盘超级加密3000是一款优秀的U盘…

大模型概述-定义/分类/训练/应用

大模型概述 随着时代的发展, 大模型各个领域的应用正在不断扩大. 本文尽力梳理各种材料, 将从概念定义, 类型分类, 训练以及应用等方面对大模型进行一个简要的概述. 如果你想了解大模型但是却缺乏基础的知识或者觉得无从下手, 那么阅读该文章可能对你有所帮助. 如果想了解更多…

Django任意URL跳转漏洞(CVE-2018-14574)

目录 Django介绍 URL跳转漏洞介绍 Django任意URL跳转漏洞介绍 环境搭建 防御方法 前段时间在面试时,问到了URL跳转漏洞,我没有回答好,下午把URL跳转漏洞学习了,发现也不难,看来还需要学习的东西很多呀&#xff0c…

cadence symbol修改之一

cdaence virtuoso 复制cell,或者拷贝symbol之后,再次调用的时候,symbol还是跟随原来的cell名字 解决办法 打开对应的symbol 修改partName为 cellName

把前端打包放到Eladmin框架中运行

再resuorces目录创建static文件夹,然后把前端文件放进来 然后修改 ConfigurerAdapter文件,如下图所示 这样就可以通过ip端口/index.html 这样访问啦!

垂直领域大模型的机遇与挑战:从构建到应用

在人工智能技术的浪潮中,大模型以其强大的数据处理和学习能力,成为推动科技进步的重要力量。然而,这种跨领域应用的过程并非一帆风顺,既面临挑战也蕴含机遇。本文从复旦大学的研究工作出发,详细分析大模型的机遇与挑战。 背景 GPT4技术报告指出,GPT4仍处于通用人工智…

土壤分析仪:分析土壤中的各种养分

土壤作为地球生命的摇篮,承载着农作物的生长与繁衍。土壤中的养分是农作物生长的关键。 一、土壤分析仪的工作原理 土壤分析仪是一种采用先进传感技术的仪器设备,能够精确测量土壤中的PH值、电导率、有机质含量、养分含量以及微生物数量等参数。它利用多…