🔓 B站滑块验证码破解

📋 功能说明
  • 识别滑块验证码缺口位置
  • 计算滑动距离
  • 模拟人类滑动轨迹
💻 源代码
import cv2
import numpy as np
from selenium import webdriver

def find_gap(bg_img, gap_img):
    """识别滑块缺口位置"""
    bg = cv2.imread(bg_img)
    gap = cv2.imread(gap_img)
    
    # 边缘检测
    bg_gray = cv2.cvtColor(bg, cv2.COLOR_BGR2GRAY)
    gap_gray = cv2.cvtColor(gap, cv2.COLOR_BGR2GRAY)
    
    # 模板匹配
    res = cv2.matchTemplate(bg_gray, gap_gray, cv2.TM_CCOEFF_NORMED)
    min_val, max_val, min_loc, max_loc = cv2.minMaxLoc(res)
    
    return max_loc[0]

def get_track(distance):
    """生成滑动轨迹"""
    track = []
    current = 0
    mid = distance * 4 / 5
    t = 0.2
    v = 0
    
    while current < distance:
        if current < mid:
            a = 2
        else:
            a = -3
        v0 = v
        v = v0 + a * t
        move = v0 * t + 0.5 * a * t * t
        current += move
        track.append(round(move))
    
    return track

# 示例
distance = find_gap('bg.png', 'gap.png')
track = get_track(distance)
print(f"滑动距离: {distance}, 轨迹: {track}")
📦 运行环境
pip install opencv-python selenium
技术原理
  1. 截取背景图和滑块图
  2. OpenCV模板匹配找缺口
  3. 生成模拟人类滑动轨迹
  4. Selenium执行滑动操作