selenium 滑块问题解决

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

滑块问题解决

selenium拖动滑块不动,selenium,python,opencv

问题解决分为两步

图片处理

滑块移动处理

图片处理

1.图片获取

selenium拖动滑块不动,selenium,python,opencv
selenium拖动滑块不动,selenium,python,opencv

这里获取的是背景以及滑块图片

- 获取图片
	通过requests.get(),将图片下载到本地
	    with open('./yuan/image.html','r',encoding='utf-8') as fp:
        page_text = fp.read()
    html = etree.HTML(page_text)
    img1 = html.xpath('/html/head/link[4]/@href')
    img2 = html.xpath('/html/head/link[5]/@href')

    imgCon1 = requests.get(url=img1[0],headers=headers).content
    imgCon2 = requests.get(url=img2[0],headers=headers).content
    List = []

    with open('./img/background.png','wb') as fp:
        fp.write(imgCon1)
    with open('./img/frag.png', 'wb') as fp:
        fp.write(imgCon2)

2.将图片进行降噪,灰度化处理,采用图片模板位置匹配,归一化相关系数匹配,将会得出大致距离
def _tran_canny(image):
    """降噪"""
    image = cv2.GaussianBlur(image, (3, 3), 0)
    return cv2.Canny(image, 50, 150)


def detect_displacement(img_slider_path, image_background_path):
    """detect displacement"""
    # 灰度化
    image = cv2.imread(img_slider_path, 0)
    template = cv2.imread(image_background_path, 0)
    # 图片模板位置匹配 归一化相关系数匹配法cv2.TM_CCOEFF_NORMED
    res = cv2.matchTemplate(_tran_canny(image), _tran_canny(template), method=cv2.TM_CCOEFF_NORMED)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
    top_left = max_loc[0]  # 横坐标
    print(top_left)
    return top_left

滑块位置处理

1.构造滑块轨迹
def get_tracks(distance):
    # 构造滑动轨迹
    tracks = []
    v = 0
    t = 0.9  # 单位时间
    current = 0  # 滑块当前位移
    distance += 10  # 多移动10px,然后回退
    while current < distance:
        if current < distance * 5 / 8:
            a = random.randint(1, 3)
        else:
            a = -random.randint(2, 4)
        v0 = v  # 初速度
        track = v0 * t + 0.5 * a * (t ** 2)  # 单位时间(0.2s)的滑动距离
        tracks.append(round(track))  # 加入轨迹
        current += round(track)
        v = v0 + a * t
    # 回退到大致位置
    for i in range(5):
        tracks.append(-random.randint(1, 2))
        # tracks.append(-random.choice([0.3, 0.5, 0.8]))
    return tracks
2.模拟拖动
# from selenium.webdriver.support.wait import WebDriverWait
# webDriver = Chrome(executable_path=path,options=chrome_options)

# wait1 = WebDriverWait(webDriver, 3)
# browser = webDriver
# trace 就是图片处理返回的距离

def move_to_gap(wait1,browser,trace):
    # 得到滑块标签
    # slider = wait1.until(EC.presence_of_element_located((By.CLASS_NAME, 'verify-move-block')))
    slider = wait1.until(EC.presence_of_element_located((By.XPATH, '//*[@id="captcha__frame__bottom"]/div[2]/div[2]')))
    # 使用click_and_hold()方法悬停在滑块上,perform()方法用于执行
    ActionChains(browser).click_and_hold(slider).perform()
    for x in trace:
        # 使用move_by_offset()方法拖动滑块,perform()方法用于执行
        ActionChains(browser).move_by_offset(xoffset=x, yoffset=0).perform()
    # 模拟人类对准时间
    sleep(0.5)
    # 释放滑块
    ActionChains(browser).release().perform()
# **	幂 - 返回x的y次幂	a**b 为10的20次方, 输出结果 100000000000000000000
# round() 方法返回浮点数x的四舍五入值。
# random.randint() 方法返回指定范围内的整数。
randint(start, stop) 等价于 randrange(start, stop+1)。
# choice() 方法返回一个列表,元组或字符串的随机项。

本人成功是成功了,可惜被查出是机器人

如果用selenium,在控制台输入window.navigator.webdriver	会显示true
# 1.chrome的版本号如果小于88
	在启动浏览器的时候(此时没有加载任何内容时),将页面嵌入js代码,去掉webdriver
  2.chrome的版本号如果大于88
  	from selenium.webdriver.chrome.options import Options
    chrome_options.add_argument('--disable-blink-features=AutomationControlled')

可惜还是不行,在找方法,后续更新吧

本人只是对selenium一知半解,滑块问题解决,只是从下面的大佬的完整代码中摘抄的一部分罢了.

本次参考模仿的案例
文章来源地址https://www.toymoban.com/news/detail-606671.html

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

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

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

相关文章

  • selenium解决巨难的js逆向滑块验证问题!!!

    selenium解决巨难的js逆向滑块验证问题!!!

    需要控制滑块,完成访问验证   使用selenium进行滑块识别,总是失败。 网站识别出是机器在进行爬取。 实现规避检测,让网站检测不到。 2、调整Chorme特征值 让系统不认为chorme是机器在操作 用16进制编辑器打开 Chormedriver.exe , 查找并替换 $cdc_lasutopfhvcZLmcfl 为等量字符的内容

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

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

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

    2023年04月14日
    浏览(7)
  • 用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日
    浏览(14)
  • 用selenium解决滑块验证码

    用selenium解决滑块验证码

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

    2024年02月01日
    浏览(15)
  • uniapp小程序拖动地图,标记物固定地图中心不动,展示拖动后的位置信息

    思路:将标记物固定在地图正中间,地图拖动结束后,获取地图中心位置的经纬度信息 html代码 css代码 js代码 (小程序解析经纬度获取地址信息需申请腾讯地图key并下载SDK文件)

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

    滑块拖动验证

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

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

    python+selenium尝试处理滑块验证

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

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

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

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

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

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

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

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

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

    2024年04月14日
    浏览(118)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包