Python爬虫-Selenium(3)

Python爬虫-Selenium(3)

@(博客)[selenium, python, 爬虫, 破解极验]

实战滑动验证

国家企业信用信息公式系统(上海)http://www.sgs.gov.cn/notice

思路

破解滑动验证主要需要解决两个问题:1. 滑块移动距离;2. 模拟人操作
这里写图片描述

找出滑动距离

这里写图片描述

1. 干掉滑块图案

滑动距离其实就是比较两种图片的在同一个位置点的像素差,我们可以设置一个阈值,当坐标点相同的地方,像素差超过了预设的阈值,我们就认为这里存在缺口,也就是滑块需要移动的距离

但可以看到,上图右边,中间有个滑块图案,它的存在会影响我们比较像素点的结果,所以需要去掉。在前端,样式中设置display:none;会使得滑块图案消失。
这里写图片描述

2. 获取两张图片

如何获取完整与有缺块的图片呢?

其实很简单,首先通过selenium提供的截屏接口(browser.get_screenshot_as_png()),再用BytesIO封装,然后Image.open()打开。

之所以要绕一圈,这是因为Image.open()返回来的对象提供crop()方法用于裁切图片,方便我们取出图片。

def crop_img(pos):
    """截图"""
    screentshot = BytesIO(browser.get_screenshot_as_png())
    img = Image.open(screentshot).crop(pos)
    return img

注意:crop()方法接收一个元组,顺序依次为:left, upper, right, lower

3. 获取图片的位置

由于crop()需要传入位置信息,所以我们还需要获取截取图片的指定位置

这里写图片描述

需要通过selenium提供的接口,找到包含整个图片的节点,然后利用location获取其坐标,返回来的值是这个节点的左上角坐标

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值