标签: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. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。