Captcha Configuration Layer

Complete configuration for all captcha types

目前為 2025-03-23 提交的版本,檢視 最新版本

此腳本不應該直接安裝,它是一個供其他腳本使用的函式庫。欲使用本函式庫,請在腳本 metadata 寫上: // @require https://update.gf.qytechs.cn/scripts/530640/1558602/Captcha%20Configuration%20Layer.js

// ==UserScript==
// @name         Captcha Configuration Layer
// @namespace    http://your-namespace.com
// @version      1.0
// @description  Complete configuration for all captcha types
// ==/UserScript==

const Config = {
  // 基础API配置
  API: {
    ENDPOINT: "http://api.jfbym.com/api/YmServer/customApi",
    DEFAULT_TIMEOUT: 20000, // 20秒
    CONTENT_TYPES: {
      JSON: "application/json",
      FORM: "application/x-www-form-urlencoded"
    }
  },

  // 全量验证码类型配置(基于文档1 37个接口)
  CAPTCHA_TYPES: {
    // █████ 通用数英类(12种)█████
    GENERAL_NUM_EN_1_4: {
      type: "10103",
      name: "通用数英1-4位基础版",
      params: {
        image: "",     // Base64图片
        token: "",     // 用户令牌
        extra: ""      // 扩展参数
      },
      pricing: {
        base: 12,       // 基础价格
        tiers: {        // 阶梯价格
          4: 12,        // <=4位
          6: 15         // <=6位(当基础版失败时升级)
        }
      },
      fallback: "GENERAL_NUM_EN_HUMAN_1_20" // 上位接口
    },

    GENERAL_NUM_EN_HUMAN_1_20: {
      type: "50103",
      name: "人机混合数英1-20位",
      params: {
        image: "",
        token: "",
        hybrid_mode: true // 人机混合标志
      },
      pricing: {
        tiers: {          // 详细阶梯定价
          5: 12, 6:15, 7:18, 8:20, 
          9:23, 10:25, 12:30, 20:50
        }
      },
      timeout: 30000      // 人工识别延长超时
    },

    // ...其他数英变体...
    GENERAL_NUM_EN_5_8: {
      type: "10105",
      name: "通用数英5-8位",
      params: {
        image: "",
        token: "",
        length_range: [5,8] // 显式长度限制
      }
    },

    GENERAL_NUM_EN_12_PLUS: {
      type: "10120",
      name: "通用数英12位+",
      params: {
        image: "",
        token: "",
        strict_mode: true // 严格校验模式
      }
    },

    // █████ 特殊定制类(8种)█████
    CASE_SENSITIVE: {
      type: "20110",
      name: "区分大小写定制版",
      params: {
        image: "",
        token: "",
        case_sensitive: true, // 大小写区分
        template_match: true  // 需匹配示例图
      }
    },

    COLOR_FILTER: {
      type: "20205",
      name: "指定颜色字符",
      params: {
        image: "",
        token: "",
        color: "red",       // 支持red/blue/yellow/all
        filter_type: "exact" // 精确颜色匹配
      }
    },

    // ...其他定制类型...
    DYNAMIC_BG: {
      type: "20301",
      name: "动态背景适配",
      params: {
        image: "",
        token: "",
        bg_complexity: 3 // 背景复杂度等级
      }
    },

    // █████ 计算题类(6种)█████
    MATH_CHINESE: {
      type: "30101",
      name: "中文计算题",
      params: {
        image: "",
        token: "",
        lang: "zh-CN" // 语言标识
      }
    },

    MATH_NUMERIC: {
      type: "30201",
      name: "数字计算题", 
      params: {
        image: "",
        token: "",
        max_operands: 3 // 最大操作数
      }
    },

    // █████ 滑块类(11种)█████
    SLIDE_DOUBLE: {
      type: "40101",
      name: "双图滑块",
      params: {
        bg_image: "",    // 背景图
        slice_image: "", // 滑块图
        token: ""
      },
      calibration: {      // 校准参数
        base_ratio: 0.82, // 基础比例
        offset: 5,        // 像素偏移
        formula: raw => Math.round(raw * 0.82 + 5)
      }
    },

    SLIDE_SINGLE: {
      type: "40201",
      name: "单图滑块",
      params: {
        image: "",
        token: "",
        detection_mode: "edge" // 边缘检测模式
      },
      calibration: {
        base_ratio: 1.15,
        offset: -3,
        formula: raw => Math.abs(raw * 1.15 - 3)
      }
    },

    // ...其他滑块变体...
    BEHAVIOR_SLIDE: {
      type: "40305",
      name: "行为验证滑块",
      params: {
        image: "",
        token: "",
        behavior_data: "" // 行为轨迹数据
      }
    },

    // █████ 错误处理配置 █████
    ERROR_CODES: {
      10000: { level: "success", msg: "识别成功" },
      10002: { 
        level: "critical", 
        msg: "余额不足",
        action: "recharge|stop" 
      },
      10007: {
        level: "warning",
        msg: "服务繁忙",
        retry: {
          max_attempts: 3,
          backoff: [1000, 3000, 5000] // 重试间隔
        }
      },
      // ...其他错误码...
      10010: {
        level: "info",
        msg: "请求结束",
        action: "refresh_captcha"
      }
    },

    // █████ 高级安全配置 █████
    SECURITY: {
      IMAGE_VALIDATION: {
        MIN_WIDTH: 80,    // 最小图片宽度
        MIN_HEIGHT: 30,   // 最小图片高度
        MAX_SIZE: 1.5 * 1024 * 1024, // 1.5MB
        ALLOWED_FORMATS: ["jpg", "png", "webp"]
      },
      REQUEST_SIGNING: {
        ENABLED: true,
        VERSION: "v2",
        ALGORITHM: "HMAC-SHA256",
        TIMESTAMP_WINDOW: 5000 // 5秒有效期
      }
    }
  },

  // █████ 运行时配置 █████
  RUNTIME: {
    AUTO_SWITCH_THRESHOLD: 0.65,  // 识别置信度阈值
    HUMAN_FALLBACK_DELAY: 15000,  // 人工识别等待时间
    ELEMENT_DETECTION: {
      SCAN_INTERVAL: 3000,        // 元素检测间隔
      CAPTCHA_KEYWORDS: [         // 验证码特征关键词
        "captcha", "yzm", "verification",
        "验证码", "安全校验", "人机验证"
      ]
    }
  }
};

/* 配置验证函数 */
function validateConfig() {
  // 类型存在性检查
  const REQUIRED_TYPES = [
    'GENERAL_NUM_EN_1_4', 
    'SLIDE_DOUBLE',
    'MATH_CHINESE'
  ];
  
  // 参数完整性检查
  const validateParams = (typeConfig) => {
    const requiredParams = ['type', 'name', 'params'];
    return requiredParams.every(param => param in typeConfig);
  };

  // 执行验证
  try {
    REQUIRED_TYPES.forEach(type => {
      if (!Config.CAPTCHA_TYPES[type]) {
        throw new Error(`Missing required captcha type: ${type}`);
      }
      if (!validateParams(Config.CAPTCHA_TYPES[type])) {
        throw new Error(`Invalid configuration for type: ${type}`);
      }
    });
    console.log("Config validation passed");
  } catch (e) {
    console.error("Config validation failed:", e);
  }
}

// 初始化时自动验证
validateConfig();

QingJ © 2025

镜像随时可能失效,请加Q群300939539或关注我们的公众号极客氢云获取最新地址