其他分享
首页 > 其他分享> > Web自动化登录-对接打码平台

Web自动化登录-对接打码平台

作者:互联网

经过尝试多种自动化登录方式,发现通过对接打码平台实现识别验证码准确率更高。

# author:nly
# 时间:2022/6/16 9:16
import base64
import json
import requests
import constants


def base64_api(img):
    """
    :param username:用户名
    :param password:密码
    :param img:图片路径
    :param typeid:要识别的验证码的类型
    :return:验证码的识别结果
    """
    with open(img, 'rb') as f:
        base64_data = base64.b64encode(f.read())
        b64 = base64_data.decode()

    data = {"username": constants.TUJ_USERAME, "password": constants.TUJ_PASSWORD, "typeid": 3, "image": b64}

    result = json.loads(requests.post("http://api.ttshitu.com/predict", json=data).text)

    if result['success']:
        return result["data"]["result"]

    else:
        return result["message"]

上述代码中,constants.TUJ_USERNAME,constants.TUJ_PASSWORD是打码平台中自己的账户信息。

打码平台:http://www.ttshitu.com/,注册,充值,即可。

编写完成获取验证码的识别结果方法后,在后面的方法中直接调用即可。

# author:nly
# 时间:2022/6/16 10:41
"""
通过对接打码平台,实现自动化登录
"""
import unittest
from selenium import webdriver
import constants
import time
from param_code_shuyinghunhe import base64_api


class TestCase(unittest.TestCase):
    def test_xcp_login(self):
        global driver
        driver = webdriver.Chrome()
        driver.get('http://192.168.2.28:8087/')
        driver.implicitly_wait(3)
        # 定位到用户名和密码元素,输入对应内容
        username_label = driver.find_element_by_id('username')
        username_label.send_keys(constants.XCP_USERNAME)
        password_label = driver.find_element_by_id('password')
        password_label.send_keys(constants.XCP_PASSWORD)

        # 获取验证码,保存验证码图片
        yzm_label = driver.find_element_by_class_name('ant-col.ant-col-10')
        time.sleep(1)
        yzm_label.screenshot('xcp_yzm.png')
        time.sleep(1)

        # 对接打码平台,获取验证码识别结果
        img_path = 'xcp_yzm.png'
        result_code = base64_api(img_path)
        print('验证码结果:', result_code)

        code_label = driver.find_element_by_id('inputCode')
        code_label.send_keys(result_code)

        btn_login = driver.find_element_by_class_name('login-button.ant-btn.ant-btn-primary')
        btn_login.click()
        time.sleep(1)

 

标签:Web,对接,driver,验证码,label,result,import,打码,constants
来源: https://www.cnblogs.com/niulingyu/p/16381703.html