百度智能云文字识别
现在好多的网址在登录时都需要输入验证码才能够登录成功,防止被恶意登录
今天我就教你们一招用百度智能云来帮助我们破解验证码
首先,先申请百度智能云: https://cloud.baidu.com/
然后在人工智能 -> 文字识别模块 新建一个应用
建立成功后,会分配给你一个key和secret
只不过这个接口免费版的每秒最多只能请求两次,一天有500次的请求机会
这里推荐使用高精度的接口,普通的识别率太差了
在帮助文档里找到 通用文字识别(高精度版)
第一步,获取access_token
# 获取token
res = requests.get("https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=你的key&client_secret=你的秘钥")
res = json.loads(str(res.text))
token = res['access_token']
然后请求高精度识别接口,需要注意一点,这里图片需要转换成base64编码
# 接口地址
url = 'https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic?access_token=' + token
# 定义头部信息
myheaders = {'Content-Type': 'application/x-www-form-urlencoded'}
# 操作图片
myimg = open('./code.png', 'rb')
# 读取图片
temp_img = myimg.read()
myimg.close()
# 进行base64编码
temp_data = {'image':base64.b64encode(temp_img)}
# 对图片地址进行urlencode操作
temp_data = urllib.parse.urlencode(temp_data)
# 请求视图接口
res = requests.post(url=url, data=temp_data, headers=myheaders)
code = res.json()['words_result'][0]['words']
百度接口会将识别出的验证码文字返回给你,当然了有一定误差是在所难免的
现在验证码识别已经搞定,问题的关键是,每次打开页面的时候,怎么将图片传给百度接口
其实很简单,我们可以考虑使用selenium自动化工具来截图,selenium是可以根据选择器做局部截图的
selenium驱动下载地址: http://npm.taobao.org/mirrors/chromedriver/
就是这么简单,最后附上项目地址: https://github.com/TianShangXing/mydjango