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

暗号: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("'", """) 将单引号改为双引号,如果传入的是单引号,会导致验证失败

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

相关推荐
DianSan_ERP3 小时前
电商架构演进:如何在高并发场景下实现多平台API的标准化履约?
运维·前端·网络·安全·架构·自动化
碎_浪6 小时前
给键盘党的英语记忆工具:我做了一款「打字背单词」桌面应用
前端·程序员·ai编程
阿成学长_Cain7 小时前
Linux dirs命令详解|Bash目录堆栈管理快速切换目录实战教程
linux·运维·前端·数据库
多加点辣也没关系7 小时前
JavaScript|第4章:类型转换
开发语言·javascript
yqcoder7 小时前
httpOnly 是什么,又有什么用?
开发语言·前端·javascript
IT_陈寒7 小时前
Java的Stream.parallel()把我CPU跑爆了,这种优化要谨慎
前端·人工智能·后端
小皮虾7 小时前
小程序首页性能优化实战:从 4 秒到 1.8 秒
前端·微信小程序
烬羽8 小时前
还在手动拼路径、写回调地狱?一文吃透 Node.js 的 path 和 fs
javascript·程序员·node.js
山河木马8 小时前
GPU自动处理专题1-裁剪到底在裁什么(裁剪)
前端·webgl·计算机图形学