如何使用 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的主要内容,如果未能解决你的问题,请参考以下文章
Python Selenium Cookie 绕过验证码实现登录
如何绕过 Google reCAPTCHA 使用 Selenium 进行测试