python自动化调用百度api解决验证码
作者:回忆you呵 发布时间:2023-03-18 19:21:27
标签:python,百度api,验证码
自动化测试验证码登陆的三种解决方式
1,找开发关闭验证码
2,找开发设置万能验证码
3,使用第三方接口识别验证–不能100%识别,比自己搭建的ocr识别的识别率高很多
具体讲的就是第三种-调用百度云识别验证码:
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的获取:
进入:百度云
点击立即使用——进行登陆——实名认证。
按着自己的需求选着,免费的基本上就够用了
这就是自己的AK和SK
然后写入在代码里给AK和SK就行了
来源:https://blog.csdn.net/ckzuishuai/article/details/115482755
0
投稿
猜你喜欢
- 本来非常喜欢偷懒最好就是不干活那种所以最近在研究把Jenkins模块集成起来做成傻瓜界面这样就给他们用本人Python搓望大神不要喷,多多指
- 使用cpan安装Net::SSH::Perl:cpan>install Net::SSH::Perl期间遇到了一些问题,记录在此,以备
- 如图:会出现带有红色波浪线,但是确实有random_walk文件解决方法:在当前文件下,右键找到mark Directory as然后选择s
- icech: 在制作网页的时候,常常要遇到制作虚线表格的问题,下面的文章就能解决这个问题。方法一:作一个1X2的图。半黑半白,再利用表格作成
- 表单输出选项{{ form.as_table }}:以表格形式加载表单元素{{ form.as_p }}:以段落形式加载表单元素{{ for
- 前言这篇博客将介绍光流的概念以及如何使用 Lucas-Kanade 方法估计光流,并演示如何使用 cv2.calcOpticalFlowPy
- 关于 pynput pynput 可以监控我们的键盘和鼠标。目前具有此类功能的库有很多,比如 pygame 等游戏库,但是当我们只需要
- 通过python+splinter,实现在12306网站刷票并自动购票流程(无法自动识别验证码)。此类程序只是提高了12306网站的 <
- 引言这篇文章介绍如何实现页面与 iframe 进行通信,实际工作中可能很难遇到,但一旦遇到了,我们要能够立即想到怎样去实现。iframe 向
- 数据结构和算法算法:解决问题的方法和步骤评价算法的好坏:渐近时间复杂度和渐近空间复杂度。渐近时间复杂度的大O标记:- 常量时间复杂度 - 布
- Vignere密码Vignere Cipher包含用于加密和解密的Caesar Cipher算法. Vignere Cipher与Caesa
- 如题在SQL中 SELECT ... FROM ... ORDER BY abc ASC; 如果abc是字符串,那么结果会按照a-z 中文按
- 声明定位元素:position属性值设置除默认值static以外的元素,包括relative,absolute,fixed。平台:win/I
- 1在配置文件中添加skip-grant-tables后重启mysql,然后直接登录[root@tyjs09 ~]# cat /etc/my.
- 优先级两者放置相同条件,之所以可能会导致结果集不同,就是因为优先级。on的优先级是高于where的。首先明确两个概念:LEFT JOIN 关
- 本文以实例形式简述了Python实现字符串排序的方法,是Python程序设计中一个非常实用的技巧。分享给大家供大家参考之用。具体方法如下:一
- 因此,常常出现这样的错误select * from [IND] where INDID>10unionselect * from [I
- 前言Iframe 是一种将网页嵌入到另一个页面的内容中的方法。这是通过使用 HTML 元素、外部网站的 URL 以及窗口在您的网站上的外观参
- ./runInstaller 启动图形化报错 PRVF-0002 : Could not retrieve local nodename.
- 本文实例讲述了JS+php后台实现文件上传功能。分享给大家供大家参考,具体如下:一、利用 FormData 对象形式上传FormData 是