当前位置: 首页 > news >正文

滑块识别验证

滑块识别

1. 获取图片

测试网站:https://www.geetest.com/adaptive-captcha-demo

2. 点击滑块拼图并开始验证

# 1.打开首页
driver.get('https://www.geetest.com/adaptive-captcha-demo')# 2.点击【滑动拼图验证】
tag = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(By.XPATH,'//*[@id="gt-showZh-mobile"]/div/section/div/div[2]/div[1]/div[2]/div[3]/div[3]'
))
tag.click()# 3.点击开始验证
tag = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(By.CLASS_NAME,'geetest_btn_click'
))
tag.click()

请添加图片描述

3. 获取背景图片与缺口图片

# 4.读取背景图片
def fetch_bg_func(dv):tag_object = dv.find_element(By.CLASS_NAME,'geetest_bg')style_string = tag_object.get_attribute("style")match_list = re.findall('url\(\"(.*)\"\);', style_string)  # ["http..." ]if match_list:return match_list[0]bg_image_url = WebDriverWait(driver, 30, 0.5).until(fetch_bg_func)  # 新的函数 = 某个函数('geetest_bg')
print("背景图:", bg_image_url)# 5.读取缺口图片
def fetch_slice_func(dv):tag_object = dv.find_element(By.CLASS_NAME,'geetest_slice_bg')style_string = tag_object.get_attribute("style")match_list = re.findall('url\(\"(.*)\"\);', style_string)if match_list:return match_list[0]slice_image_url = WebDriverWait(driver, 30, 0.5).until(fetch_slice_func)  # 新的函数 = 某个函数('geetest_slice_bg')
print("缺口图:", slice_image_url)

请添加图片描述

4. 识别图片

背景图: https://static.geetest.com/captcha_v4/e70fbf1d77/slide/491f18e9b8/2022-04-21T09/bg/031bfe44f51149da9e7adbecfbdac599.png

缺口图: https://static.geetest.com/captcha_v4/e70fbf1d77/slide/491f18e9b8/2022-04-21T09/slice/031bfe44f51149da9e7adbecfbdac599.png

4.1 ddddocr

import ddddocr
import requestsslice_bytes = requests.get(slice_image_url).content
bg_bytes = requests.get(bg_image_url).contentslide = ddddocr.DdddOcr(det=False, ocr=False,show_ad=False)  # det=False:表示不进行文本检测。ocr=False:表示不进行文本识别。show_ad=False:表示不显示广告。
res = slide.slide_match(slice_bytes, bg_bytes, simple_target=True)
x1, y1, x2, y2 = res['target']
print(x1, y1, x2, y2)  # 196 12 276 92

4.2 打码平台

网址:http://www.ttshitu.com/

import base64
import requestsbg_bytes = requests.get(bg_image_url).content
b64_string = base64.b64encode(bg_bytes).decode('utf-8')data = {"username": "自己的用户名", "password": "自己的密码", "typeid": 33, "image": b64_string}
res = requests.post("http://api.ttshitu.com/predict", json=data)
data_dict = res.json()
distance = data_dict['data'] # 只返回横坐标
print(distance)  # {'result': '173', 'id': 't0pNdrJjTCmXScFtGRofaw'}

5. Selenium滑动

from selenium.webdriver import ActionChainstag = driver.find_element(By.CLASS_NAME, 'geetest_btn')
time.sleep(2)ActionChains(driver).click_and_hold(tag).perform()  # 点击并抓住标签
ActionChains(driver).move_by_offset(xoffset=x1, yoffset=0).perform()  # 向右滑动114像素(向左是负数)
ActionChains(driver).release().perform()  # 释放time.sleep(3)

请添加图片描述

6. 完整代码

import re
import timeimport ddddocr
import requests
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.wait import WebDriverWaitdriver = webdriver.Edge()# 1.打开首页
driver.get('https://www.geetest.com/adaptive-captcha-demo')# 2.点击【滑动拼图验证】
tag = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(By.XPATH,'//*[@id="gt-showZh-mobile"]/div/section/div/div[2]/div[1]/div[2]/div[3]/div[3]'
))
tag.click()# 3.点击开始验证
tag = WebDriverWait(driver, 30, 0.5).until(lambda dv: dv.find_element(By.CLASS_NAME,'geetest_btn_click'
))
tag.click()# 4.读取背景图片
def fetch_bg_func(dv):tag_object = dv.find_element(By.CLASS_NAME,'geetest_bg')style_string = tag_object.get_attribute("style")match_list = re.findall('url\(\"(.*)\"\);', style_string)  # ["http..." ] if match_list:return match_list[0]bg_image_url = WebDriverWait(driver, 30, 0.5).until(fetch_bg_func)  # 新的函数 = 某个函数('geetest_bg')
print("背景图:", bg_image_url)# 4.读取缺口图片
def fetch_slice_func(dv):tag_object = dv.find_element(By.CLASS_NAME,'geetest_slice_bg')style_string = tag_object.get_attribute("style")match_list = re.findall('url\(\"(.*)\"\);', style_string)if match_list:return match_list[0]slice_image_url = WebDriverWait(driver, 30, 0.5).until(fetch_slice_func)  # 新的函数 = 某个函数('geetest_slice_bg')
print("缺口图:", slice_image_url)# 5.识别图片坐标
slice_bytes = requests.get(slice_image_url).content
bg_bytes = requests.get(bg_image_url).contentslide = ddddocr.DdddOcr(det=False, ocr=False,show_ad=False)  # det=False:表示不进行文本检测。ocr=False:表示不进行文本识别。show_ad=False:表示不显示广告。
res = slide.slide_match(slice_bytes, bg_bytes, simple_target=True)
x1, y1, x2, y2 = res['target']
print(x1, y1, x2, y2)  # 196 12 276 92# 6.滑动滑块
tag = driver.find_element(By.CLASS_NAME, 'geetest_btn')
time.sleep(2)
ActionChains(driver).click_and_hold(tag).perform()  # 点击并抓住标签
ActionChains(driver).move_by_offset(xoffset=x1, yoffset=0).perform()  # 向右滑动114像素(向左是负数)
ActionChains(driver).release().perform()  # 释放time.sleep(3)

相关文章:

滑块识别验证

滑块识别 1. 获取图片 测试网站:https://www.geetest.com/adaptive-captcha-demo 2. 点击滑块拼图并开始验证 # 1.打开首页 driver.get(https://www.geetest.com/adaptive-captcha-demo)# 2.点击【滑动拼图验证】 tag WebDriverWait(driver, 30, 0.5).until(la…...

每日五道java面试题之java基础篇(四)

第一题. 访问修饰符 public、private、protected、以及不写(默认)时的区别? Java 中,可以使⽤访问控制符来保护对类、变量、⽅法和构造⽅法的访问。Java ⽀持 4 种不同的访问权限。 default (即默认,什么也不写&…...

我的docker随笔43:问答平台answer部署

本文介绍开源问答社区平台Answer的容器化部署。 起因 笔者一直想搭建一个类似stack overflower这样的平台,自使用了Typora,就正式全面用MarkdownTyporagit来积累自己的个人知识库,但没有做到web化,现在也还在探索更好的方法。 无…...

17、ELK

17、ELK helm 安装 elkfk&#xff08;kafka 集群外可访问&#xff09; ES/Kibana <— Logstash <— Kafka <— Filebeat 部署顺序&#xff1a; 1、elasticsearch 2、kibana 3、kafka 4、logstash 5、filebeat kubectl create ns elkhelm3部署elkfk 1、elast…...

React+Antd+tree实现树多选功能(选中项受控+支持模糊检索)

1、先上效果 树型控件&#xff0c;选中项形成一棵新的树&#xff0c;若父选中&#xff0c;子自动选中&#xff0c;子取消&#xff0c;父不取消&#xff0c;子选中&#xff0c;所有的父节点自动取消。同时支持模糊检索&#xff0c;会检索出所有包含该内容的关联节点。 2、环境准…...

鸿蒙 WiFi 扫描流程(2)

接着上篇没有记录完的&#xff0c;我们继续梳理&#xff0c;需要上一篇做基础的请看&#xff1a;鸿蒙 WiFi 扫描流程&#xff08;1&#xff09; 上一篇我们讲到 scan_service.cpp 里面的 SingleScan 方法&#xff0c;继续这个方法往下看&#xff1a; // foundation/communicat…...

微信小程序(四十)API的封装与调用

注释很详细&#xff0c;直接上代码 上一篇 新增内容&#xff1a; 1.在单独的js文件中写js接口 2.以注册为全局wx的方式调用接口 源码&#xff1a; utils/testAPI.js const testAPI{/*** * param {*} title */simpleToast(title提示){//可传参&#xff0c;默认为‘提示’wx.sho…...

WebSocket+Http实现功能加成

WebSocketHttp实现功能加成 前言 首先&#xff0c;WebSocket和HTTP是两种不同的协议&#xff0c;它们在设计和用途上有一些显著的区别。以下是它们的主要特点和区别&#xff1a; HTTP (HyperText Transfer Protocol): 请求-响应模型&#xff1a; HTTP 是基于请求-响应模型的协…...

go语言实现LRU缓存

go语言实现LRU Cache 题目描述详细代码 题目描述 设计和构建一个“最近最少使用”缓存&#xff0c;该缓存会删除最近最少使用的项目。缓存应该从键映射到值(允许你插入和检索特定键对应的值)&#xff0c;并在初始化时指定最大容量。当缓存被填满时&#xff0c;它应该删除最近最…...

git的奇特知识点

展示帮助信息 git help -gThe common Git guides are:attributes Defining attributes per pathcli Git command-line interface and conventionscore-tutorial A Git core tutorial for developerscvs-migration Git for CVS usersdiff…...

按键扫描16Hz-单片机通用模板

按键扫描16Hz-单片机通用模板 一、按键扫描的原理1、直接检测高低电平类型2、矩阵扫描类型3、ADC检测类型二、key.c的实现1、void keyScan(void) 按键扫描函数①void FHiKey(void) 按键按下功能②void FSameKey(void) 按键长按功能③void FLowKey(void) 按键释放功能三、key.h的…...

在容器镜像中为了安全为什么要删除 setuid 和 setgid?

在容器镜像中删除 setuid&#xff08;set user ID&#xff09;和 setgid&#xff08;set group ID&#xff09;权限通常是出于安全考虑。这两个权限位允许进程在执行时以文件所有者或文件所属组的身份运行&#xff0c;而不是以调用进程的用户身份运行。 删除 setuid 和 setgid…...

Flink 动态表 (Dynamic Table) 解读

博主历时三年精心创作的《大数据平台架构与原型实现&#xff1a;数据中台建设实战》一书现已由知名IT图书品牌电子工业出版社博文视点出版发行&#xff0c;点击《重磅推荐&#xff1a;建大数据平台太难了&#xff01;给我发个工程原型吧&#xff01;》了解图书详情&#xff0c;…...

【原创 附源码】Flutter海外登录--Google登录最详细流程

最近接触了几个海外登录的平台&#xff0c;踩了很多坑&#xff0c;也总结了很多东西&#xff0c;决定记录下来给路过的兄弟坐个参考&#xff0c;也留着以后留着回顾。更新时间为2024年2月8日&#xff0c;后续集成方式可能会有变动&#xff0c;所以目前的集成流程仅供参考&#…...

第70讲axios后端请求工具类封装

axios工具类封装&#xff1a; // 引入axios import axios from axios;// 创建axios实例 const httpService axios.create({// url前缀-http:xxx.xxx// baseURL: process.env.BASE_API, // 需自定义baseURL:http://localhost:80/,// 请求超时时间timeout: 3000 // 需自定义 })…...

【数学建模】【2024年】【第40届】【MCM/ICM】【F题 减少非法野生动物贸易】【解题思路】

一、题目 &#xff08;一&#xff09; 赛题原文 2024 ICM Problem F: Reducing Illegal Wildlife Trade Illegal wildlife trade negatively impacts our environment and threatens global biodiversity. It is estimated to involve up to 26.5 billion US dollars per y…...

第3节、电机定速转动【51单片机+L298N步进电机系列教程】

↑↑↑点击上方【目录】&#xff0c;查看本系列全部文章 摘要&#xff1a;本节介绍用定时器定时的方式&#xff0c;精准控制脉冲时间&#xff0c;从而控制步进电机速度。 一、计算过程 电机每一步的角速度等于走这一步所花费的时间&#xff0c;走一步角度等于步距角&#xff…...

【51单片机】LCD1602(可视化液晶屏)调试工具的使用

前言 大家好吖&#xff0c;欢迎来到 YY 滴 单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY…...

Netty应用(四) 之 Reactor模型 零拷贝

目录 6.Reactor模型 6.1 单线程Reactor 6.2 主从多线程Reactor (主--->Boss | 从--->Worker | 一主多从机制) 7.扩展与补充 8.Reactor模型的实现 8.1 多线程Reactor模型的实现&#xff08;一个Boss线程&#xff0c;一个Worker线程&#xff09; 8.2 多线程Reactor模…...

Huggingface上传模型

Huggingface上传自己的模型 参考 https://juejin.cn/post/7081452948550746148https://huggingface.co/blog/password-git-deprecationAdding your model to the Hugging Face Hub&#xff0c; huggingface.co/docs/hub/ad…Welcome&#xff0c;huggingface.co/welcome三句指…...

基于RexUniNLU的Linux系统日志智能分析方案

基于RexUniNLU的Linux系统日志智能分析方案 1. 引言 每天面对海量的Linux系统日志&#xff0c;是不是感觉头大&#xff1f;服务器突然卡顿&#xff0c;排查问题就像大海捞针&#xff0c;一行行翻日志看得眼睛都花了。传统的关键词搜索和正则匹配已经跟不上现代运维的需求&…...

5个技巧让文件识别效率翻倍:Magika智能检测工具深度解析

5个技巧让文件识别效率翻倍&#xff1a;Magika智能检测工具深度解析 【免费下载链接】magika 项目地址: https://gitcode.com/GitHub_Trending/ma/magika 还在为文件类型识别烦恼吗&#xff1f;传统工具常常误判&#xff0c;而手动检查又太耗时。让我们一起探索Magika—…...

终极指南:如何为MiniSearch编写自定义插件和扩展,打造专属搜索体验

终极指南&#xff1a;如何为MiniSearch编写自定义插件和扩展&#xff0c;打造专属搜索体验 【免费下载链接】minisearch Tiny and powerful JavaScript full-text search engine for browser and Node 项目地址: https://gitcode.com/gh_mirrors/mi/minisearch MiniSear…...

大麦抢票神器:3分钟快速上手,轻松搞定热门演出门票

大麦抢票神器&#xff1a;3分钟快速上手&#xff0c;轻松搞定热门演出门票 【免费下载链接】ticket-purchase 大麦自动抢票&#xff0c;支持人员、城市、日期场次、价格选择 项目地址: https://gitcode.com/GitHub_Trending/ti/ticket-purchase 你是一个文章写手&#x…...

all-MiniLM-L6-v2入门必读:轻量级Embedding模型选型、部署与评估全流程

all-MiniLM-L6-v2入门必读&#xff1a;轻量级Embedding模型选型、部署与评估全流程 想找一个又快又小的文本嵌入模型&#xff0c;但又担心效果不好&#xff1f;很多开发者在做语义搜索、文本分类或者智能问答时&#xff0c;都会遇到这个难题。大模型效果好但太慢&#xff0c;小…...

模型加载与初始化(3)

前言 在 llama.cpp 中&#xff0c;模型推理主要基于 GGUF 格式展开。GGUF 是一种专为存储基于 GGML 及其相关执行器进行推理的模型文件而设计的格式。作为一种二进制格式&#xff0c;其设计初衷在于实现模型的高效加载与保存&#xff0c;并确保良好的易读性。本章将深入探讨大语…...

保姆级避坑指南:用VMware ESXi 8.0给vCenter Server 8.0单独划个“家”(存储+网络配置详解)

VMware ESXi 8.0环境下的vCenter Server 8.0专属部署指南 在虚拟化环境中&#xff0c;vCenter Server作为整个VMware生态系统的"大脑"&#xff0c;其部署的稳定性和可靠性直接影响整个虚拟化平台的运行质量。本文将深入探讨如何在ESXi 8.0环境中为vCenter Server 8.0…...

Typora风格技术文档创作:集成SenseVoice-Small实现语音速记

Typora风格技术文档创作&#xff1a;集成SenseVoice-Small实现语音速记 每次在Typora里敲代码、写文档&#xff0c;是不是都有过这样的瞬间&#xff1f;脑子里灵光一闪&#xff0c;一段绝妙的思路或者一个关键的描述&#xff0c;手速却跟不上。等你好不容易敲完几个字&#xf…...

DAMOYOLO-S基础教程:理解count字段与实际业务中目标计数逻辑映射

DAMOYOLO-S基础教程&#xff1a;理解count字段与实际业务中目标计数逻辑映射 1. 从一次“数数”的困惑说起 前两天&#xff0c;一个做零售分析的朋友找我帮忙。他兴奋地告诉我&#xff0c;他们用上了最新的AI目标检测模型&#xff0c;想自动统计货架上的商品数量。他上传了一…...

Fish Speech 1.5语音克隆对比实验:5秒vs10秒参考音频效果差异分析

Fish Speech 1.5语音克隆对比实验&#xff1a;5秒vs10秒参考音频效果差异分析 1. 实验背景与目的 语音克隆技术正在改变我们与数字内容互动的方式&#xff0c;而Fish Speech 1.5作为新一代文本转语音模型&#xff0c;在声音克隆方面表现出色。但在实际应用中&#xff0c;一个…...