思路:1、获取原图和有缺口的图片
2、对比图片像素有不同的地方,获得滑动距离
3、模拟人的操作滑动按钮
参考:https://github.com/Python3WebSpider/CrackGeetest
import time
from io import BytesIO
from PIL import Image
from selenium import webdriver
from selenium.webdriver import ActionChains
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
import base64
import re
from pycparser.c_ast import Goto
ACCOUNT = ''
PASSWORD = ''
BORDER = 8 #缺口位移
INIT_LEFT = 60
class CrackGeetest():
def __init__(self):
self.url = 'https://passport.bilibili.com/login'
self.browser = webdriver.Chrome()
self.wait = WebDriverWait(self.browser, 20)
self.account = ACCOUNT
self.password = PASSWORD
def __del__(self):
self.browser.close()
def get_geetest_button(self):
"""
获取初始验证按钮
:return:
"""
button = self.wait.until(EC.element_to_be_clickable((By.CLASS_NAME, 'btn-login')))
return button
def get_position(self):
"""
获取验证码位置
:return: 验证码位置元组
"""
img = self.wait.until(EC.presence_of_element_located((By.CLASS_NAME, 'geetest_canvas_bg')))
time.sleep(2)
location &#