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


请求参数为
1 2 3 4 5
| { "captcha_input":"6TST", "page_num":4, "challenge_type":"cap1_challenge" }
|
分析完成,直接ddddocr吧
二:ocr识别
直接使用ocr识别,不管你是换背景图还是什么都是不行的,例如我直接识别4个字符只给我识别出2个

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

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

根据这个切割值,识别的值有问题,应该是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
|
识别一定有误差,请求错误多重试几次就好
三:编码与验证


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