python+opencv+selenium自动化登录邮箱并实现滑动验证功能
发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要介绍"python+opencv+selenium自动化登录邮箱并实现滑动验证功能"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"python+op
千家信息网最后更新 2026年11月01日python+opencv+selenium自动化登录邮箱并实现滑动验证功能
这篇文章主要介绍"python+opencv+selenium自动化登录邮箱并实现滑动验证功能"的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇"python+opencv+selenium自动化登录邮箱并实现滑动验证功能"文章能帮助大家解决问题。
在我们做自动化登录时,总会遇到各种奇奇怪怪的验证码,滑块验证码就是其中最常见的一种。若我们的程序自动输入账号密码之后,还需要我们人工去滑动验证码那还能称得上是自动化吗?
那么先给大家说一下我的'解题步骤"。
1.使用selenium打开邮箱首页。
2.定位到账号密码框,键入账号密码。
3.获取验证图片,使用opencv处理返回滑块应拖动的距离。
4.创建鼠标事件,模拟拖动滑块完成验证。
需要解决的问题:
1.页面元素的定位。
2.文本框和验证码的frame嵌套。
3.opencv处理验证图片缺口图像匹配并返回距离。
4.webdriver在网页中使用xpath时如何定位自身元素。
5.原始图片尺寸与在网页中的实际尺寸同比例缩放(距离的缩放)。
源代码:
#滑稽研究所出品from selenium.webdriver.common.keys import Keysfrom selenium.webdriver import ActionChainsfrom selenium import webdriverimport requestsimport timeimport cv2#下载图片def download_img(url,filename): r = requests.get(url) with open( filename + ".png", "wb") as f: # 对于图片类型的通过r.content方式访问响应内容,将响应内容写入yanzheng.png中 f.write(r.content) print(filename + "下载完成")def get_image(): #为什么这里要定义全局变量?因为driver在函数内,函数运行完毕就会关闭, #相应的网页也会被关闭,这就是网上很多问为什么网页会自动关闭的原因。 global driver driver= webdriver.Chrome() #获取浏览器对象 driver.get("https://mail.qq.com/") #加载百度首页 #窗口最大化操作,如果窗口过小,会导致后续拖动滑块时出现视野丢失的问题 driver.maximize_window() time.sleep(2) #睡眠两秒 driver.find_element_by_xpath("/html/body/div/div[2]/div/div[1]/div/div[1]/div[2]").click() time.sleep(1) driver.switch_to.frame("login_frame") # driver.find_element_by_xpath("//*[@id="switcher_plogin"]").click() #输入账号密码 input=driver.find_element_by_xpath("//*[@id="u"]")#定位QQ账号框 time.sleep(1) input.send_keys("zhanghao") #搜索框输入内容 input=driver.find_element_by_xpath("//*[@id="p"]")#定位QQ密码框 input.send_keys("你的密码") #搜索框输入内容 print("账号密码输入完成。") #这里停顿一下,不然不会显示滑动验证,应该是检测自动化工具的手段。(反爬) time.sleep(1) driver.find_element_by_xpath("//*[@id="login_button"]").click() #注意我们这里又需要跳到验证码的子框(又一个嵌套) time.sleep(1) driver.switch_to.frame("tcaptcha_iframe") #webdriver的定位方法和浏览器xpath不一样,不能直接定位到标签的属性. #需要首先定位到webelement,之后get到属性!!!!!!! bk = driver.find_element_by_xpath("//*[@id="slideBg"]").get_attribute("src") print(bk) #获取背景和滑块地址,下载到本地。 key = driver.find_element_by_xpath("//*[@id="slideBlock"]").get_attribute("src") print(bk) download_img(bk,filename= "bk") download_img(key,filename= "key") #锁定滑块 slider = driver.find_element_by_xpath("//*[@id="tcaptcha_drag_thumb"]") #获取应滑动距离 dis = get_distance() print(dis) #滑块部分,没有问题,已完成。 newact = ActionChains(driver) newact.click_and_hold(slider).perform() newact.move_by_offset(xoffset=dis-20,yoffset=0).perform() time.sleep(0.5) newact.release().perform()#处理得到滑块应移动的距离。def get_distance(): path = "bk.png" img = cv2.imread(path) path = "key.png" img2 = cv2.imread(path) imgContour = img.copy() print("img.shape:", img.shape) imgGray = cv2.cvtColor(img, cv2.COLOR_BGR2GRAY) imgBlur = cv2.GaussianBlur(imgGray, (3, 3), 1) imgCanny = cv2.Canny(imgBlur, 400, 500) imgGray2 = cv2.cvtColor(img2, cv2.COLOR_BGR2GRAY) imgBlur2 = cv2.GaussianBlur(imgGray2, (3, 3), 1) imgCanny2 = cv2.Canny(imgBlur2, 400, 500) cv2.imshow("O", imgCanny) # 匹配拼图 result = cv2.matchTemplate(imgCanny, imgCanny2, cv2.TM_CCOEFF_NORMED) # 归一化 cv2.normalize(result, result, 0, 1, cv2.NORM_MINMAX, -1) min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(result) print("min_loc:", min_loc) print("max_loc:", max_loc) # 匹配后结果画圈 cv2.rectangle(imgContour, max_loc, (max_loc[0] + 135, max_loc[1] + 135), (0, 0, 255), 2) # 原图为680*390 在浏览器resize为280*161,这里我们只用到宽。所以需要进行同比例缩放。 res = min_loc[0] / (680 / 280) cv2.imshow("Canny Image", imgContour) #这里不可以用0,因为图片窗口会一直显示,程序卡住无法return出距离给滑块功能使用。 cv2.waitKey(100) print("应滑动距离获取成功。") return resif __name__ == "__main__": get_image()下面是运行结果,两种不同的验证码背景图都可以正确识别出来。红框为代码识别缺口之后标记的红框
关于"python+opencv+selenium自动化登录邮箱并实现滑动验证功能"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识,可以关注行业资讯频道,小编每天都会为大家更新不同的知识点。
验证
定位
密码
自动化
图片
账号
内容
输入
功能
邮箱
登录
网页
问题
浏览器
知识
处理
浏览
不同
元素
函数
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
上海喔噻互联网科技有限公司
科技互联网产品
互联网科技公司华为
深圳恒合互联网络科技有限公司
浩特互联网科技
凡科互联网科技
易通互联网络科技有限公司
奔汉互联网科技
大白互联网科技
互联网科技股午盘股票涨跌
成都玖崟互联网科技有限公司乐商圈怎么样
福建科技产业互联网发展
广西互联网科技孵化中心
沐思想互联网科技有限公司
南通创西澳互联网科技有限公司
工业互联网科技成果转化
互联网风格科技公司名称
2021世界互联网领先科技成果发布
东风日产互联网科技公司叫什么
互联网高科技绘画
美国互联网科技
上海致骋互联网科技
互联网科技的未来发展
互联网科技有哪些公司
互联网科技项目计划书材料类
哈尔滨屹滨互联网科技有限公司
互联网金融科技展
美国互联网科技公司
吉林省码上互联网科技电话
北京品多多互联网科技有限公司