首页 > 编程语言 >使用python库解决登录的验证码识别-图片验证码

使用python库解决登录的验证码识别-图片验证码

时间:2023-04-11 11:26:49浏览次数:41  
标签:code 登录 python 验证码 location path save browser

前言:

在UI自动化测试和爬虫测试中,验证码是个比较头疼的问题,包括:图片验证码,滑块验证码,等一些常见的验证码场景。

识别验证码的python 库有很多,用起来也并不简单,这里推荐一个简单实用的识别验证码的库 ddddocr (带带弟弟ocr)库。

今天先用一个图片验证码示例来演示下:

准备:

1.安装库ddddocr

2.安装库pillow

3.以一个带验证码登录的网站为示例:https://xqctk.jtys.sz.gov.cn/

开始编码:

1代码如下:

 1 import time
 2 from ddddocr import DdddOcr
 3 from selenium import webdriver
 4 from selenium.webdriver.common.by import By
 5 from PIL import Image  # 需安装 pillow
 6 
 7 path = 'https://xqctk.jtys.sz.gov.cn/'
 8 
 9 
10 def get_picture_code(locator):
11     pic_save_path = 'D://html.png'
12     cron_path = 'D://code.png'
13     browser.save_screenshot(pic_save_path)  # 保存为图片
14     location = browser.find_element(By.XPATH, locator)  # 获取需要识别的元素对象
15     size = location.size  # 获取需要识别的元素尺寸
16     position = (int(location.location['x']), int(location.location['y']), int(location.location['x'] + size['width']), int(location.location['y'] + size['height']))
17     Image.open(pic_save_path).crop(box=position).save(cron_path)  # crop进行裁剪
18     with open(cron_path, 'rb') as f:
19         img_bytes = f.read()
20         res = DdddOcr().classification(img_bytes)
21     return res
22 
23 
24 browser = webdriver.Chrome()  # 打开浏览器
25 browser.maximize_window()  # 浏览器最大化
26 browser.get(path)  # 打开网页
27 time.sleep(5)
28 pic_code = get_picture_code("//td[@id='incrementGetValidCodeImg']//img")
29 browser.find_element(By.XPATH, "//input[@id='incrementValidCode']").send_keys(pic_code)
30 time.sleep(5)
31 browser.quit()

运行结果:

 

标签:code,登录,python,验证码,location,path,save,browser
From: https://www.cnblogs.com/jintianniu/p/17305564.html

相关文章

  • python项目-数据可视化-matplotlib和plotly绘图
    matplotlib和plotly绘图参考书籍《Python编程从入门到实践》折线图15-1立方:数字的三次方被称为其立方。请绘制一个图形,显示前5个整数的立方值,再绘制一个图形,显示前5000个整数的立方值。15-2彩色立方:给你前面绘制的立方图指定颜色映射。importmatplotlib.pyplotasp......
  • python3写csv中文文件,可以直接excel打开
    写出python3代码:将如下数据转为windowsexcel文件。 importcsvdata=[[1010205,'2022/11/23','R染(Inception)攻击','T89','在远程系统的启动文件登录后可以自动执行恶意脚本或可执行文件。','例:copyrogramData\Microsoft\W\Programs\StartUp',4,85,......
  • python写入数据到oracle clob字段
     环境:Python:3.6.5  #!/usr/bin/envpython#coding=utf-8importos,json,urllib,datetime,shutilimporttimeimportcx_Oraclegl_mysql_server="192.168.1.118"gl_user_name="hxl"gl_password="mysql"gl_db_name="db_t......
  • Windows 系统上如何安装 Python 环境(详细教程)
    Windows系统上如何安装Python环境(详细教程)目前,Python有两个版本,一个是2.x版,一个是3.x版,这两个版本是不兼容的。由于2.x版官方只维护到2020年,所以以3.x版作为示例,但是2.x版与3.x版安装方法及环境变量配置的方法是一模一样的,所以请放心。下载Python安装包进入Python官网www.......
  • Python Django 通用视图和错误视图的使用
    定义通用视图修改book/models.py代码中的AuthorInfo类,如果一致则不必修改classAuthorInfo(models.Model):id=models.CharField(max_length=30,verbose_name="身份证号",primary_key=True)name=models.CharField(max_length=20,verbose_name="姓名")t......
  • 全网最详细中英文ChatGPT-GPT-4示例文档-智能聊天机器人从0到1快速入门——官网推荐的
    目录Introduce简介setting设置Prompt提示Sampleresponse回复样本APIrequest接口请求python接口请求示例node.js接口请求示例curl命令示例json格式示例其它资料下载ChatGPT是目前最先进的AI聊天机器人,它能够理解图片和文字,生成流畅和有趣的回答。如果你想跟上AI时代的潮流......
  • 位运算--不用加法实现两数相加--Python解法
    不用加法实现两数相加(两数均可能是负数或者0)defadd(a,b):#迭代#a^b#无进位求和#(a&b)<<1#进位x=0xffffffffa&=xb&=xwhileb!=0:a,b=a^b,(a&b)<<1&xreturnaifa<=0x7fffffffelse~(a^x)......
  • mysql数据库的登录脚本
    ######################## ku脚本:可以使用以下ku脚本,它可以根据提供的参数登录到MySQL数据库:#!/bin/bash#Checkforcorrectnumberofargumentsif[$#-lt1];thenecho"Usage:$0<ip>[<port>][<mysqloptions>]"exit1fi#SettheIPaddress......
  • Python 学习 01 硬件
                                 计算机的硬件组成控制器:计算机的指挥系统(类似人脑)运算器:数学运算和逻辑运算(类似人脑)储存器:分为内存和外存       内存:相当于人脑的短期记忆,速度快,存储能力差,只能识......
  • Debian11安装python3.10
    一、aptinstallpython默认安装的是python3.9 二、安装python3.10需要下载源码手动编译安装sudoaptupdate&&sudoaptupgradesudoaptinstallbuild-essentialzlib1g-devlibncurses5-devlibgdbm-devlibnss3-devlibssl-devlibreadline-devlibffi-devlibsqlit......