Python通过百度api识别验证码,并结合selenium实现自动登陆功能

Python:打造自己的验证码(附详细源码) 调用该函数后,会生成一个包含随机字符的字符串和一张验证码图片,并将文件名和字符串一起返回。在代码最后,我们对该函数进行了一个简单的测试,输出了生成的验证码和保存的文件路径。通过验证码的使用,可以有效地防范恶意攻击和恶意访问,保护用户的账号和隐私信息。通过这个示例,我们可以看出,Python 的 Pillow 库和 random、string 模块非常强大,可以帮助我们快速生成和处理各种类型的数据。同时,由于每次生成的验证码都是不同的,我们还可以将其与用户输入的验证码进行比较,从而验证用户的身份。 阅读详情

1.使用的库

使用的库:baidu-aip, pillow, selenium.
如果没有安装,可以在cmd中输入:

很多人学习python,不知道从何学起。
很多人学习python,掌握了基本语法过后,不知道在哪里寻找案例上手。
很多已经做案例的人,却不知道如何去学习更加高深的知识。
那么针对这三类人,我给大家提供一个好的学习平台,免费领取视频教程,电子书籍,以及课程的源代码!
QQ群:961562169

pip install baidu-aip
pip install pillow 
pip install selenium

2.实现功能

(1)账号密码的输入

在这里插入图片描述

以上是我校综合服务平台登陆网站的一部分,想要实现自动登陆,账号密码可以通过selenium的

find_element_by_id()
send_keys()

来进行自动输入账号密码。

功能实现代码如下:

account=driver.find_element_by_id('account')
account.send_keys('') #你自己的账号

password=driver.find_element_by_id('password')
password.send_keys('') #你自己的密码

关于element的详细使用方法请参考其他博文

(3) 验证码的获取与识别

验证码的识别请参考我的另一篇文章:
Python通过百度API进行文字识别(baidu-aip)一:简单识别验证码
这里简单描述如何获取二维码。

(一)

首先使用selenium的maxside_window()使得窗口最大化,接着使用save_screenshot()来保存网站截图。

driver=webdriver.Chrome()
driver.maximize_window()
time.sleep(1)
url='https://' #这里填你想要的网站
driver.get(url)
driver.save_screenshot('D:/PYTHON/baidu_ocr/save_screenshot.png') #储存地址可以选你喜欢的(尽量不要有空格和中文,有时会有奇奇怪怪的问题)

(二)

接着获取验证码在网站上具体位置,然后获取验证码的长宽,即可得出验证码的四个点的位置。用crop()函数处理刚刚获取的网站截图,从而获取验证码的图片。

code_ele = driver.find_element_by_id('codeimg')
print("验证码的坐标为:", code_ele.location)
print("验证码的大小为:", code_ele.size)
#验证码的坐标为: {'x': 1723, 'y': 581}
#验证码的大小为: {'height': 48, 'width': 96}

# (4)图片4个点的坐标位置
left = code_ele.location['x']#x点的坐标
top = code_ele.location['y']#y点的坐标
right = code_ele.size['width']+left#上面右边点的坐标
down = code_ele.size['height']+top#下面右边点的坐标
image = Image.open('')
#这里请填你截图所存的地方
code_image=image.crop((left,top,right,down))
code_image.save('D:/PYTHON/baidu_ocr/code_image.png')

(三)

调用百度图片识别API,对储存在本地的二维码进行识别,具体使用方法请见:Python通过百度API进行文字识别(baidu-aip)一:简单识别验证码

APP_ID=''
API_KEY=''
SECRET_KEY=''
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    
#读取图片 

def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

image = get_file_content('D:/PYTHON/baidu_ocr/code_image.png')

# 调用通用文字识别(高精度版) """
code_ocr_original_result=client.basicAccurate(image)

(四)

对百度识图API输出的结果进行处理。
百度API识图输出的格式如下:

{
“log_id”: 2471272194,
“words_result_num”: 2,
“words_result”:
[
{“words”: " TSINGTAO"},
{“words”: “青島睥酒”}
]
}

可以看出“word”的内容是有效的,现在来提取words的内容,代码参考如下:

for text in code_ocr_original_result.get('words_result'):
    code_ocr_final_result=text.get('words')
    print(text.get('words'))

提取出来的words有时候会含有空格(验证码字符大小不一,百度会将空隙识别成空格)

code_ocr_final_result_with_out=code_ocr_final_result.replace(' ','')

(五)

输入验证码

code_input=driver.find_element_by_id('rancode')
code_input.send_keys(code_ocr_final_result_with_out)

3.代码

from aip import AipOcr
from selenium import webdriver
import time
from PIL import Image

driver=webdriver.Chrome()
driver.maximize_window()
time.sleep(1)
url='https://'
driver.get(url)
driver.save_screenshot('D:/PYTHON/baidu_ocr/save_screenshot.png')

code_ele = driver.find_element_by_id('codeimg')
print("验证码的坐标为:", code_ele.location)
print("验证码的大小为:", code_ele.size)
#验证码的坐标为: {'x': 1723, 'y': 581}
#验证码的大小为: {'height': 48, 'width': 96}

# (4)图片4个点的坐标位置
left = code_ele.location['x']#x点的坐标
top = code_ele.location['y']#y点的坐标
right = code_ele.size['width']+left#上面右边点的坐标
down = code_ele.size['height']+top#下面右边点的坐标
image = Image.open('D:/PYTHON/baidu_ocr/save_screenshot.png')
code_image=image.crop((left,top,right,down))
code_image.save('D:/PYTHON/baidu_ocr/code_image.png')

APP_ID=''
API_KEY=''
SECRET_KEY=''
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
    
#读取图片 

def get_file_content(filePath):
    with open(filePath, 'rb') as fp:
        return fp.read()

image = get_file_content('D:/PYTHON/baidu_ocr/code_image.png')

# 调用通用文字识别(高精度版) """
code_ocr_original_result=client.basicAccurate(image)
print('code ocr original result:')
print(code_ocr_original_result)
print('final code result:')
for text in code_ocr_original_result.get('words_result'):
    code_ocr_final_result=text.get('words')
    print(text.get('words'))
code_ocr_final_result_with_out=code_ocr_final_result.replace(' ','')
account=driver.find_element_by_id('account')
account.send_keys('')

password=driver.find_element_by_id('password')
password.send_keys('')

code_input=driver.find_element_by_id('rancode')
code_input.send_keys(code_ocr_final_result_with_out)

code_input.submit()
time.sleep(10)
end=input('press any key to go out')

在利用了百度高精度文字识别api后,验证码的识别成功率大大提高,成功率大约在70%左右,还是不错的。本自动登陆仅用于学习之用。

python3爬虫系列23之selenium+腾讯OCR识别验证码登录微博且抓取数据 python3爬虫系列23之selenium+腾讯OCR识别验证码登录微博且抓取数据 1.前言 上一篇是一个 python3爬虫系列22之selenium模拟登录需要验证码的微博且抓取数据, 我们是首先进入到验证码网页读取验证码,人来手动识别输入,然后再提交。 比较麻烦。 翻看博客发现,之前有些过关于调用OCR的: python3调用腾讯API(图像/文字/验证码/名片/驾驶证)识别, 网上一大堆... 阅读详情

相关推荐

手把手教你搞定Pattern Recognition期刊的LaTeX投稿(附完整模板下载与避坑指南)

本文详细指导如何在Pattern Recognition期刊上使用LaTeX进行投稿,包括模板下载、环境配置、核心排版规范及投稿材料准备。特别强调期刊对格式的严格要求,如数学符号、图像引用等细节,并提供实用技巧和避坑指南,帮助作者高效完成投稿流程。

weixin_30876945的博客 395

使用百度的API进行验证码识别(图片形式的文字验证码与字母验证码)

通过百度的API进行OCR识别,介绍如何领取免费次数与创建应用

weixin_46878272的博客 3487

4.7W防削顶单声道D类音频功率放大器HT6872介绍

HT6872是一款低EMI,防削顶失真,单声道免滤波D类音频功率放大器。在6.5V电源,10%THD+N,4Ω负载条件下,输出4.71W功率,在各类音频终端应用中维持高效率并提供AB类放大器的性能。

weichen_78的博客 4699

验证码识别研究:验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口

验证码识别方法研究:验证码识别接口、多种样式验证码识别接口、中英文验证码识别接口。

小for学习栏 1235

DSSP 工具:蛋白质二级结构信息计算与批量处理教程

DSSP(Dictionary of Secondary Structure in Proteins)是一款经典的蛋白质二级结构计算工具,由荷兰癌症研究所(NKI Research)Perrakis 团队维护。它通过分析蛋白质的 PDB 结构文件,能够自动标注每个氨基酸残基的二级结构类型、相对溶剂可及性(暴露面积)等关键信息,为后续的拓扑图绘制、疏水 / 亲水表面分析、二级结构预测模型训练等提供核心数据支持。

good_rrrrr的博客 1838

A2A 协议详解:Agent Card 的设计与实现

Agent Card 是 Agent2Agent (A2A) 协议中实现智能体发现与互操作性的核心组件。本文将深入剖析 Agent Card 的设计理念、关键字段及其在智能体生态系统中的作用。我们将通过详细的 JSON Schema 解析和 Python SDK 示例,帮助您理解如何精确地定义和发布智能体能力,为构建可发现、可协作的 AI 智能体奠定基础。当您使用a2a.Agent类初始化一个智能体时,SDK 会根据您提供的参数(nameversion等)自动构建内部的 Agent Card 表示。

加入“Super Entity”,与全能开发团队共探AI智能体与数字人项目,开启前沿技术之旅。 1476

2022年最新验证码识别API接口分享

2022年最新验证码识别API接口分享

lpp3143的博客 2567

【运动规划算法项目实战】全覆盖分区算法

全覆盖规划在机器人学领域具有重要意义,其应用场景涵盖了自动农场、扫地机器人、扫描监视无人机等多个领域。该问题的核心目标是使机器人能够从指定起点出发,规划一条避开障碍物、同时路径尽可能短的轨迹,从而实现对特定区域的全面覆盖。在实际应用中,全覆盖规划的成功实现对于提高机器人在各类环境中的工作效率至关重要。这一问题的解决涉及到高效的路径规划和规划区域分解技术。其中,梯形单元分解算法是一种常用分区的技术,过将地图上需要规划的区域进行分区,采用梯形分解的方式,可以更好地应对复杂环境。全覆盖算法规划流程。

xiewf的博客 1万+

gan通过python实现_Python通过百度api识别验证码,并结合selenium实现自动登陆功能...

1.使用的库使用的库:baidu-aip, pillow, selenium.如果没有安装,可以在cmd中输入:点击此处,获取海量Python学习资料!pip install baidu-aip pip install pillow pip install selenium 2.实现功能(1)账号密码的输入​以上是我校综合服务平台登陆网站的一部分,想要实现自动登陆,账号密码可以通过seleniu...

weixin_39945679的博客 121

数字信号处理(一):Xilinx Vivado DDS IP核设计实例(文末附源码)

前言 在数字信号处理时我们经常会用到数字变频,包数字下变频(DDC)和数字上变频(DUC),这其中会用到Xilinx公司的DDS IP核或者Altera公司的NCO IP核来产生本振频率,以现数字域信号频谱搬移。本文我们通过例化Xilinx公司的DDS IP核来产生混频器本振输入频率,并给出Modelsim仿真测试结果。 1、Xilinx DDS IP简介 Xilinx公司的DDS IP核使用AX...

FPGA_Designer 1万+

Python-编写点云处理软件(二)点云软件ui制作之仿CC界面

至本篇结束,我们已经能够获得一个有点模子的界面了,但是具体的功能还没有编写,后续的文章将逐渐完善功能。

weixin_43894929的博客 3953

python百度aip移动目标_Python通过百度api识别验证码,并结合selenium实现自动登陆功能...

1.使用的库使用的库:baidu-aip, pillow, selenium.如果没有安装,可以在cmd中输入:pip install baidu-aippip install pillowpip install selenium2.实现功能(1)账号密码的输入​以上是我校综合服务平台登陆网站的一部分,想要实现自动登陆,账号密码可以通过selenium的find_element_by_id()se...

weixin_39755824的博客 132

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

python实现网站的自动登录(selenium实现,带验证码识别)

python实现网站自动登录(selenium实现,带验证码识别) 一、前言 这是鄙人写的第一篇博客,旨在总结一下近期所学,本文通过selenium工具实现工作所用网站的自动登录,下图为网站登录界面。 1、运行环境 操作系统:Windows10 python版本:python3.7 2、需要的python第三方库 1、selenium 安装:pip install selenium seleniu...

Paramete的博客 1万+

复分析 阿尔福斯(Ahlfors) 第三版答案 英文

答案分为十章,有部分习题没有答案,全英文复分析阿尔福斯(Ahlfors) 第三版答案

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

python tesseract selenium自动识别验证码登陆

文章目录前言一、下载安装tesserocr二、1.2.总结 前言 前期写得爬虫已经逐渐稳定,但是每次都是手动输入验证码,时间久了觉得麻烦,就想着自动识别验证码登陆,于是就开启了各种百度之路,磕磕碰碰,总算成功实现自动登陆,特次复盘此次验证码识别的全过程,以便大家参考。 一、下载安装tesserocr tesserocr是Python的一个OCR识别库,但其实是对tesseract做的一层PythonAPI封装,所以它的核心是tesseract。所以需要先安装tesseract。 下载链接:https

devoen的博客 1133

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

python 识别登陆验证码图片(完整代码)_python带图片验证码的登录自动化实战

原标题:python带图片验证码的登录自动化实战近期在跟进新项目的时候,整体的业务线非常之长,会一直重复登录退出不同账号的这个流程,所以想从登录开始实现部分的自动化。因为是B/S的架构,所以采用的是selenium的框架来实现。大致实现步骤如下:1.环境准备2.验证码爬取3.识别方案选择4.图像处理和识别5.自动化实现一、环境准备系统:macOS软件:Pycharm语言:Python 2.7浏览器...

weixin_39757212的博客 1279

python 自动登录网站_python实现网站的自动登录(selenium实现,带验证码识别)

一、前言这是鄙人在知乎写的第一篇文章,旨在总结一下近期所学,本文通过selenium工具实现工作所用网站的自动登录,下图为网站登录界面。1、运行环境操作系统:Windows10python版本:python3.72、需要的python第三方库1、selenium安装:pip install seleniumselenium是ThoughtWorks提供的一个强大的基于浏览器的开源自动化测试工具。支...

weixin_39731623的博客 773

Python之selenium,使用webdriver模拟登录网站(含验证码)

前言 这段时间做了一个小项目,其中有一段需要自动获取网站后台的数据,但是这个网站没有任何提供给开发者的API,所以只能靠自己去探索。 起初想着用发送请求的方式去模拟登陆,获取cookies,从而再获取网站后台数据,但是因为自己太菜了一些原因,放弃了这个方法。 后来想到使用webdriver调用浏览器来模拟登陆,发现操作起来简单很多,而且可以达到同样的效果,于是便有了这篇文章。 准备工作 这里直接丢一篇selenium简介过来,里面有详细的操作方法,也有selenium库的一些基本介绍和用例。 当然也可以去官

阿杆的博客 1万+

python使用PIL库将登陆验证码二阀值,调用百度识图接口baidu-aip进行验证码文字的获取,自动登录再也不怕遇到验证码登录啦

在使用selenium自动登录某个网站进行数据爬取的时候,在需要登录的时候都会遇到图片验证码的问题,下面给大家分享一下如何识别图片验证码。 思路:获取登录验证码图片>>>将验证码二阀值处理>>>图片交给百度AI识图>>>识别文字交给selenium进行自动登录 在开始之前,我们需要去百度AI平台注册一个账号,链接: https://ai.baidu.com/.这个只要注册个账号进去就可以了,然后点击控制台-文字识别 下面我们需要创建一个应用: 点进去

晴天的博客 417

Python实现自动登录(有验证码)---c语言网

文章目录前言一、前期准备二、python调用使用1.源代码2.需要做的准备3.执行代码总结参考文档 前言 用python最麻烦的就是导入所需要的包,实现这个自动登录需要下载time包用来给浏览器做一个缓冲等待时间;selenium用来启动浏览器、填写用户信息、提交等;PIL用来截图; 百度的Aip用来获取截图中的验证码。这里我会详细介绍如何导入这些包 提示:以下是本篇文章正文内容,下面案例可供参考 一、前期准备 导入包,这里我主要介绍百度的aip如何去下载,其他如果没有包的话,用pip下载就可以了。 使

Bouy的博客 3027

python模拟登陆 验证码el_Python + Selenium(二十三)使用百度文字识别API识别验证码...

上一节我们讲到验证码,通过图像识别的方式可以识别简单的验证码,所以识别对我们的意义不是特别大。不过我单独开这一节来讲,也算是扩充一些知识面,同时也可以练习一下关于 requests 的一些用法。对接口测试的理解也有很大的好处。首先我们需要注册百度开发者平台,并且认证。看这里注册好以后,创建应用并勾选文字识别服务(其实都可以勾起来玩一玩),文字识别服务分了几种,有完全免费的“通用文字识别”,每天有 ...

weixin_39780260的博客 169

通过百度AI识别简单的验证码

为什么要使用百度AI的: 百度AI这个我之前用到的是语音识别,想着肯定也有图片识别成文字的,所以找了一下果然找了,而且可以免费使用一点。 注:调用的这个百度AI识别不是专门识别验证码图片的(它可以识别图片中的所有文字,包括空格),所以只能识别一些简单的验证码,专业的使用超级鹰(收费) 使用到的场景: (1) 最近再写一个web自动化测试项目,在里...

weixin_30952103的博客 1200

python自动化-调用百度api解决验证码

自动化测试验证码登陆的三种解决方式 1,找开发关闭验证码 2,找开发设置万能验证码 3,使用第三方接口识别验证–不能100%识别,比自己搭建的ocr识别的识别率高很多 具体讲的就是第三种-调用百度云识别验证码: from selenium import webdriver from PIL import Image import base64 import requests import time from selenium.webdriver.common.keys import Keys def ba

ckzuishuai的博客 1528

python+selenium+百度OCR 验证码识别登录

百度OCR申请: 先申请一个百度账号,然后搜索百度智能云,登录进入 创建完成后会获得一个AppID,APIKey,Secret Key,等下会用到。 接下来开始编写代码,在这之前,要安装好python3,selenium,baidu-aip ...

weapon_host的博客 2125
上一篇: 用Python解决女朋友看电影没字幕的需求
下一篇: Python爬虫使用selenium爬取天猫商品信息
Python_sn
博客等级 码龄6年 324粉丝 290原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值