hknzh 2022-09-27 14:45 采纳率: 66.7%
浏览 21
已结题

自动登录网站验证码不一致

问题遇到的现象和发生背景

运行下面的代码时,每次调用起来的界面验证码和保存的验证码不一致,为什么?

用代码块功能插入代码,请勿粘贴截图

from selenium import webdriver
from aip import AipOcr
from PIL import Image
from selenium.webdriver.common.by import By

验证码的获取和处理

def get_captcha():
# 获取验证码图片
url = 'http://npgd.caict.ac.cn/login.html'
browser.get(url)
png = browser.find_element(By.ID, 'codeImage')
png.screenshot('capt.png') # 将图片截屏并保存
# 处理验证码
img = Image.open('capt.png')
img = img.convert('L') # P模式转换为L模式(灰度模式默认阈值127)
count = 160 # 设定阈值
table = []
for i in range(256):
if i < count:
table.append(0)
else:
table.append(1)
img = img.point(table, '1')
img.save('captcha.png') # 保存处理后的验证码

验证码的识别

def discern_captcha():
# 识别码
APP_ID = '27644450'
API_KEY = 'zbDf9GroMhk2rK2ALXKS8BKS'
SECRET_KEY = 'LTnsnQXduCh7Lo6oSKGaRSVOofRsDhcx'
# 初始化对象
client = AipOcr(APP_ID, API_KEY, SECRET_KEY)
# 读取图片
def get_file_content(file_path):
with open(file_path, 'rb') as f:
return f.read()
image = get_file_content('captcha.png')
# 定义参数变量
options = {'language_type': 'ENG', } # 识别语言类型,默认为'CHN_ENG'中英文混合
# 调用通用文字识别
result = client.basicGeneral(image, options) # 高精度接口 basicAccurate
for word in result['words_result']:
captcha = (word['words'])
print('识别结果:' + captcha)
return captcha

登录网页

def login(captcha):
browser.find_element(By.ID, 'username').send_keys('huangkun') # 找到账号框并输入账号
browser.find_element(By.ID, 'password').send_keys('C3a_i6c!t8') # 找到密码框并输入密码
browser.find_element(By.ID, 'imgCode').send_keys(captcha) # 找到验证码框并输入验证码
browser.find_element(By.ID, 'btn_login').click() # 找到登陆按钮并点击

def get_file():

browser.find_element(By.XPATH, '/html/body/header/div/nav/ul/li[6]/a').click() # 找到文件按钮并点击

if name == 'main':
browser = webdriver.Chrome() # 实例化对象
get_captcha()
captcha = discern_captcha()
login(captcha)
# get_file()

运行结果及报错内容

没有报错,就是验证码不一致

我的解答思路和尝试过的方法

就是上面的代码。

我想要达到的结果

使保存下来的验证码就是界面上的验证码,无关识别结果是否准确。

  • 写回答

3条回答 默认 最新

  • shelkio 2022-09-30 11:58
    关注

    加个验证码错误重复识别验证码功能吧 代码多执行几次就会出现不一样的 验证码了

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(2条)

报告相同问题?

问题事件

  • 系统已结题 10月9日
  • 已采纳回答 10月1日
  • 创建了问题 9月27日

悬赏问题

  • ¥15 delta降尺度计算的一些细节,有偿
  • ¥15 Arduino红外遥控代码有问题
  • ¥15 数值计算离散正交多项式
  • ¥30 数值计算均差系数编程
  • ¥15 redis-full-check比较 两个集群的数据出错
  • ¥15 Matlab编程问题
  • ¥15 训练的多模态特征融合模型准确度很低怎么办
  • ¥15 kylin启动报错log4j类冲突
  • ¥15 超声波模块测距控制点灯,灯的闪烁很不稳定,经过调试发现测的距离偏大
  • ¥15 import arcpy出现importing _arcgisscripting 找不到相关程序