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

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

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

相关推荐
智能直播2 小时前
RK3518:1.5G 内存 + 8G 存储,如何跑起硬件编解码、Web、AI 识别、绿幕特效
前端·人工智能·5g
掘金酱3 小时前
【10.24 特别活动】AI 时代,程序员的新饭碗在哪里?
前端·人工智能·后端
excel4 小时前
多进程环境下使用 PM2 部署 Socket.IO:需要注意什么
前端
IT_陈寒4 小时前
Redis的原子性竟然失效了?记一次分布式锁翻车实录
前端·人工智能·后端
_菜鸟果果5 小时前
高德地图 JS API 2.0 在国产 Linux/ARM 电脑上渲染失败 的排查与解决
linux·开发语言·javascript
时间的情敌5 小时前
《回顾 2018 前端:Vue2 成熟期,Webpack4 发布,PWA 大火》
前端
Java后端的Ai之路6 小时前
前端技术Vue-09-webpack-vuejs-实战
前端·vue.js·webpack
LMT流氓兔6 小时前
第五单元——第4课:给工具参数加校验
java·前端·算法·ai·langchain
涛涛ing6 小时前
React Compiler正式“Rust化”:你项目里的Babel插件,正在被编译进打包器
前端