如何使用selenium绕过滑块验证码来解决谜题?(Python)

问题描述 投票:0回答:1

在上述网站上,搜索令牌后,会出现滑块验证码。

验证码示例:

我想绕过滑块验证码。我参考了无法让我的脚本向右滑动按钮

中的第一个解决方案

我的方法是慢慢移动,直到滑块位于正确的位置,然后打开新页面。

网站是:

https://www.ems.com.cn/english/

我的做法:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
from selenium.webdriver import ActionChains

driver = webdriver.Chrome(ChromeDriverManager().install())
actions = ActionChains(driver)

url = 'https://www.ems.com.cn/english/'

driver.get(url)

token = 'CY008445045CN'

token_space = driver.find_element_by_xpath("//input[@class='el-input__inner']")

token_space.send_keys(token)
driver.find_element_by_xpath("//i[@class='el-icon-search']").click()
time.sleep(4)

slider_container = driver.find_element_by_xpath("//div[@class='slide-verify-slider']")
slider = driver.find_element_by_xpath("//div[@class='slide-verify-slider-mask-item']")

# Perform sliding action
actions.move_to_element(slider).click_and_hold().move_by_offset(slider_container.size['width'], 0).release().perform()
python selenium web-scraping web-crawler captcha
1个回答
0
投票
find_element_by_xpath

已弃用,您应该使用:

find_element(By.XPATH, value="")

这是您的代码的更新版本:

from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import time
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service

driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()))
actions = ActionChains(driver)

url = 'https://www.ems.com.cn/english/'

driver.get(url)

token = 'CY008445045CN'

token_space = driver.find_element(By.XPATH, value="//input[@class='el-input__inner']")

token_space.send_keys(token)
driver.find_element(By.XPATH, value="//i[@class='el-icon-search']").click()
time.sleep(8)

slider_container = driver.find_element(By.XPATH,value="//div[@class='slide-verify-slider']")
slider = driver.find_element(By.XPATH, value="//div[@class='slide-verify-slider-mask-item']")

# Perform sliding action
for x in range(10000):
    
    actions.move_to_element(slider).click_and_hold().move_by_offset(x, 0).release().perform()
    time.sleep(0.1)

要解决验证码问题,您必须在正确的位置释放按钮,而不仅仅是滑动。

获取数据的更好方法是使用 REST API

REST API

© www.soinside.com 2019 - 2024. All rights reserved.