用python怎样实现滑动验证码呢?

手把手带大家实现Bilibili模拟登陆(滑动验证码)项目,来肝!

1. 为什么要处理滑动验证码

在很多时候我们在做模拟登陆的时候会遇到滑动验证码,这个时候就必须要处理。

2. 目标网站

bilibili视频网站的滑动验证码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-84SzkWPr-1668861160014)(https://mmbiz.qpic.cn/mmbiz/A7icgZ2Ooga2ib08SFCUibOx0hn839LeoNLiadQcBliaibglLBCicMz6EYyvp7U6ErxXjicKpy0c5RKaPCDtSuBavX6zZA/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1)]

经过分析我们知道bilibili使用的是极验的拖动验证码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-69FJ8asb-1668861160015)(https://mmbiz.qpic.cn/mmbiz/A7icgZ2Ooga2ib08SFCUibOx0hn839LeoNLAFHC32pCKicn5c0bWPs8tJqIIev7c2wBYrJOGZf5NdobiaVSvs3QhL7A/640?wx_fmt=other&wxfrom=5&wx_lazy=1&wx_co=1)]

3.项目的开发环境

本项目需要用到 selenium,io,PIL,time,random,请提前安装

请安装对应版本的库如下,其他库均为标准库,无需安装 pip3 install Pillow4.2.1 pip3 install selenium3.12.0

4.项目流程介绍

  1. 初始化
  2. 请求bilibili的登录页面&模拟输入账号密码
  3. 获取验证码图片&有阴影拼图的验证码图片
  4. 比较两个验证码图片获取验证码滑块的偏移量
  5. 使用偏移值计算移动操作
  6. 操作滑块按钮,模拟拖动滑块做验证登录

5.bilibili模拟登陆-初始化

#coding:utf-8
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
from io import BytesIO
from PIL import Image
import time
import random

class Bilibili(object):

    def __init__(self):
        # 设置登录页面url
        self.url = 'https://passport.bilibili.com/login'

        # 创建浏览器对象
        self.driver = webdriver.Chrome()

        # 设置页面的隐式等待
        self.driver.implicitly_wait(3)

        # 设置账号密码
        self.user = '18668928175'
        self.pwd = '461324morganna'


    def login(self):
        """
            实现主要的登录逻辑
        """
        pass


    def run(self):
        self.login()

if __name__ == '__main__':
    bili = Bilibili()
    bili.run()

6.

你可能感兴趣的:(python,开发语言,chrome)