【问题标题】:How to bypass human verification 'press and hold' using Selenium in Python?如何在 Python 中使用 Selenium 绕过人工验证“按住”?
【发布时间】:2021-10-07 06:57:11
【问题描述】:

我正在尝试使用 Selenium 和 Python 从这个 site 中抓取一些产品评论,但它连接了另一个 site 并在任何时候随机显示一个弹出窗口,我需要按住按钮进行人工验证。

我正在使用 chrome 网络驱动程序并尝试解决它,使用driver.find_element_by_xpath 和许多其他方式获取路径。我还发现“按住”按钮位于 iframe 内,因此尝试通过 driver.switch_to_frame('//iframe')driver.switch_to_frame(0) 切换到 iframe,但我失败了。我找不到任何 iframe 名称或 ID 来执行任何操作。

是否有任何方法可以绕过或采取措施(按住按钮)无论何时发生(作为站点或弹出窗口)并在此过程中使用 selenium 和 python 关闭其他弹出窗口? 任何建议将不胜感激!

【问题讨论】:

  • @CodingOtaku 不,不一样
  • 如您所见,这与谷歌验证码不同,您可能需要选择一些汽车照片或单击复选框以验证为人类,这完全不同,这里需要按住项目/按钮,其中按钮位于 iframe 内,其中 iframe 没有任何 ID 或名称可识别。和谷歌验证码完全不一样,希望你能理解。
  • 您可以使用browser.switch_to_window(browser.window_handles[index_of_window]) 切换到弹出窗口。如果没有明显的方法来获取 IFrame,则找到它的 xpath 以切换到它。 “在任何时候随机弹出”这很烦人,所以你必须不断检查它的存在。但正如我之前所说,即使您绕过 CAPTCHA,他们也会很快改变其行为以破坏所有爬虫。
  • 大多数情况下,它连接网站以验证按钮位置是否相同。但我找不到它的 xpath 或 iframe id。可能有一些与此 iframe 相关的 JavaScript 代码。至少我需要找到它(如中心所示)并按住它。我可以处理其他弹出窗口,但主要是这个是造成问题的。随机是指这个验证站点是随机出现的,我们可以通过匹配当前的url来检测它,但是如何找到那个按钮来按下它!不知道!
  • 据我所知,<div id="px-captcha"> 下有 10 个 iframe。我相信他们只是随机选择一帧并隐藏其余帧。显示 CAPTCH 的那个在内联样式中有 display:block。这有帮助吗?

标签: javascript python-3.x selenium xpath iframe


【解决方案1】:

Jacob 从这个问题的解决方案here 解决了这个问题。

import time
from selenium import webdriver as wd
from selenium.webdriver.common.action_chains import ActionChains

driver = wd.Chrome('./web driver/chromedriver.exe')
target_url = 'https://www.walmart.com/blocked?url=L2lwL0Nsb3JveC1EaXNpbmZlY3RpbmctV2lwZXMtMjI1LUNvdW50LVZhbHVlLVBhY2stQ3Jpc3AtTGVtb24tYW5kLUZyZXNoLVNjZW50LTMtUGFjay03NS1Db3VudC1FYWNoLzE0ODk4MzY1&uuid=9ed7f800-f288-11eb-ad50-1b3c9c7d7310&vid=9cf07351-f288-11eb-9ab5-ef26d206453b&g=b'
driver.get(target_url)
driver.maximize_window()

element = driver.find_element_by_css_selector('#px-captcha')
action = ActionChains(driver)
action.click_and_hold(element)
action.perform()
time.sleep(10)
action.release(element)
action.perform()
time.sleep(0.2)
action.release(element)

【讨论】:

    猜你喜欢
    • 2020-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-29
    • 2011-09-17
    相关资源
    最近更新 更多