T11 第一代验证码

一:抓包分析

除去第一页,后续的每一页翻页都会先生成一个验证码,输入正确验证码才能获得下一页数据

image-20260508232839110

image-20260508232910924

请求参数为

1
2
3
4
5
{
"captcha_input":"6TST",
"page_num":4,
"challenge_type":"cap1_challenge"
}

分析完成,直接ddddocr吧

二:ocr识别

直接使用ocr识别,不管你是换背景图还是什么都是不行的,例如我直接识别4个字符只给我识别出2个

image-20260508233254019

要对图片预先进行处理,先裁剪再放大,不知道裁剪多少直接给AI

image-20260508234107383

此区域不固定,大一点小一点都行

image-20260508234358996

根据这个切割值,识别的值有问题,应该是JBXK它识别为IBXK,微调一下切割值

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
def recognize_image(image_path, crop_box=(50, 21, 98, 38), scale_factor=2):
"""
处理验证码图片并识别
Args:
image_path: 原始图片路径
crop_box: 裁剪区域 (left, upper, right, lower)
scale_factor: 放大倍数
"""
# 1. 打开并处理图片
img = Image.open(image_path)

# 裁剪指定区域
cropped_img = img.crop(crop_box)

# 放大图片
width, height = cropped_img.size
resized_img = cropped_img.resize(
(width * scale_factor, height * scale_factor),
Image.Resampling.LANCZOS # 使用正确的重采样方法
)

# 可选:保存处理后的图片用于调试
resized_img.save("processed_captcha.png")

# 2. 初始化ddddocr识别器
ocr = ddddocr.DdddOcr()

# 3. 将PIL图像转换为字节数据
import io
img_byte_arr = io.BytesIO()
resized_img.save(img_byte_arr, format='PNG')
img_byte_arr = img_byte_arr.getvalue()

# 4. 执行识别
result = ocr.classification(img_byte_arr)
return result

识别一定有误差,请求错误多重试几次就好

三:编码与验证

image-20260509000556997

image-20260509000608061

更多内容也在公众号更新:码字的秃猴

tuhou