- A+
所属分类:python实战案例
百度网盘在批量创建群组时会出现验证码,验证码比较复杂有时肉眼也看不清,需要不断的切换。早期通过脚本然后连接第三方打码平台接口,如:图鉴等进行自动打码,但是需要申请账号等等相对来说多了一步就多了一步的麻烦,如是想着有没有好的库自建接口直接进行打码或者直接返回已经成功的验证码和验证值。网上找到ddddocr 要求python3.8以上版本,然后通过fastapi搭建一个接口直接获取到验证码键值对。
- # -*-coding:utf-8-*-
- # cython: language_level=3
- ___author___ = 'anshingy'
- ___contact___ = 'qq541182238'
- ___date___ = '2024/12/21'
- import random
- import requests
- import ddddocr
- """
- Ⅰ. set_ranges 方法限定返回字符返回
- 本方法接受1个参数,如果输入为int类型为内置的字符集限制,string类型则为自定义的字符集
- 如果为int类型,请参考下表
- 参数值 意义
- 0 纯整数0-9
- 1 纯小写英文a-z
- 2 纯大写英文A-Z
- 3 小写英文a-z + 大写英文A-Z
- 4 小写英文a-z + 整数0-9
- 5 大写英文A-Z + 整数0-9
- 6 小写英文a-z + 大写英文A-Z + 整数0-9
- 7 默认字符库 - 小写英文a-z - 大写英文A-Z - 整数0-9
- 如果为string类型请传入一段不包含空格的文本,其中的每个字符均为一个待选词 如:"0123456789+-x/=""
- """
- ocr = ddddocr.DdddOcr()
- for j in range(10):
- # random_float = random.uniform(0, 1)
- url_getcaptcha = 'https://pan.baidu.com/api/getcaptcha?prod=mbox&clienttype=0&app_id=250528&web=1'
- res = requests.get(url_getcaptcha).json()
- raw_ans = res.get('raw_ans')
- vcode_str = res.get('vcode_str')
- url = res.get('vcode_img')
- s = ''
- for _ in range(10):
- content = requests.get(url).content
- with open(f'{j}.png','wb') as f:
- f.write(content)
- # image = open("test.jpg", "rb").read()
- # ocr.set_ranges("0123456789+-x/=")
- ocr.set_ranges(raw_ans)
- result = ocr.classification(content, probability=True)
- s = ""
- for i in result['probability']:
- s += result['charsets'][i.index(max(i))]
- if len(s)==4:
- break
- print(s,vcode_str)
我的微信公众号
爱真理,得永生! 爱在灵灵久博客,网罗天下,福利大家!