2.4 滑块拼图验证码

本文介绍了如何使用Python的Selenium库和PIL库模拟初级版和高级版的滑动拼图验证码。初级版通过获取缺口的left属性值计算滑动距离,高级版则通过对比无缺口和有缺口图像的像素差异定位缺口位置,从而实现验证。
摘要由CSDN通过智能技术生成
  • 滑动拼图验证码可以算是滑块验证码的进阶版本,其验证机制相对复杂。本节将介绍两种滑动拼图验证码:初级版和高级版本。
    在这里插入图片描述

2.4.1 初级版滑块拼图验证码

  • 初级版滑动拼图验证码是在普通滑块验证码的基础上增加了随机的滑动距离,用户需要根据拼图的缺口位置来决定滑块的滑动位置。

  • 如下左图所示为一个滑块拼图验证码的起始状态,注意此时还没有显示拼图和缺口。单击滑块后就会出现拼图和缺口,如下右图所示。之后会利用这一特性来找到拼图和缺口的位置。
    在这里插入图片描述

  • 下面开始编写代码。首先用Selenium打开网页,代码如下:

    from selenium import webdriver
    browser =webdriver.Chrome()
    url = r’D:workspython_crawl1《Python爬虫(进阶与进通)》代码汇总.验证码反爬.滑动拼图验证码滑动拼图验证码初级index.html’
    browser.get(url) #用模拟浏览器打开网页

  • 然后定位滑块并模拟单击滑块,让拼图和缺口显现出来。虽然此时单击滑块会显示验证失败,但这是为了帮助我们获取拼图和缺口的真实位置,以计算滑块需要滑动的距离,代码如下:

    slider = browser.find_element_by_xpath(‘//*[@id=“slideBtn”]’) #定位滑块
    slider.click() # 模拟单击滑块,让拼图和缺口显现出来
    time.sleep(3) #等待3秒

  • 接着需要找到缺口的位置,初级版滑动拼图验证码可以直接在网页源代码中找到。如下图所示,用元素定位工具选中缺口,在网页源代码中查看缺口的left属性值,即缺口的左边界到整张图片的左边界的距离,这里为135像素。
    在这里插入图片描述

  • 如下图所示,用同样的方法查看拼图的left属性值,即拼图的左边界到整张图片的左边界的距离,这里为2像素。
    在这里插入图片描述

  • 因为拼图的初始left属性值始终为2像素,所以只需要提取缺口的left属性值。这里用正则表达式来提取,代码如下:

    import re
    data = browser.page_source #

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值