🔓 滑块验证码破解

📋 功能说明
  • 通用滑块验证码识别
  • 图像缺口检测算法
  • 模拟人类滑动轨迹
💻 源代码
import cv2
import numpy as np
from selenium import webdriver
from selenium.webdriver.common.action_chains import ActionChains
import time

def get_distance(bg_img, full_img):
    """获取滑动距离"""
    bg = cv2.imread(bg_img, 0)
    full = cv2.imread(full_img, 0)
    
    # 边缘检测
    bg_edge = cv2.Canny(bg, 100, 200)
    full_edge = cv2.Canny(full, 100, 200)
    
    # 模板匹配
    res = cv2.matchTemplate(bg_edge, full_edge[120:370, 25:310], cv2.TM_CCOEFF_NORMED)
    _, _, _, max_loc = cv2.minMaxLoc(res)
    
    return max_loc[0]

def generate_track(distance):
    """生成带有变速的滑动轨迹"""
    track = []
    current = 0
    mid = distance * 0.7
    
    while current < distance:
        if current < mid:
            move = np.random.randint(2, 5)
        else:
            move = np.random.randint(1, 3)
        current += move
        track.append(current)
    
    # 滑动到精确位置
    track.append(distance)
    return track

def slide(driver, element, track):
    """执行滑动"""
    ActionChains(driver).click_and_hold(element).perform()
    
    for x in track:
        ActionChains(driver).move_by_offset(xoffset=x, yoffset=0).perform()
        time.sleep(np.random.randint(10, 50) / 1000)
    
    ActionChains(driver).release().perform()

# 使用
driver = webdriver.Chrome()
driver.get('https://example.com')
slide(driver, element, generate_track(50))
📦 运行环境
pip install opencv-python selenium
技术要点
  1. 图像边缘检测
  2. 模板匹配算法
  3. 人类轨迹模拟