selenium利用图鉴 破点击验证码 登录b站

python 复制代码
from selenium import webdriver
import requests
import json
from selenium.webdriver.common.action_chains import ActionChains
import time
path = 'chromedriver.exe'
browser = webdriver.Chrome(path)
browser.get('https://passport.bilibili.com/login')
browser.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/div[3]/div[2]/div[1]/div[1]/input').send_keys(user) # 定位账户输入框输入账户
browser.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/div[3]/div[2]/div[1]/div[3]/input').send_keys(password) # 定位密码输入框输入密码
browser.find_element_by_xpath('//*[@id="app"]/div[2]/div[2]/div[3]/div[2]/div[2]/div[2]').click() # 点击登录按钮
time.sleep(2)
verify_code = browser.find_element_by_xpath('/html/body/div[4]/div[2]/div[6]/div/div') # 定位验证码
tu = verify_code.screenshot_as_base64 # 获取验证码bs4格式
verify_code.screenshot('tu.png')


def base64_api(img,typeid,uname='18720180853', pwd='20010119yx'):
    # with open(img, 'rb') as f:
    #     base64_data = base64.b64encode(f.read())
    #     b64 = base64_data.decode()
    data = {"username": uname, "password": pwd, "typeid": typeid, "image": img}
    result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)
    if result['success']:
        return result["data"]["result"]
    else:
        #!!!!!!!注意:返回 人工不足等 错误情况 请加逻辑处理防止脚本卡死 继续重新 识别
        return result["message"]
    return ""


result1 = base64_api(tu,21)
print(result1)  # 获取点选坐标
for i in result1.split('|'):
    x = int(i.split(',')[0])
    y = int(i.split(',')[1])
    action = webdriver.ActionChains(browser) # 动作链
    action.move_to_element_with_offset(verify_code,x,y).click().perform() # 定位到验证码,逐个点击坐标,执行

browser.find_element_by_xpath('/html/body/div[4]/div[2]/div[6]/div/div/div[3]/a/div').click()

验证码形式:

复制代码
1.

这种验证码处理:

action = webdriver.ActionChains(browser)

action.move_to_element_with_offset(定位的验证码位置,x坐标,y坐标).click().perform()

相关推荐
Gigavision1 小时前
基于BUAA-MIHR数据集的噪声解耦对比学习算法
人工智能·python·深度学习·算法
IPdodo_1 小时前
跨境 API 调用不稳定怎么办:出口、超时重试与链路监控的实践
网络·python·网络协议
Madison-No72 小时前
搭建项目测试环境
linux·运维·服务器·python
计算机编程-吉哥2 小时前
YOLO26 vs YOLO11 vs YOLOv8:深度学习咖啡果实成熟度分割系统【计算机毕业设计选题推荐】
人工智能·python·深度学习·yolo·django·毕业设计
大衛說3 小时前
11 · 异常处理与日志
python
auto_go3 小时前
Python 实战指南(7)——账本动不动就崩?先把“魔法字符串”和“裸报错”干掉
python
Beyond_System|系统之外3 小时前
【学编程】Python基础编程题100道(21-60)
开发语言·python·算法
根目录下的猫4 小时前
RK3588适配的轻量级AI模型推荐
人工智能·后端·python·目标检测
wno7044 小时前
Spring Security权限控制
java·python·spring
ShineWinsu5 小时前
对于Coze—AI:SDK的解析
人工智能·python·ai·sdk·项目·coze·字节跳动