1.模拟登录的网站:
bilibili视频网:https://passport.bilibili.com/login
2. 开发环境
本项目需要用到
io
time
random
selenium
PIL
请安装对应版本的库如下,其他库均为标准库,无需安装 pip install pillow pip install selenium
3.项目流程介绍
初始化请求bilibili的登录页面&模拟输入账号密码有阴影拼图的验证码图片&获取验证码图片比较两个验证码图片获取验证码滑块的偏移量使用偏移值计算移动操作操作滑块按钮,模拟拖动滑块做验证登录
5.bilibili模拟登陆-初始化和模拟输入账号密码
class Bilibili(object):
def __init__(self):
6.有阴影拼图的验证码图片&获取验证码图片
def get_screenshot(self):
''' 获取屏幕截图 ''' screenshot = self.driver.get_screenshot_as_png() screenshot =Image.open(BytesIO(screenshot)) return screenshot def update_style(self): ''' 修改图片的style属性,显示无缺口的图片 ''' js = 'document.querySelectorAll("canvas")[3].style="display:block"' self.driver.execute_script(js) time.sleep(2) def get_position(self): ''' 获取截取验证码时的四条边 '''
7. 比较两个验证码图片获取验证码滑块的偏移量
def is_pixel_equal(self,img1,img2,x,y):
''' 判断两张图片的同一像素点的RGB值是否相等 ''' pixel1,pixel2= img1.load()[x,y],img2.load()[x,y]
8.使用偏移值计算移动操作(轨迹)
def get_track(self,offset):
''' 模拟人为拖动验证码滑块 ''' track = []
9.操作滑块按钮,模拟拖动滑块做验证登录
def shake_mouse(self):
""" 模拟人手释放鼠标抖动 :return: None """ ActionChains(self.driver).move_by_offset(xoffset=-2,yoffset=0).perform() ActionChains(self.driver).move_by_offset(xoffset=2,yoffset=0).perform() def operate_slider(self,track): ''' 拖动滑块 '''
转载于:https://www.cnblogs.com/rrh4869/p/11192297.html
相关资源:Python-BilibilivideodownloadB站视频下载