300字范文,内容丰富有趣,生活中的好帮手!
300字范文 > glidedsky挑战-滑块验证码反爬(腾讯防水墙滑块验证码)

glidedsky挑战-滑块验证码反爬(腾讯防水墙滑块验证码)

时间:2019-08-31 06:44:39

相关推荐

glidedsky挑战-滑块验证码反爬(腾讯防水墙滑块验证码)

相应页面(/level/web/crawler-captcha-1)

题目要求:

先看看页面:

当我们一打开页面,就是出现滑块验证码页面,我们所要的数字参数是没有的。

再看看滑动之后的页面。

很明显,当滑块验证通过之后,数字就会出现。

再分析滑块验证码图片,如下图,是腾讯防水墙滑块验证码。

再抓包看看,如下图,验证码图片和滑块图片已经出现,

到这里,简单分析一下思路。

访问页面,下载验证码图片;通过图像识别,计算出验证码图片缺口位置;通过selenium模拟移动滑块;收集数字数据,继续下一个页面。

实现过程:

使用库:

import osimport randomimport cv2from PIL import Imagefrom selenium import webdriverfrom selenium.webdriver import ActionChainsfrom mon.by import Byfrom selenium.webdriver.support.ui import WebDriverWaitfrom selenium.webdriver.support import expected_conditions as ECfrom urllib.request import urlretrieveimport timeimport numpy as npfrom lxml import etree

这里说下,部分库与程序作用:

random:模拟滑动轨迹;

vc2、PIL、numpy:处理图片时,计算滑块对应坐标轴;

selenium:自动化处理验证码;

urllib.request.urlretrieve:下载图片。

实现过程:

应于网站要求,这里只说思路(个人程序过程),不提供代码。

初始化selenium;访问页面,先登录,再进行题目页面;切换到滑块验证码子页面(因为主页面中,不会显示滑块元素);下载对应的滑块验证码图片(验证码带缺口大图,验证码缺口图);加载验证码图片,计算坐标值(Image处理图片大小和位置偏移,cv2处理图片颜色色差(灰度),numpy计算坐标轴);根据坐标轴,实现模拟滑动过程中的轨迹;通过轨迹使用selenium拖动滑块;如果成功,收集数字求和,然后下一页,重复第3步,如果滑块验证没有成功,该页面再次请求。

说明:

难点:图像计算坐标,模拟轨迹。

在验证过程中,注意页面的加载速度,可以使用time控制,图片识别时,用cv2处理灰度值,进行归一化处理,numpy可以通过归一化计算出相应坐标。

在网络上,已经有很多大佬实现了腾讯防水墙滑块验证码,可以适当的去参考。

PS:

除了腾讯防水墙滑块验证码,还有极验的滑块验证码,相对腾讯来说,极验的难度比腾讯的大很多,它的版本在不断更新,难度也越高,最开始极验滑块验证码可以通过截图处理保存图片,后来是图片碎片块,不过可以从css里获取对应位置参数,也可以处理,现在极验滑块验证码使用的是webp格式的碎片块图片,难上加难。欢迎知道的大佬留言!!!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。