滑动拼接图片验证码反爬

上部分文章链接

 

本文涉及内容

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.common.action_chains import ActionChains
from PIL import ImageChops
from PIL import Image
from io import BytesIO
import time

其他库不再介绍,可看上方链接

selenium库安装方式:pip install selenium

要配合相应版本的浏览器驱动:谷歌火狐

 如图

 网站:Steamboat-反爬虫练习

该图片是通过canvas生成,处理的思路:

①定位图片的位置,使用screenshot_as_png截图

②使用click_and_hold()点击滑块,获取缺口的图片并截图

③通过PIL.ImageChops.difference(image_b, image_a).getbbox()获取差异坐标(缺口)

④使用move_by_offset(x,0),移动滑块通过验证

实现:

为保证截取完整的验证码图片,页面需要下拉

(document.body.scrollHeight 下拉至页面底部)

也可以直接指定下拉距离window.scrollTo(0,500)

定位图片和滑块位置

 

 为防止滑块本身的影响对图片对比的影响,

第二张图片的滑块要隐藏起来后截取

 

 图片对比,获取坐标

在py 3.x版本中使用ImageChops.difference()方法

需要对图片先进行“RGB”真彩处理,py 2.x版本不需要

(原因不明)

 返回的是左上角和右下角的两个坐标

需要移动的距离是211减去滑块left的值10

 

 源码:

CSDN-/滑动拼图反爬.py at 2616593e598d440b8856b31b1775d9fc1b0decc7 · thinkloading/CSDN- · GitHub

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值