Python自动化调用百度API实现验证码识别
本文介绍Python自动化测试中处理验证码的三种常见方式,重点详解调用百度云API进行图像识别的方法。内容涵盖AK/SK密钥获取、Selenium截图截取验证码区域、调用百度接口获取Token及识别结果,并提供完整代码示例。
自动化测试验证码的三种解决方式
在自动化测试过程中,验证码登录往往是一个难点。目前解决验证码问题主要有三种常见途径。
第一种方案是与开发团队沟通,直接关闭验证码功能;第二种方案是要求开发设置万能验证码,用于特定测试环境;第三种方案则是利用第三方接口进行验证码识别。虽然第三方接口无法保证100%的识别准确率,但其识别率通常远高于自行搭建的OCR识别系统。
调用百度云识别验证码实现流程
本文将具体讲解第三种方案,即如何通过Python调用百度云接口来识别验证码。
Python调用百度API完整代码示例
from selenium import webdriver
from PIL import Image
import base64
import requests
import time
def baidu_api(Verification_code, AK, SK):#Verification_code验证码路径,AK,SK百度云的身份识别码
chrome.get_screenshot_as_file('reg.png') # 获取登陆页面的图片
code_img = chrome.find_element_by_xpath(Verification_code) # 找到验证码图片的位置
img = Image.open('reg.png')# 保存图片
c_img = img.crop((code_img.location['x'], code_img.location['y'], code_img.location['x'] + code_img.size['width'],
code_img.location['y'] + code_img.size['height'])) # 截取验证码图片
c_img.save('reg_code.png')
host = 'https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&' \
'client_id='+AK+'&' \
'client_secret='+ SK
response = requests.get(host)
token = response.json()['access_token']
request_url = "https://aip.baidubce.com/rest/2.0/ocr/v1/accurate_basic"
f = open('reg_code.png', 'rb')# 二进制方式打开图片文件
img = base64.b64encode(f.read())
params = {"image": img}
access_token = token
request_url = request_url + "?access_token=" + access_token
headers = {'content-type': 'application/x-www-form-urlencoded'}
response = requests.post(request_url, data=params, headers=headers)
dict_a = response.json()['words_result']
if response:
dict_a = eval(str(dict_a)[1:-1])#数据类型的格式转换
dict_a = dict(dict_a)#转化为字典类型
dict_a = dict_a['words']
dict_a = "".join(dict_a.split()) # 使用一个空字符串合成列表内容生成新的字符串
dict_a = dict_a.lower()#把大写字母改为小写字母
return dict_a
else:
chrome.refresh()
chrome = webdriver.Chrome()#浏览器实例化
chrome.maximize_window()#最大化浏览器
chrome.get('自己登陆的网址')
test = baidu_api(Verification_code, AK, SK)#返回识别的验证码
chrome = webdriver.Chrome()
print(test)#验证码
百度云AK与SK密钥获取指南
首先需要获取百度云的Access Key(AK)和Secret Key(SK)。操作步骤如下:登录百度云控制台,点击“立即使用”并登录账号,完成实名认证后即可获取相关权限。

在创建应用时,根据实际需求选择服务类型。对于大多数测试场景,免费套餐通常已足够使用。

应用创建完成后,系统会生成对应的AK和SK,这两个密钥是调用API的身份凭证。
将获取到的AK和SK直接写入Python代码中,即可开始调用接口进行识别。
至此,关于Python自动化调用百度API解决验证码的介绍已完成。如需了解更多Python调用百度API验证相关内容,可搜索本站往期文章或继续浏览后续内容,感谢支持。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













