欢迎光临
我们一直在努力

Python解决同步验证码模拟登录问题

1、如何识别验证码

前言:识别验证码借助第三方库很好识别,主要是获得验证码识别后又相当一次request请求,这就会导致与当前页面的验证码不同,即使成功识别也会因为验证码的不统一而登录不了

私信小编01即可获取大量Python学习资料

1.1模拟登录

通过selenium自动化测试工具自动定位将用户名和密码输入后进入验证码的识别

 

1.2验证码的获取(重点在于解决验证码同步避免两次请求)

通过截屏将整页截图,再通过定位控件的位置以及crop函数截取想要的验证码区域

pic = driver.find_element_by_id('Image1')
location = pic.location
size = pic.size
# 左上右下四元组坐标
coordinates = (
    int(location['x']), int(location['y']), int(location['x'] + size['width']), int(location['y'] + size['height']))
driver.save_screenshot('test.png')
i = Image.open('test.png')
verfiy_pic = i.crop(coordinates)  
verfiy_pic.save('验证码.png')  # 将同步的验证码保存到本地

1.3验证码的识别

①通过OCR图片识别借助图鉴第三方打码平台识别(识别能力稍强,付费很便宜1块钱可以用几千次,也可能几百次反正很实惠,识别能力比②强)图鉴网站点击查看详情
②(借助tesseract识别参考)(识别能力弱一点免费)
接下来以第一种识别为例,账号自备

import json
import requests
import base64
from io import BytesIO
from PIL import Image
from sys import version_info  


def base64_api(uname, pwd, img):
    img = img.convert('RGB')
    buffered = BytesIO()
    img.save(buffered, format="JPEG")
    if version_info.major >= 3:
        b64 = str(base64.b64encode(buffered.getvalue()), encoding='utf-8')
    else:
        b64 = str(base64.b64encode(buffered.getvalue()))
    data = {"username": uname, "password": pwd, "image": b64}
    result = json.loads(requests.post("http://api.ttshitu.com/base64", json=data).text)
    if result['success']:
        return result["data"]["result"]
    else:
        return result["message"]
    return ""
if __name__ == "__main__":
    img_path = "demo.jpg"
    img = Image.open(img_path)
    result = base64_api(uname='', pwd='', img=img)
    print(result)

2、整体代码

不提供账户和密码等信息,代码提供完整的可根据需求自行变动

 

 

 

3、如何批量导入导出python库

①导出:pip freeze > C:UsersAdministratorDesktop1.txt
会在桌面生成一个txt文件里面有安装过的所有python第三方库

 


②导入:pip install -r C:UsersAdministratorDesktop1.txt
输入命令回车后文件中的所有库都会导入到site-package中(系统环境变量中)

 收藏 (0) 打赏

您可以选择一种方式赞助本站

支付宝扫一扫赞助

微信钱包扫描赞助

未经允许不得转载:英协网 » Python解决同步验证码模拟登录问题

分享到: 生成海报
avatar

热门文章

  • 评论 抢沙发

    • QQ号
    • 昵称 (必填)
    • 邮箱 (必填)
    • 网址

    登录

    忘记密码 ?

    切换登录

    注册

    我们将发送一封验证邮件至你的邮箱, 请正确填写以完成账号注册和激活