自动化验证码实现

1,字符型验证码

python 复制代码
from DrissionPage._pages.chromium_page import ChromiumPage

from ku.chaojiying.chaojiying import Chaojiying_Client

#创建浏览器对象

#这两行代码是谷歌浏览器
page=ChromiumPage()
page.get('链接')
user=page.ele('@name=user')
passw=page.ele('@name=pass')
passw=page.ele('@name=pass')
img=page.ele('@src=/include/code/code.php?u=1')
#保存图片
#img.save(path='图片',name='1.png')
chaojiying = Chaojiying_Client('', '', '')  # 用户中心>>软件ID 生成一个替换 96001
#保存图片后要打开图片
#im = open('图片/1.png', 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//

im=img.src()
str=chaojiying.PostPic(im, 1902)['pic_str']
imgtxt=page.ele('@name=imgtxt')

user.input('ycydynq')
passw.input('123456')
imgtxt.input(str)
button = page.ele('.login_form_input_submit')
button.click()

2、点击类型验证码

python 复制代码
import os
import re

from DrissionPage._configs.chromium_options import ChromiumOptions
from DrissionPage._functions.keys import Keys
from DrissionPage._pages.chromium_page import ChromiumPage

from ku.chaojiying.chaojiying import Chaojiying_Client
from  PIL import  Image
'''
点选型验证码     发给超级鹰的内容:图片+答案
调用超级㢈方法传入的是一个 字节数据,字节数据(图片数据),需要使用截图的方式保存一张图片(识别的图片+答案)
'''
#创建浏览器对象

#这两行代码是谷歌浏览器
page=ChromiumPage()
dir_name='图片'
if not os.path.exists(dir_name):
    os.mkdir(dir_name)
page.get('链接')
page.ele('.header-login-entry').click()
page.ele('@placeholder=请输入账号').input('aaaa')
page.ele('@placeholder=请输入密码').input('aaaa')
page.ele('.btn_primary ').click()

page.wait(2,3)
while True:
    geetest_widget=page.ele('.geetest_widget')

    geetest_widget.get_screenshot(path='图片',name="3.png")
    page.wait(2)
    img=Image.open('图片/3.png')
    img=img.resize((318,408))
    img.save('图片/3.png')



    # 进行验证码验证
    chaojiying = Chaojiying_Client('', '', '')  # 用户中心>>软件ID 生成一个替换 96001
    # 保存图片后要打开图片
    im = open('图片/3.png', 'rb').read()  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//

    res = chaojiying.PostPic(im, 9004)
    print(res)
    pos=res['pic_str']
    posarr=pos.split('|')
    for poss in posarr:
        xy=poss.split(',')
        x=int(xy[0])
        y=int(xy[1])

        page.actions.move_to(geetest_widget, x, y).click()
    page.wait(2)
    page.ele('.geetest_commit_tip').click()
    page.wait(1)
    geetest_panel_next=page.ele('.geetest_panel_next')
    #print(geetest_panel_next)
    #通过style属性值为display:none   结束循环
    if geetest_panel_next.attr('style') == 'display: none;':
        print('验证成功')
        break
    # #print(geetest_widget)

    #通过字符串中 是否有验证成功  来判断是否要结束循环
    # str_jeguo=page.ele(geetest_widget).text
    # #print(str_jeguo)
    # if  '成功'  in str_jeguo:
    #     print('验证成功')
    #
    # jieguo=re.findall('验证成功',str_jeguo)
    # if  jieguo:
    #     print('验证成功')
    # else:
    #     print('验证不成功')

3、滑块验证码

python 复制代码
import os

from DrissionPage._elements.chromium_element import ChromiumElement
from DrissionPage._functions.keys import Keys
from DrissionPage._pages.chromium_page import ChromiumPage
from PIL import Image

from ku.chaojiying.chaojiying import Chaojiying_Client

page=ChromiumPage()
page.get('链接')

page.ele('.wx-des').click()
page.ele('.account-title-item password-item').click()
page.ele('@placeholder=手机号(无需区号)/帐号').input('15895144996')
page.ele('@placeholder=请输入密码').input('123456')
page.wait(1)
page.ele('.ss-checkbox__original').click()
page.ele('@data-sensors=登录_登录页_点击登录').click()
page.wait(5)
dir_name='图片'
if not os.path.exists(dir_name):
    os.mkdir(dir_name)

#print(page.html)         获取网页源代码

#当前滑块是由iframe标签组成
#page对象无法获取iframe标签内的内容
#先得到内置页面对象
iframe=page.get_frame('#tcaptcha_iframe_dy')
#如果需要获取iframe下的所有内容,都要通过iframme获取


tcImgArea=iframe.ele('#slideBg')
iframe.get_screenshot(path='图片',name='小鹅通.png')
img=Image.open('图片/小鹅通.png')
img=img.resize((360,360))
img.save('图片/小鹅通.png')

# 进行验证码验证
chaojiying = Chaojiying_Client('', '', '')  # 用户中心>>软件ID 生成一个替换 96001
# 保存图片后要打开图片
with open('图片/小鹅通.png', 'rb') as f:  # 本地图片文件路径 来替换 a.jpg 有时WIN系统须要//
    im=f.read()
res = chaojiying.PostPic(im, 9101)
print(res)
xy=res['pic_str'].split(',')
x=int(xy[0])

#要移动的x值
x=x-32-30        #下拉到左边的距离32   滑块图长60.714     除以2   30



#滑块实现
'''
1、按住滑块标签不动
2、移动x的值
3、松开
'''
ac=iframe.actions
ac.hold('.tc-fg-item tc-slider-normal')
ac.move(offset_x=x)
ac.release()


#关闭浏览器
#page.quit()
相关推荐
重生之高冷汉堡包2 小时前
ChatGPT 如何打造自动化账号:从零搭建到高效运营
运维·chatgpt·自动化
软件派4 小时前
Beam.Win 自动化办公与业务流程提效指南
运维·自动化
星禾元亨4 小时前
用结构化数据与干净实体信号,让技术内容被 AI 搜索引擎稳定引用
数据库·人工智能·自动化·创业创新
天空属于哈夫克36 小时前
企业微信 RPA 自动化开发实践:打通客户管理与业务任务处理流程
机器人·自动化·企业微信·rpa
虎鲸不是鱼6 小时前
【虎鲸进化论 41】AI 的盲区清单:责任、利害、定义、关系、最后一公里与主体性
人工智能·自动化·大模型·llm·自进化agent
xiaoyunxuexibiji9 小时前
供应商绩效评价体系如何建立?从评价指标到自动化考核
运维·人工智能·自动化
zimoyin10 小时前
Windows 控件获取全攻略:Win32 / UIA / MSAA + 鼠标拾取与点击关联(C# 实战)
c#·自动化
工业传感笔记10 小时前
工业传感器国产替代的工程评估框架:从规格覆盖到工况验证的四个维度
其他·自动化
乐橙开放平台11 小时前
门店监控想集中看?乐橙含光支持多品牌摄像头跨店管理
网络·笔记·物联网·自动化·音视频·智能家居
dk_tjy19 小时前
AI驱动的自动化攻击背景下:企业端点安全体系的技术架构与建设路径
网络·人工智能·安全·自动化·终端安全管理·数据防泄漏