ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

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

2022-06-16 14:02:29  阅读:178  来源: 互联网

标签:Web 对接 driver 验证码 label result import 打码 constants


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

# 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

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有