Web自动化中,解决滑动验证码

在这里插入图片描述

下面代码可以解决类似图中的滑动验证码,几年前写的,当时是可以用的,现在不清楚,仅供参考 =͟͟͞͞(꒪⌓꒪*)

from PIL import ImageGrab, Image
import time
from pymouse import PyMouse
from pykeyboard import PyKeyboard
import cv2 as cv
import time
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains

class ImageMatch:
    driver = None  

    def __init__(self):
        self.mouse = PyMouse()
        self.keyboard = PyKeyboard()
        self.driver = ImageMatch.get_webdriver()


    @classmethod  
    def get_webdriver(cls):
        if cls.driver == None:
            cls.driver = webdriver.Chrome()
            cls.driver.implicitly_wait(3)
            cls.driver.maximize_window()
            cls.driver.get('http://127/0.0.1#/login')
            cls.driver.find_element_by_css_selector(".el-input__inner").send_keys("rjzt")
            cls.driver.find_element_by_xpath("//input[@autocomplete='new-password']").send_keys("123456")
            cls.driver.find_element_by_css_selector('button').click()
            time.sleep(2)
        # print(id(cls.driver))
        return cls.driver

    def find_image(self, filename):
        ImageGrab.grab().save('./screen.png')
        source = cv.imread('./screen.png')  # 打开屏幕截图
        templete = cv.imread(filename)  # 打开模板图片
        # 调用openCV自带的matchTemplate方法进行模板匹配
        result = cv.matchTemplate(source, templete, cv.TM_CCOEFF_NORMED)
        location = cv.minMaxLoc(result)
        pos_start = location[3]  # 获取匹配成功后的起始坐标
        # print(location)     #(-0.5183663964271545, 1.0, (393, 557), (503, 336))
        # 计算匹配对象的中心坐标x,y
        x = int(pos_start[0]) + int(templete.shape[1] / 2)
        y = int(pos_start[1]) + int(templete.shape[0] / 2)
        # 根据匹配度返回坐标,如果小于95%,则返回无效坐标(-1,-1)
        similarity = location[1]
        if similarity >= 0.9:
            return (x, y)
        else:
            return (-1, -1)

    # 封装单击操作
    def click(self, filename):
        x, y = self.find_image(filename)
        self.mouse.click(x, y)
        print("在位置[%d,%d]处点击" % (x, y))

    # 封装输入操作
    def input(self, filename, content):
        x, y = self.find_image(filename)
        self.mouse.click(x, y)
        self.keyboard.type_string(content)
        print("在位置[%d,%d]处,输入:%s" % (x, y, content))

    def move_pic(self):
        button = self.driver.find_element_by_css_selector('.range-btn')
        time.sleep(1.5)
        find = ImageMatch()
        find.find_image('./test3.png')
        x, y = find.find_image('./test3.png')
        print(x, y)
        time.sleep(1.5)
        action = ActionChains(self.driver)
        action.drag_and_drop_by_offset(button, xoffset=x - 820, yoffset=0).perform()

    def login(self):
        i = 0
        while i < 3:
            try:
                ImageMatch().move_pic()
                i += 1
            except:
                print("登陆成功了.....")
                break
    def quit(self):
        self.driver.quit()

if __name__ == '__main__':
    ImageMatch().login()
    ImageMatch().quit()

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 精易web浏览器滑动验证码是一种防止机器人恶意攻击的验证码形式。它的工作原理是通过在网页上展示一张含有滑块的图片,并要求用户拖动滑块以验证身份。 具体来说,滑动验证码的实现过程如下:首先,web浏览器会从服务器端获取一张含有缺口的图片,缺口位置是随机生成的。接着,web浏览器会在页面上展示这张图片,并要求用户将滑块拖动到恰当的位置以填补缺口。当用户拖动滑块时,web浏览器会实时监测滑块的位置变化,并记录下滑块的拖动轨迹。最后,web浏览器会将用户的拖动轨迹信息与服务器端存储的正确轨迹进行比对,判断用户是否为真人。 精易web浏览器滑动验证码的优点在于其简单易用、交互性强。它通过人机交互的方式,要求用户主动地参与到验证过程,从而有效地防止了机器人的攻击。与传统的输入验证码相比,滑动验证码更加直观、便捷,减少了用户的烦恼。而且,由于滑动验证码的实现过程包括了拖动滑块的动作,可以有效地防止机器人利用自动化程序模拟用户操作。 然而,滑动验证码也存在一些缺点。由于滑动验证码的形式相对固定,一些高级的机器人攻击程序可能通过模拟用户拖动滑块的动作来绕过验证。而且,滑动验证码还需要服务器端保存大量的拖动轨迹数据,增加了服务器的存储压力。此外,滑动验证码对于一些视觉或身体上有限的用户来说可能存在一定的使用难度。 总之,精易web浏览器滑动验证码是一种常见的验证码形式,通过要求用户拖动滑块来验证身份,有效地防止了机器人的攻击。尽管它有一些缺点,但在实际应用仍然具有一定的安全性和可用性。 ### 回答2: 精易web浏览器滑动验证码是一种用于验证用户身份的一种安全措施。它通过在登录和注册页面上添加一个滑动拼图的形式,要求用户在滑动过程完成验证,以确保用户是真人而不是机器人。 这种滑动验证码的实现基于复杂的算法和技术,通过分析用户在滑动过程的行为模式来判断其是否是真实用户。系统会检测用户的滑动轨迹、滑动速度、滑动方向等参数,并与已知的用户数据进行对比,从而确认用户的身份。 在验证过程滑动验证码会在页面上生成一个带有缺口的拼图,用户需要按住拼图并通过滑动将其拖动到正确的位置。通过识别用户在拼图上的滑动行为,系统可以判断用户是否是通过真实的人手操作来完成验证的。 精易web浏览器滑动验证码具有一定的优点。首先,它可以有效防止机器人的恶意登录和注册行为,提高了系统的安全性。其次,相比其他验证码形式,滑动验证码操作简单,用户体验较好,可以降低用户的使用阻力。此外,该验证码还具有一定的自适应性,可以根据不同的设备和浏览器适配不同的验证方式,提高了兼容性和可用性。 总而言之,精易web浏览器滑动验证码是一种安全且方便的验证方式,它通过分析用户的滑动行为来确认用户的真实性,提高了系统的安全性和用户体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值