首页 > 编程语言 >python+playwright 学习-44 过登录页面的滑块拼图验证码

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

时间:2023-04-03 10:46:26浏览次数:33  
标签:playwright 滑块 python 位置 slider 滑动 mouse page

前言

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

滑块示例

以下滑块为例

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

计算缺口位置

计算缺口位置的方法,网上都有现成的解决方案, 我们只需要得到2张图,一个是背景图,另外一个是缺口图

通过上面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轴距离

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有偿解决)

标签:playwright,滑块,python,位置,slider,滑动,mouse,page
From: https://www.cnblogs.com/yoyoketang/p/17282358.html

相关文章

  • Notepad++运行Python
    按下F5或运行->运行,输入命令cmd/kpython"$(FULL_CURRENT_PATH)"&PAUSE&EXITpythonw-midlelib-r$(FULL_CURRENT_PATH)保存,设置快捷键。之后每一次需要运行python脚本的时候,只需要按下所设置的快捷键即可。解释:—————————————————————......
  • PythonHTTP Proxy Demo 代码示例
    运行中直接嵌入,即可使用隧道模式HTTP,以华科为例#!-*-encoding:utf-8-*-importrequests#要访问的目标页面targetUrl="http://ip.hahado.cn/ip"#代理服务器proxyHost="ip.hahado.cn"proxyPort="39010"#代理隧道验证信息pro......
  • [2]Python面向对象-【1】类
    什么是类类是Python面向对象编程的基本概念之一,它是一种抽象数据类型,用于封装数据和行为。可以把类看作是一种蓝图或者模板,用于创建对象。类的命名规范类名应该采用驼峰式命名法(CamelCase),即每个单词的首字母都要大写,不使用下划线连接单词。例如,类名可以是MyClass或者MyAwesomeCl......
  • 20230402-Python学习里程碑-day1
    Python基础-变量与数据类型4月2安装python注意:1、勾选ADDpythontopath(可以避免手动添加Path路径)2、选择安装路径(可以避免后续使用Pycharm时,配置解析器路径)安装Pycharm选择解析器:默认安装完后,创建一个工程项目,创建xxx.py文件,你会发现NoPythoninterpreterco......
  • Python配置文件管理之ini和yaml文件读取
    当我们设计软件时,我们通常会花费大量精力来编写高质量的代码。但这往往还不够,一个好的软件还应该考虑其整个系统,如测试、部署、网络等。其中最重要的一个方面是配置管理。良好的配置管理应允许在任何环境中执行软件而不更改代码。最常见的配置包括数据库认证配置、部署服务器的主......
  • Python面试题究极篇01
    目录Python面试题第一章深浅拷贝是什么魔法方法new和init有什么区别python的可变和不可变数据类型是什么什么是生成器,有什么应用场景数据库的三大范式是什么mysql有哪些索引类型,分别有什么作用事务的特性和隔离级别Python面试题第一章深浅拷贝是什么浅拷贝和深拷贝:浅拷贝是在......
  • python电子商务网站用户行为分析
    1importos2importpandasaspd345#修改工作路径到指定文件夹6os.chdir("C:\Users\86184\Desktop\文件集\data")78#第一种连接方式9#fromsqlalchemyimportcreate_engine1011#engine=create_engine('mysql+pymysql://root:[email protected].......
  • Python 数据结构与算法详解
    一、数据结构与算法1、算法提出1.算法概念算法是计算机处理信息的本质,因为计算机程序本质上是一个算法来告诉计算机按照确切的步骤来执行一个指定的任务。一般地,当算法在处理信息时,会从输入设备或数据的存储地址读取数据,把结果写入输出设备或某个存储地址供以后再调用。算法是独立......
  • Python图形处理
    一、PillowPIL:PythonImagingLibrary,已经是Python平台事实上的图像处理标准库了。PIL功能非常强大,但API却非常简单易用。由于PIL仅支持到Python2.7,加上年久失修,于是一群志愿者在PIL的基础上创建了兼容的版本,名字叫Pillow,支持最新Python3.x,又加入了许多新特性,因此,我们可以直接安......
  • Python邮件发送接收实战
    一、电子邮件Email的历史比Web还要久远,直到现在,Email也是互联网上应用非常广泛的服务。几乎所有的编程语言都支持发送和接收电子邮件,但是,先等等,在我们开始编写代码之前,有必要搞清楚电子邮件是如何在互联网上运作的。我们来看看传统邮件是如何运作的。假设你现在在北京,要给一个香港......