使用selenium解决滑块验证的问题

这篇具有很好参考价值的文章主要介绍了使用selenium解决滑块验证的问题。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

使用自动化测试时有些网站会使用滑块来阻止,所以如何解决滑块问题已经成为自动化测试不可或缺的,今天以网易易盾网站的滑块举例:https://dun.163.com/trial/sense

要解决滑块问题的关键就是匹配滑块在背景图中的位置所以使用python中的numpy库来实现获取滑块在背景的坐标,获取到滑块在背景图的坐标后使用ActionChains实现滑块的滑动。此外,注意使用循环来保证最后的成功,代码如下:文章来源地址https://www.toymoban.com/news/detail-530031.html

from selenium import webdriver
import requests
import time
import cv2
import numpy as np
from selenium.webdriver import ActionChains

driver = webdriver.Chrome(r"C:\Users\lijunfeng\AppData\Local\Programs\Python\Python37\chromedriver.exe")
driver.get('https://dun.163.com/trial/sense')

# 点击进入滑块界面
driver.find_element_by_xpath('/html/body/main/div[1]/div/div[2]/div[2]/ul/li[2]').click()
time.sleep(1)
# 点击完成验证
driver.find_element_by_xpath('/html/body/main/div[1]/div/div[2]/div[2]/div[1]/div[2]/div[1]/div/div[2]/div[3]/div/div/div[1]/div[1]/span').click()
time.sleep(3)

while True:
    # 获取两张图片
    url_s = driver.find_element_by_class_name('yidun_jigsaw').get_attribute('src')
    url_b = driver.find_element_by_class_name('yidun_bg-img').get_attribute('src')
    headers = {
        'user-agent':'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/101.0.4951.41 Safari/537.36'
    }
    res_s = requests.get(url_s,headers=headers)
    data_s = res_s.content
    res_b = requests.get(url_b,headers=headers)
    data_b = res_b.content
    # 保存图片
    with open('pic_s.png','wb')as f:
        f.write(data_s)
    with open('pic_b.png','wb')as f:
        f.write(data_b)

    # 使用opencv读取两张图片
    simg = cv2.imread('pic_s.png')
    bimg = cv2.imread('pic_b.png')

    # 灰度处理,降低偏差
    s_img = cv2.cvtColor(simg,cv2.COLOR_BGR2GRAY)
    b_img = cv2.cvtColor(bimg,cv2.COLOR_BGR2GRAY)

    # 保存两张灰度处理的图片
    cv2.imwrite('hui_simg.png',s_img)
    cv2.imwrite('hui_bimg.png',b_img)

    # 处理滑块图片,保存有效部分
    s_img = s_img[s_img.any(1)]

    # opencv的匹配算法,匹配模块寻找两张图片的相似之处
    result = cv2.matchTemplate(b_img,s_img,cv2.TM_CCOEFF_NORMED)
    print('result',result)

    # 获取坐标
    # 获取最大索引
    index_max = np.argmax(result)
    # 获取到坐标
    y,x = np.unravel_index(index_max,result.shape)
    print("y:",y,"x:",x)

    # 定位到滑块
    ele = driver.find_element_by_xpath('/html/body/main/div[1]/div/div[2]/div[2]/div[1]/div[2]/div[1]/div/div[2]/div[3]/div/div/div[2]/div/div/div[2]/div[2]')

    # 实例化对象
    action = ActionChains(driver)
    # 拖动滑块
    time.sleep(1)
    action.drag_and_drop_by_offset(ele,xoffset=x,yoffset=0).perform()
    time.sleep(1)
    # 定位到验证成功
    time.sleep(1)
    text = driver.find_element_by_xpath('/html/body/main/div[1]/div/div[2]/div[2]/div[1]/div[2]/div[1]/div/div[2]/div[3]/div/div/div[1]/div[2]/span[2]').text
    if text == "验证成功":
        break

到了这里,关于使用selenium解决滑块验证的问题的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • 【Python从入门到进阶】39、使用Selenium自动验证滑块登录

    【Python从入门到进阶】39、使用Selenium自动验证滑块登录

    接上篇《38、selenium关于Chrome handless的基本使用》 上一篇我们介绍了selenium中有关Chrome的无头版浏览器Chrome Handless的使用。本篇我们使用selenium做一些常见的复杂验证功能,首先我们来讲解如何进行滑块自动验证的操作。 我们要通过selenium来实现目前常见的滑块验证码的验证,

    2024年02月08日
    浏览(34)
  • selenium+opencv实现模拟登陆(滑块验证码)

    selenium+opencv实现模拟登陆(滑块验证码)

    很多网站登录登陆时都要用到滑块验证码,在某些场景例如使用爬虫爬取信息时常常受到阻碍,想着用opencv的模板匹配试试能不能实现模拟登陆。本来觉得网上资料多应该还蛮容易,但实际上手还是搞了蛮久,在这里记录一下整个流程,网站无所谓主要是要有滑动验证码:

    2023年04月14日
    浏览(5)
  • 用Java+Selenium+openCV实现126.com的滑块验证

    用Java+Selenium+openCV实现126.com的滑块验证

    引入OpenCV库,下载地址:Releases - OpenCV下载4.5.0即可,在下完成安装exe文件后,会出现下列文件,直接将build/java文件下的jar包导入项目的依赖即可。  1.获取驱动,加载126网址 2.切换窗口,因为登录功能是在iframe中,需要先切换窗口 3.输入账号和密码,点击登录(才能弹出滑块

    2024年01月21日
    浏览(12)
  • 用selenium解决滑块验证码

    用selenium解决滑块验证码

    因为种种原因没能实现愿景的目标,在这里记录一下中间结果,也算是一个收场吧。这篇博客主要是用selenium解决滑块验证码的个别案列。 思路: 用selenium打开浏览器指定网站 将残缺块图片和背景图片下载到本地 对比两张图片的相似地方,计算要滑动的距离 规划路线,移动

    2024年02月01日
    浏览(12)
  • 滑块拖动验证

    滑块拖动验证

    svg图标 初始图标 成功的图标 vue组件

    2024年01月17日
    浏览(6)
  • python+selenium尝试处理滑块验证

    python+selenium尝试处理滑块验证

     效果如图:   处理思路: 1.打开滑动验证页面,这个用selenium一步一步走过去 2.将滑动验证码的整个图片保存下来 3.对图片的像素点进行分析,发现拼图处像素特征如下:   1).阴影起点处rgb的第一个值为0   2).阴影处的rgb三个值相加大部分小于某个临界值(minPix=400)   3).拼图阴影大

    2024年02月15日
    浏览(37)
  • python+selenium绕过滑块验证,实现自动登录

    python+selenium绕过滑块验证,实现自动登录

    实现taobao自动化登录,当用webdriver打开淘宝时,滑块验证一直失败,手动滑都会失败。因为淘宝会检测window.navigator.webdriver,控件检测到你是selenium进入,所以就会弹出滑块验证。只需要绕过检测就能实现自动登录 验证了两种方法可以跳过: 第一种是给浏览器加启动参数,开

    2024年02月12日
    浏览(33)
  • 抖音、云图、星图、巨量等滑块验证(python+selenium)

    抖音、云图、星图、巨量等滑块验证(python+selenium)

    抖音、云图、星图、巨量等滑块通用 2023年3月份亲测好用,仅用于学习测试。

    2024年02月10日
    浏览(35)
  • 使用opencv识别滑块验证

    使用opencv识别滑块验证

    对于某些简单的滑块,无需进行模型训练,可以使用opencv就能识别,比如: 有一种常用方法cv2.matchTemplate,可以将滑动的图案与背景图案进行模板匹配,这种方法适用于滑动图案与背景图片中目标位置有相同图案的情况。 但是本文想介绍的是另一种:背景中目标位置是空白的

    2024年03月10日
    浏览(12)
  • python selenium模块联合带带弟弟破解滑块验证码

    Python 使用 Selenium 模块模拟用户操作,滑动滑块来破解验证码

    2024年04月14日
    浏览(94)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包