首页 > 编程语言 >pythonav资源分享登录流程:

pythonav资源分享登录流程:

时间:2022-12-25 11:04:48浏览次数:37  
标签:登录 流程 driver element id print x00 image pythonav

版一:
import time
from selenium import webdriver
from aip import AipOcr


def initial():
""" 初始化连接 """
APP_ID = '16611607'
API_KEY = 'wAIXfXOUS8ztLa4FrK3rZex1'
SECRET_KEY = '3b8nvjSGUZq0LPC18VVAizKYRBbny6Mq'
return AipOcr(APP_ID, API_KEY, SECRET_KEY)


def get_file_content(filePath):
""" 读取图片 """
print(333, filePath)
with open(filePath, 'rb') as f:
return f.read()


def selenium_msg():
"""保存到本地图片验证码"""
driver = webdriver.Chrome()
try:
driver.get("https://pythonav.com/login/")
time.sleep(1)
obj = driver.find_element_by_class_name('navbar-brand')
# 获取文本
print(obj.text)
# 获取标签名
print(obj.tag_name)
# 获取标签的属性
print(obj.get_attribute('href'))
obj.click()
# 获取图片验证码标签名
div_obj = driver.find_element_by_class_name('col-xs-7')
div_obj.find_element_by_id('id_code').send_keys('休息休息')
# 获取鼠标悬浮样式
obj = driver.find_element_by_class_name('btn-primary').value_of_css_property("cursor")
obj = driver.find_element_by_class_name('btn-primary')
# 获取鼠标悬浮样式
print(obj.value_of_css_property('cursor'))
# 获取颜色
print(obj.value_of_css_property('cursor'))
# 获取图标尺寸
print(obj.value_of_css_property('font-size'))
# 输入用户密码
driver.find_element_by_id('id_username').send_keys('刘亚洲')
time.sleep(1)
driver.find_element_by_id('id_password').send_keys('dsb123')
time.sleep(1)

# 保存验证码
image = driver.find_element_by_id("image_code")
print(image.size)
file_path = "b.png"
image.screenshot(file_path)

# 百度ai相关
client = initial()
image = get_file_content(file_path)
print(444, image)
# 调用通用文字识别, 图片参数为本地图片
res1 = client.basicGeneral(image)
# 调用通用文字识别(高精度版)
res2 = client.basicAccurate(image)
print(555, res1)
print(666, res1["words_result"][0]["words"]) # 拿到验证码
# 找到验证码的id并输入验证码:
driver.find_element_by_id("id_code").send_keys(res1["words_result"][0]["words"])
time.sleep(1)
# 找到登录并点击:
driver.find_element_by_class_name("btn-primary").click()
a = ''
for text in res1:
print(text)
finally:
time.sleep(1)
driver.quit()
return file_path


if __name__ == '__main__':
selenium_msg()
# 调用通用文字识别, 图片参数为远程url图片
# res3 = client.basicGeneralUrl(
# 'https://img2018.com/blog/1168165/201906/1168165-20190623215706582-962703809.png')
# for text in res1['words_result']:
# print(text['words'])

效果:

pythonav资源分享登录流程:_验证码

 

输出结果:

{'height': 30, 'width': 120}
333 b.png
444 b'\x89PNG\r\n\x1a\n\x00\x00\x00\rIHDR\x00\x00\x00x\x00\x00\x00\x1e\x08\x06\x00\x00\x00\xe7\xc9\xda\x95\x00\x00\x00\x01sRGB\x00\xae\xce\x1c\xe9\x00\x00\x03QIDATh\x81\xedZ\xb1N\xe40\x10}\x83\xae:\x89\x1aA\x0fHt\xec7\xa0+)\x10\xf0\x01HtG\x01\x12\x7f@\x87\xc4\x17 >\x80\x02jZzz\xd8\x06*\x04=W\xcf\x159\x9f\xed\xc4\xe3\xd8\xd9\xf1n\x82\xf2\xa4hW\x8e\xf3f<\xcfcO\xbcK\xcc\xccH\x04\x11!\xa3\xbb*\x87\x86\xedR\xe8\xe2\xdb\xbc\xc6C9\x02\'\x93\xf6X\x8c>\x83\x88\x00@\x8c]\xa7\x89$\t\\Z\xa4\xb6\xc1\xe4\xf0\x8c\x93I\xc6R\xbd\xc1\x04>\x84\xd8\xbd\xdc\xbe\xcc\xac"\xccw\x167\'\xde\x12\x1a\x02\x9b\x80\x85\x02\x97\x13L\xb7\xaf\x86\xa3#\xba\xa1!p\t\x94\xce\xb2\xfa\x04\x1a\xd2\x84\x8a\xf9\xaa\x117u\x81\x89\xaak\xd1\xd0\xdcNJ@\xa3\x06!\xa2\xd6-U\xbd\x8a6\xf6\xe6\xb15\xc6t\xd1\xb6/\xd9\xea{\t0\x97%\xba\x04\xdc\x89T\xbf\xbas\xfa*N&q[}\x85\x9b\xd9\x83\xcd`\xa2\xf9\xae\x12}\x164\x86b\x19\x9c\xb2\xad\xb5\xed!\x12..\xday5prR}\x0eU\\\xa0`\x06\x03U`\x96\x97\x81\xaf/\xbfmVL\xa7\xc0\xe6\xa6.g\x08\xf5\xb1\x0c\x11j\x19l\xabB\xb7\xad\x12\xd7\xdd\xb34\x92kc\xa3i\xe7\xee.\x8f\xa3\xcf\xafR\x9f\x9f\xf6m$t}|\xc4\x9f7+#\x11\xe9\t,-\x04n\xb3+\xb2F|\x99\x81\xf3\xf3\xea\xfb\xde\xdel\\!\xc1\x17\x91\xb5\xbb\xbb\xc0\xca\x8a\xb5_\xf9@\xce\x05\xac\xae\x92\'b\xfd2\xa7\x84\xcc\xdc\\\xa2u~1\xb2\x0ev\xb9\xdf\xc5\x96\x0bMa\xea\xc5\\xb\xb6\x1f\xcb\xca\xfc\xa1g\xb9\xc1i8rc\'\x1eU\xf6\rRA\xe6\xbe\xb6\xec\xef\x9b\xbe\xf6\x99T^\xe9\xf2\xfb\x00\xc0\x04~F\xfd\x06\xc0^\xd6\xe4\xd8p\x9fcf\x1c\x1e\xda\xa3\xe2:\xe7\xebk\xfe\xe4\r\x16Y\xb3f\xb1v\x06\xc7N}\xe4\x0c\xf8\xdf#\xca\xdd6\xce&}\xbb\xbd:g\xceqdJa\x97S\xfc\xfd\x90n\x94\xfe\x19n:\xf5m\xa5@\xea\x17\n\x12\xb3\xf9l\x130\xc5\xb6\xe1\xf8\x15c\x82/\xb4\xec\xdf,x{s\xc7V\xf3 \xa0Y\xebkR\xaa\xd0~\xa0~\x02\xf8\x039{\xe4=F\x13\xeeJ!\x8d#G\xe06\x17\xb5\x0e_\x88\xaa\xd7\xc0\xe7\xe7v[m6\xc5\x0c6\xb0\x9b{\xfaRg\x03\x1b\n\xa8|\xaf\x04\x1e\x1f\xad\xbd\xd4\x15\xa0\x0e"\xe0\xf22\x1e\xcc\xedm\xdb7F\x97\x9a0//2\x97\xad1\x80\x87\x878O\xa1\xbf\xecT\x9f\xcc\xc0\xfb;\xb0\xb6\xd6l\x9f\x07*{:\xff\x1c1|\xb7\xb7\xc0\xc1\x81d\x0b\xffl\xcdl*)V)YL\xcc\xcc\xda\xfb\xad4\xd8.\x02\xc7|3\x02\xc6V\n\xd7\x9eV\xf1\xe8\xf2\x96:Uk\x9b0\xee\xfd\xf5u\xbf\xa6q\xb1T\x11\xe4\xbe\xa7\xa5\xc3=\x81\xa9l\xe5=\x1f\xf3mk\x0b\x008x\xdac\x9fO\xe3j\xfa\x1d\x1e\xf7\xce\x8e\xcf[?U\xd3\x84\xe1==\xb5m\xf7\xf7\xd5\xf8\x8e\x8e\xec}I\\@\xb1\xc8*\x89E\xf9 \x17f\xe1\xfe%\\\xbc\xbe\x06\x8e\x8fe;F\xec\x9b\x1b!\xd3]\x81\xfb \xe6\x08\x1fD\xc0\xd9\x19pu\xe5\xb7O&\xc0\xd3S\xc2R^\xa2\xc8\x1a\xd1\x1f\x0c\xf6\x1f\x1d#\xd2\xb0\x04\xf4\xfb\xa7\xb3\xa1C:COm\xcb\xb1\x13l\x1f\x97\xe8\xef\x01\xa9~\x1a\x97\xe8\x1e\xa2K&Ky\xfa\x17\x8cg\xf2\xceP\x15\xca\xe9\x00\x00\x00\x00IEND\xaeB`\x82'
555 {'log_id': 8235000937407263369, 'words_result_num': 1, 'words_result': [{'words': '飞'}]}
666 飞
log_id
words_result_num
words_result
版二:

import time
from selenium import webdriver
from aip import AipOcr


def initial():
""" 初始化连接 """
APP_ID = '16611607'
API_KEY = 'wAIXfXOUS8ztLa4FrK3rZex1'
SECRET_KEY = '3b8nvjSGUZq0LPC18VVAizKYRBbny6Mq'
return AipOcr(APP_ID, API_KEY, SECRET_KEY)


def get_file_content(filePath):
""" 读取图片 """
print(333, filePath)
with open(filePath, 'rb') as f:
return f.read()


def selenium_msg():
"""保存到本地图片验证码"""
driver = webdriver.Chrome()
try:
driver.get("https://pythonav.com/login/")
time.sleep(1)
# 输入用户密码
driver.find_element_by_id('id_username').send_keys('刘亚洲')
time.sleep(1)
driver.find_element_by_id('id_password').send_keys('dsb123')
time.sleep(1)

# 保存验证码
image = driver.find_element_by_id("image_code")
print(image.size)
file_path = "b.png"
image.screenshot(file_path)

# 百度ai相关
client = initial()
image = get_file_content(file_path)
print(444, image)
# 调用通用文字识别, 图片参数为本地图片
res1 = client.basicGeneral(image)
# 调用通用文字识别(高精度版)
res2 = client.basicAccurate(image)
print(555, res1)
print(666, res1["words_result"][0]["words"]) # 拿到验证码
# 找到验证码的id并输入验证码:
driver.find_element_by_id("id_code").send_keys(res1["words_result"][0]["words"])
time.sleep(1)
# 找到登录并点击:
driver.find_element_by_class_name("btn-primary").click()
a = ''
for text in res1:
print(text)
finally:
time.sleep(1)
driver.quit()
return file_path


if __name__ == '__main__':
selenium_msg()
# 调用通用文字识别, 图片参数为远程url图片
# res3 = client.basicGeneralUrl(
# 'https://img2018.com/blog/1168165/201906/1168165-20190623215706582-962703809.png')
# for text in res1['words_result']:
# print(text['words'])

版三:

import time
import random
from selenium import webdriver
#导入PIL模块和Image:
from PIL import Image
#导入expected_conditions预期包判断标题是否正确:
from selenium.webdriver.support import expected_conditions as EC
#导入WebDriverWait
from selenium.webdriver.support.wait import WebDriverWait
#导入by:
from selenium.webdriver.common.by import By
from aip import AipOcr
driver = webdriver.Chrome()
driver.maximize_window()
driver.get("https://pythonav.com/login/")
#操作滚轮滑动到底部:
# driver.execute_script("window.scrollTo(0,document.body.scrollHeight);")
#保存整个页面的图片用save_screenshot:
driver.save_screenshot("D:\s27\老师还没有讲的\imooc.png")
#获取定位验证码图片元素的id:
code_element = driver.find_element_by_id("image_code")
#拿到图片的坐标值用location:
print(code_element.location) #结果是:{"x":123,"y":345}
#拿到左边x的值:
left = code_element.location["x"]
#拿到右边y的值:
top = code_element.location["y"]
#通过size拿到图片的宽度和高度:
right = code_element.size["width"] + left
height = code_element.size["height"] + top
#打开图片:
# im = Image.open("D:\s27\老师还没有讲的\imooc.png")
#按照一定坐标裁剪图片用crop:
# img = im.crop((left,top,right,height))
#保存图片为imooc1.png:
# img.save("D:\s27\老师还没有讲的\imooc.png")
image = Image.open("D:\s27\老师还没有讲的\imooc.png")
cropped_image = image.crop((left,top,right,height))
cropped_image.save("D:\s27\老师还没有讲的\imooc1.png")
image = Image.open("D:\s27\老师还没有讲的\imooc1.png").convert("L")
cropped_image = image.crop((0,0,45,50))
cropped_image.save("cropped_image.png")

#图像去杂、清理干扰因子:
pixel_matrix = cropped_image.load()
for col in range(0,cropped_image.height):
for row in range(0,cropped_image.width):
if pixel_matrix[row,col] != 0:
pixel_matrix[row,col] = 255
image.save("thresholded_image.png")

# 去除图像中的黑点:
for column in range(1,image.height - 1):
for row in range(1,image.width - 1):
if pixel_matrix[row,column] == 0 and pixel_matrix[row,column - 1] == 255 and pixel_matrix[row,column + 1] == 255:
pixel_matrix[row,column] = 255
if pixel_matrix[row,column] == 0 and pixel_matrix[row - 1,column] == 255 and pixel_matrix[row + 1,column] == 255:
pixel_matrix[row,column] = 255

def initial():
""" 初始化连接 """
APP_ID = '16611607'
API_KEY = 'wAIXfXOUS8ztLa4FrK3rZex1'
SECRET_KEY = '3b8nvjSGUZq0LPC18VVAizKYRBbny6Mq'
return AipOcr(APP_ID, API_KEY, SECRET_KEY)

def get_file_content(filePath):
""" 读取图片 """
with open(filePath, 'rb') as f:
return f.read()

if __name__ == '__main__':
client = initial()
image = get_file_content('thresholded_image.png')
res1 = client.basicGeneral(image) # 调用通用文字识别, 图片参数为本地图片
res2 = client.basicAccurate(image) # 调用通用文字识别(高精度版)
# 调用通用文字识别, 图片参数为远程url图片
res3 = client.basicGeneralUrl('https://img201.com/blog/1168165/201906/1168165-20190623215706582-962703809.png')
print(111,res2) # 返回结果
for text in res2['words_result']:
print(text['words'])



标签:登录,流程,driver,element,id,print,x00,image,pythonav
From: https://blog.51cto.com/u_15920572/5967963

相关文章

  • Mob秒验(一键登录注册)是什么意思?
    好奇一键登录是怎么实现的吗?进来了解一下? 自动识别当前手机使用的手机卡号,并且直接使用这个号码进行登录,这就是一键登录。这种登录方式的好处是显而易见的。它可以更方便、......
  • Mob秒验(一键登录注册)新用户免费获得1000条
    为了更好地帮助企业提升用户触达效果,MobTech官方近期重磅推出新人专享礼活动,从7月1日起,开发者集成秒验一键登录的新用户即可免费获得1000条使用额度,已经亲测活动有效,超级推......
  • 开源项目 Spartacus 的 git 提交流程规范
    Spartacus开源项目由一组库组成。为了更容易知道哪个版本的库与另一个版本兼容,库版本在所有包中同步。这意味着当我们要发布1.5.0版本时,我们会发布该版本下的所有库,即......
  • 秒懂“一键登录”与“短信验证码登录”的区别
    众所周知,新下载一个APP,首先需要做的事情就是注册和登录。目前,市场上主流的两种注册登录方式是“一键登录”与“短信验证码登录”,那么这两种方式有什么异同呢?早在几年前,用户......
  • ElasticSearch recovery流程
    为什么需要recovery?对于主分片来说,可能有一些数据没来得及刷盘;对于副分片来说,一是没刷盘,二是主分片写完了,副分片还没来得及写,主副分片数据不一致。1.主分片recovery由于每......
  • 项目实战:JavaFX + Netty 仿微信聊天程序(注册、登录、查好友、聊天)
    记录一下使用JavaFX+Netty开发仿微信聊天程序---米虫IM。功能需求米虫IM已经完成的功能有:用户注册功能用户登录功能搜索好友功能添加好友功能文本聊天功能离......
  • CTF中网站用户登录页面渗透测试步骤
    CTF中网站用户登录页面渗透测试步骤CTF测试中经常遇到靶机的HTTP服务需要用户认证才能登录其后台,因此很多情况下需要绕开登录的认证限制或者得到用户名密码信息。按照优先......
  • 由SOFARPC示例介绍基本流程和基础源码
    由SOFARPC示例介绍基本流程和基础源码1.Server先看Server端测试方法:publicclassQuickStartServer{publicstaticvoidmain(String[]args){Serv......
  • Mob教你汇总常见的用户注册和登录方式
    目前市面上APP的常见的用户注册和登录方式有三种,第一种是最早期的手机号码+密码登录,第二种是常见的手机号码+短信验证码,第三者是最新推出,且正被各大应用APP接入采用的"一......
  • sqlserver/System.Data.SqlClient.SqlException (0x80131904): 用户 'NT AUTHORITY\I
    本人最近学习XAF框架项目,在本地运行可以连接到数据库,发布后无法连接,抛出用户'NTAUTHORITY\IUSR'登录失败问题截图:  问题原因:数据库连接使用的window身份验证时,W......