调用第三方api识别验证码——OCR

来源:Pixiv 画师( 紫李鳥 

工具类 OCR.py

import base64
import os
import urllib.request
import ssl
def urllib_download(IMAGE_URL,file_path):
    os.makedirs('./image/', exist_ok=True)
    from urllib.request import urlretrieve
    urlretrieve(IMAGE_URL, file_path)
def get_base64_data(file_path):
    with open(file_path, 'rb') as f:
        image_data = f.read()
        base64_data = base64.b64encode(image_data)
        return base64_data
def OCR(image):
    host = 'https://api.3023data.com'
    path = '/ocr/captcha'
    method = 'POST'
    appcode = '5eec0605766eb73f0bcd4afbb3ec5ff5'
    querys = ''
    bodys = {}
    url =host+path

    bodys['image'] = image
    bodys['length'] = '''0'''
    bodys['type'] = '''1001'''
    post_data = urllib.parse.urlencode(bodys).encode('utf8')
    request = urllib.request.Request(url, post_data)
    request.add_header('Authorization', 'APPCODE ' + appcode)
    # 根据API的要求,定义相对应的Content-Type
    request.add_header('key','5eec0605766eb73f0bcd4afbb3ec5ff5')
    ctx = ssl.create_default_context()
    ctx.check_hostname = False
    ctx.verify_mode = ssl.CERT_NONE
    response = urllib.request.urlopen(request, context=ctx)
    content = response.read()
    # os.remove('./image/code.jpg')
    if content:
        content=eval(str(content,encoding='utf8'))
        try:
            return content['data']['captcha']
        except:
            return content['message']
    else:
        return 'content无效'

测试工具类

import OCR

IMAGE_URL = "http://passport2.chaoxing.com/num/code?1574219706006"
file_path='./image/code.jpg'


OCR.urllib_download(IMAGE_URL,file_path)
msg=OCR.OCR(OCR.get_base64_data(file_path))
print(msg)      #建立连接时传入页面即可

实战:

……

发表回复