【最新猿人学】 验证码 - 图文点选 文字验证码识别

暗号:aHR0cHM6Ly9tYXRjaC55dWFucmVueHVlLmNuL21hdGNoLzg=

该题为图文点选识别,点击对应的文字后,点击指定的页面,才能获取到对应的数据:

首先进行抓包分析,验证码请求接口一共返回了5个重要的数据:

所以先编写代码访问端口,将image 和 验证码id保存下来

接下来就是最重要的文字识别,我这里是使用easyocr库进行的文字识别,但是识别效率较低,有时候9个字只能够识别出8个

附上代码:

js 复制代码
from PIL import Image

import easyocr

import numpy as np  # 新增:需要转numpy数组

 

# 初始化 OCR(只加载中文,速度快)

reader = easyocr.Reader(['ch_sim'], gpu=True)

 

# --------------- 改成你的图片路径 ----------------

image_path = "更改为你的图片名字"

img = Image.open(image_path)

w, h = img.size

 

# 自动切 3x3 格子

hz = []

cell_w = w//3

cell_h = h//3

 

print("开始识别 9 个格子文字...\n")

for row in range(3):

    for col in range(3):

        x1 = col * cell_w

        y1 = row * cell_h

        x2 = x1 + cell_w

        y2 = y1 + cell_h

 

        # 裁剪格子

        cell = img.crop((x1, y1, x2, y2))

 

        # 修复:PIL Image 转 numpy 数组,再传给 easyocr

        cell_np = np.array(cell)

 

        # 识别

        result = reader.readtext(cell_np, detail=0)

        text = result[0] if result else ""

        hz.append(text.strip())

 

print(hz)

上面说到,这个文字识别库识别效率比较低,所以我使用了死循环,如果识别后要点击的4个字都在识别的文字列表里面,才结束循环:

点击坐标识别我是模拟了九个点的坐标,并且使用列表来完成:

js 复制代码
from random import randint as r

zb=\[\[51+r(-5,5),54+r(-5,5)],\[140+r(-5,5),50+r(-5,5)],\[255+r(-5,5),50+r(-5,5)],\[54+r(-5,5),158+r(-5,5)],\[157+r(-5,5),140+r(-5,5)],\[270+r(-5,5),140+r(-5,5)],\[57+r(-5,5),280+r(-5,5)],\[157+r(-5,5),253+r(-5,5)],\[252+r(-5,5),258+r(-5,5)]]

之后再看验证接口,参数一共需要带两个,这里没有使用到任何加密:

这里有一个小坑!!!

接口中clicks参数中的x和y是由双引号引起来的,所以访问的时候也要使用双引号,可使用 str.replace("'", """) 将单引号改为双引号,如果传入的是单引号,会导致验证失败

之后就能正确获取到数据:

相关推荐
子非鱼a2 小时前
【WEB】multiSQL
前端
lemon_sjdk3 小时前
DOM 节点
java·前端·javascript
nvd113 小时前
深入现代 Web 鉴权架构:网关统一代理 (Forward-Auth) vs 前端持有 JWT 的终极选型与边缘同域实践
前端·架构·状态模式
leoZ2313 小时前
2026-09-09-springboot-cloud-deploy-pitfalls
java·前端·javascript·vue.js·人工智能·spring boot·后端
YWL3 小时前
OpenLayers弹窗Overlay深度实战
前端·vue·openlayers
YWL3 小时前
OpenLayers+ECharts联动:地图点击联动图表,数据可视化大屏方案
前端·信息可视化·vue·echarts·openlayers
芭拉拉小魔仙4 小时前
Vue 2 门诊收费系统中的医保结算流程设计与实践
前端·javascript·vue.js
moonrailgun4 小时前
用 Node.js 复刻 Codex Astra 的终端星光
前端·javascript·算法
海上彼尚4 小时前
Cursor 模型的强度实测排行
前端·人工智能·后端
默_笙4 小时前
💫 给金鱼建图书馆(下):Milvus 向量数据库,让 AI 拥有长期记忆
前端·javascript