最近学习python+selenium实现网站的自动登录,但是遇到需要输入验证码的问题,经过查询百度收获了几种破解验证码的方式。

方式一)从万能的网友那收获了一个小众但非常实用的第3方库ddddocr,仅几行代码就可以帮你解决大部分的数字+字母验证码问题了。(PS:使用这个库还需要安装最新的opencv-python库)

首先需要安装一下这个库:pip install ddddocr,安装后使用示例代码就可以得到验证码字符串了

import ddddocr

ocr=ddddocr.DdddOcr()
with open(r'F:\Test\venv\vfi_code.png' ,'rb')as f:
img_bytes =f.read()
res =ocr.classification(img_bytes)
print(res)

实现整个自动登录流程的思路是:

先打开登录页面,然后将整个页面截图,再截取验证码部分使用第3方库ddddocr进行破解,通过driver.find_element_by_xpath() 定位到用户名,密码,验证码的输入框模拟自动输入和模拟点击登录按钮成功登录。附上完整代码:

from selenium import webdriver
import time,ddddocr
from PIL import Image
driver=webdriver.Chrome()
driver.maximize_window() def get_img_code():
driver.get('http://192.168.11.55:12345/#/login')
driver.save_screenshot('web_screen.png')
page_snap_obj = Image.open('web_screen.png')
img=driver.find_element_by_xpath('//*[@id="userLayout"]/div/div[1]/form/div[3]/div/div[1]/div[2]/img') # 根据css选择器来获取元素列表,鼠标右键选择Copy-》selector
time.sleep(1)
location = img.location
size = img.size
left = location['x']
top = location['y']
right = left + size['width']
bottom = top + size['height']
image_obj = page_snap_obj.crop((left, top, right, bottom))
img_code = image_obj.save('vfi_code.png')
#image_obj.show()
ocr1=ddddocr.DdddOcr()
with open(r'F:\Test\venv\vfi_code.png','rb')as f:
img_bytes=f.read()
res=ocr1.classification(img_bytes)
print(res)
return res if __name__ == '__main__':
res=get_img_code()
driver.find_element_by_xpath('/html/body/div/div/div/div/div[1]/form/div[1]/div/div[1]/div/input').clear() #copy的xpth包含一些随机数字,每次页面加载时都会更改,选择copy full xpth可以解决
driver.find_element_by_xpath('/html/body/div/div/div/div/div[1]/form/div[1]/div/div[1]/div/input').send_keys('ussername')
driver.find_element_by_xpath('/html/body/div/div/div/div/div[1]/form/div[2]/div/div[1]/div/input').clear()
driver.find_element_by_xpath('/html/body/div/div/div/div/div[1]/form/div[2]/div/div[1]/div/input').send_keys('password')
driver.find_element_by_xpath('/html/body/div/div/div/div/div[1]/form/div[3]/div/div[1]/div[1]/div/input').clear()
driver.find_element_by_xpath('/html/body/div/div/div/div/div[1]/form/div[3]/div/div[1]/div[1]/div/input').send_keys(res)
time.sleep(3)
driver.find_element_by_xpath('//*[@id="userLayout"]/div/div[1]/form/div[4]/div/button[2]/span').click()

方式二)待补充

参考链接:https://blog.csdn.net/leenhem/article/details/121507694

python+selenium实现自动识别验证码并登录的更多相关文章

  1. Python Selenium Cookie 绕过验证码实现登录

    Python Selenium Cookie 绕过验证码实现登录 之前介绍过博客园的通过cookie 绕过验证码实现登录的方法.这里并不多余,会增加分析和另外一种方法实现登录. 1.思路介绍 1.1. ...

  2. python+selenium破解极验验证登录

    1.前言: 目前很多网站会在正常的账号密码认证之外加一些验证码,以此来明确区分人/机行为,最典型的就是极验滑动验证.(如下图) 这里我们以简单实例说明如何实现自动校验类似验证. 2.步骤: 1)点击验 ...

  3. 一次完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试!手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文作者就用python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动 ...

  4. 使用Python + Selenium破解滑块验证码

    在前面一篇博客<使用 Python + Selenium 打造浏览器爬虫>中,我介绍了 Selenium 的基本用法和爬虫开发过程中经常使用的一些小技巧,利用这些写出一个浏览器爬虫已经完全 ...

  5. 一次简单完整的自动化登录测试-基于python+selenium进行cnblog的自动化登录测试

    Web登录测试是很常见的测试,手动测试大家再熟悉不过了,那如何进行自动化登录测试呢!本文就基于python+selenium结合unittest单元测试框架来进行一次简单但比较完整的cnblog自动化 ...

  6. 【python】带图片验证码的登录自动化实战

    近期在跟进新项目的时候,整体的业务线非常之长,会一直重复登录退出不同账号的这个流程,所以想从登录开始实现部分的自动化.因为是B/S的架构,所以采用的是selenium的框架来实现.大致实现步骤如下: ...

  7. 分享一个爬取HUST(哈理工)学生成绩的Python程序(OCR自动识别验证码)

    Python版本:3.5.2 日期:2018/1/21 __Author__ = "Lance#" # -*- coding = utf-8 -*- from urllib imp ...

  8. Python selenium自动化测试框架入门实战--登录测试案例

    本文为Python自动化测试框架基础入门篇,主要帮助会写基本selenium测试代码又没有规划的同仁.本文应用到POM模型.selenium.unittest框架.configparser配置文件.s ...

  9. python+selenium识别图片验证码

    import timeimport pytesseractfrom PIL import Image, ImageEnhancefrom selenium import webdriver url = ...

  10. python+selenium进行简单验证码获取

    # _*_ coding:utf-8 _*_from PIL import Imagefrom selenium import webdriverimport pytesseractimport ti ...

随机推荐

  1. mongodb-命令小结

    小白暂时在这里记录些涉及到的 在某条记录添加一个字段: 先查询_id: db.subscriptions.find({"channel":"parking.notify. ...

  2. const char* str和const char str[]的区别

    首先,字符串常量是存储在flash中的.假设字符串常量在flash中的地址是0x8003fb8. 第一种方式,str等价于str的内存单元的地址,str的内存单元存储着字符串常量的地址 第二种方式,s ...

  3. EhLib 9安装

    EhLib 9安装 安装EhLib: 在Installer文件夹里找到EhLibInstaller.exe,右键以管理员权限运行EhLibInstaller.exe. 按照提示一路安装下来,顺利完成. ...

  4. 「部署日记」Android Studio乱码解决方案

    弄了一台新电脑,第一件事肯定是弄好打造台啦 于是VS.AS.CRD.NSIS.Adobe全家桶全安装完毕, 问题来了,在打开Android Studio时,出现乱码,比如 这样的: 这样的: 这样的: ...

  5. AXI 协议翻译介绍

    一.介绍 Introduction 本章描述了axis协议的体系结构和协议定义的基本事务.它包含以下部分:•第1-2页关于AXI协议•第1-3页是架构•第1-7页是基本事务•第1-11页的附加功能. ...

  6. 批处理命令for循环(cmd命令)

    记录一下: https://www.cnblogs.com/Braveliu/p/5081087.html

  7. DOS批处理命令,自动获取本机系统及硬件配置信息

    可以配合域策略自动下发执行, 批量收集域内电脑配置; 手动执行亦可; 如下保存成.bat批处理文件执行即可. /*&cls&echo off&cd /d "%~dp0 ...

  8. 使用centos8.5配置一台YUM源服务器

    公司的生产环境部署的Centos8.5, 现在已经EOL了, 为了给生产和测试机继续提供yum/dnf服务, 特意在公司的内部机房部署了一套本地yum源. 环境:centos 8.5 1. 下载镜像 ...

  9. 安装oracle出现环境不满足最低要求

    安装win64_11gR2_database_1of2的时候出现这个,百度了下解决方法 在oracle安装包找到stage文件夹 然后找到cvu 然后在cvu里面找到cvu_prereq,用记事本打开 ...

  10. vue中v-if控制的可编辑div(contenteditable='true')无法绑定@input事件

    <div class="content-container" ref="contentContainer"> <div v-if=" ...