如何使用 Selenium 和 Python 绕过带有 buster 扩展的 ReCaptcha

Posted

技术标签:

【中文标题】如何使用 Selenium 和 Python 绕过带有 buster 扩展的 ReCaptcha【英文标题】:How to bypass ReCaptcha with buster extension using Selenium and Python 【发布时间】:2020-10-24 12:39:36 【问题描述】:

目前,我使用 selenium 自动化了一些流程,需要解决 Google ReCaptcha。用于解决 ReCaptcha 的技术是浏览器 Plugin Buster。我使用以下输入 Google ReCaptcha

driver.switch_to.frame(driver.find_elements_by_tag_name("iframe")[0])
check_box = WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.ID, "recaptcha-anchor")))
check_box.click()

现在我使用以下命令切换回默认框架:

driver.switch_to.default_content()

所以我需要点击 Buster 图标,但该怎么做呢?

要点击的图标:

【问题讨论】:

【参考方案1】:

Buster 图标 在另一个兄弟<iframe> 中。所以你必须:

切换回default_content()。

诱导 WebDriverWait 使所需的框架可用并切换到它

诱导 WebDriverWait 使所需的元素可点击

您可以使用以下Locator Strategies:

代码块:

from selenium import webdriver
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC

driver.switch_to.default_content()
WebDriverWait(driver, 10).until(EC.frame_to_be_available_and_switch_to_it((By.CSS_SELECTOR,"//iframe[@title='recaptcha challenge']")))
WebDriverWait(driver, 10).until(EC.element_to_be_clickable((By.XPATH, "//button[@id='solver-button']"))).click()

浏览器快照:


参考

您可以在以下位置找到一些相关讨论:

How to interact with the reCAPTCHA audio element using Selenium and Python How to send text to the Password field within https://mail.protonmail.com registration page?

结尾

Ways to deal with #document under iframe

【讨论】:

求解器按钮现在位于封闭的影子 DOM 中。您的代码的最后一行不再起作用了。 @abbr 对封闭的影子 DOM 有什么想法吗? @NamVu,我向 Buster github 提交了一个关于封闭影子 DOM 的问题。 buster 的作者回复 Buster 不是为自动化测试脚本设计的,并删除了问题单。

以上是关于如何使用 Selenium 和 Python 绕过带有 buster 扩展的 ReCaptcha的主要内容,如果未能解决你的问题,请参考以下文章

selenium:python如何绕过登录页面登录网页

Selenium+Python自动化之如何绕过登录验证码

Python Selenium Cookie 绕过验证码实现登录

如何绕过 Google reCAPTCHA 使用 Selenium 进行测试

Selenium2+python自动化41-绕过验证码(add_cookie)

Selenium2+python自动化41-绕过验证码(add_cookie)