python+playwright 学习-44 过登录页面的滑块拼图验证码

python+playwright 学习-44 过登录页面的滑块拼图验证码,第1张

前言

有些登录页面经常会遇到滑块验证码,滑块的操作思路基本都差不多,先确定缺口的位置,再滑动过去。
一般在滑动过去的时候,会有人机识别机制,有时候你准确的滑动位置了,但不一定会解锁成功。

滑块示例

以下滑块为例
python+playwright 学习-44 过登录页面的滑块拼图验证码,第2张

需先计算出滑块的缺口位置,也就是我们需要滑动的距离

计算缺口位置

计算缺口位置的方法,网上都有现成的解决方案, 我们只需要得到2张图,一个是背景图,另外一个是缺口图
python+playwright 学习-44 过登录页面的滑块拼图验证码,第3张

python+playwright 学习-44 过登录页面的滑块拼图验证码,第4张

通过上面2张图,我们就可以计算出缺口的位置了

 def target_position() - int:

进行缺口位置计算识别 可以找我wx:283340479有偿解决
:return: 缺口位置

slide = ddddocr.DdddOcr(show_ad=False, det=False, ocr=False)
with open( bg.jpg , rb ) as f:
target_bytes = f.read()
with open( full.jpg , rb ) as f:
background_bytes = f.read()
res = slide.slide_comparison(target_bytes, background_bytes)
return res.get( target )[0]

x = target_position()
print(x) #

也就是说,我们只要从网页上获取到上面2张图,也就得到了缺口位置

定位滑动的按钮

定位滑动操作的按钮,计算按钮的x和y轴距离

python+playwright 学习-44 过登录页面的滑块拼图验证码,第5张

x 和 y轴距离是以浏览器左上角的位置,横向是x,纵向是y

通过定位到元素,调用bounding_box() 方法,得到x和y,以及图片的宽高

 # 滑动按钮
slider = page.locator( div.geetest_slider_button ).bounding_box()
print(slider)

返回结果

{ x : 811.53125,  y : 489.875,  width : 55,  height : 55}
page.mouse 鼠标操作

page.mouse 鼠标操作的几个方法

page.mouse.move  是先把鼠标放到指定的坐标微信,x和y是坐标位置

page.mouse.down  是按下鼠标,button=”middle” 参数是按住鼠标的中间位置

page.wait_for_timeout  是滑动的时候加一些等待时间,防止操作太快会被识别到不是人是手动操作

page.mouse.up  是释放鼠标

需注意是是page.mouse.move 传的参数是x和y的绝对坐标位置,跟selenium操作不一样,selenium是先定位某个元素,根据该元素的位置坐偏移的计算(相对位置)

 # 鼠标拖动 可以找我wx:283340479有偿解决
page.mouse.move(x=int(slider[ x ]), y=slider[ y ]+slider[ height ]/2)
page.mouse.down(button= middle )
page.wait_for_timeout(300)
page.mouse.move(x=int(slider[ x ])+x+random.randint(2, 8), y=slider[ y ] + slider[ height ] / 2)
page.wait_for_timeout(500)
page.mouse.move(x=int(slider[ x ]) + x - 2, y=slider[ y ] + slider[ height ] / 2)
page.mouse.move(x=int(slider[ x ]) + x - 6, y=slider[ y ] + slider[ height ] / 2)
page.wait_for_timeout(300)
page.mouse.move(x=int(slider[ x ])+x-8, y=slider[ y ] + slider[ height ] / 2)
page.mouse.up(button= middle )

整体来说滑块的解决需解决以下3个问题:
1.得到滑块背景图
2.计算缺口位置
3.滑动轨迹(绕过防爬机制)
不同的网站滑块也有区别,特别是某东的网站滑块操作防爬机制级别很高,还需要去自己写个滑动轨迹。
(滑块问题不是复制粘贴代码就能解决的,还需要根据实际情况去慢慢调试,比较耗时,耗经历,如果你有这方面需求,可以找我wx:283340479有偿解决)

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
白度搜_经验知识百科全书 » python+playwright 学习-44 过登录页面的滑块拼图验证码

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情