Captcha Configuration Layer

Complete configuration for all captcha types

此脚本不应直接安装,它是一个供其他脚本使用的外部库。如果您需要使用该库,请在脚本元属性加入:// @require https://update.gf.qytechs.cn/scripts/530640/1558602/Captcha%20Configuration%20Layer.js

  1. // ==UserScript==
  2. // @name Captcha Configuration Layer
  3. // @namespace http://your-namespace.com
  4. // @version 1.0
  5. // @description Complete configuration for all captcha types
  6. // ==/UserScript==
  7.  
  8. const Config = {
  9. // 基础API配置
  10. API: {
  11. ENDPOINT: "http://api.jfbym.com/api/YmServer/customApi",
  12. DEFAULT_TIMEOUT: 20000, // 20秒
  13. CONTENT_TYPES: {
  14. JSON: "application/json",
  15. FORM: "application/x-www-form-urlencoded"
  16. }
  17. },
  18.  
  19. // 全量验证码类型配置(基于文档1 37个接口)
  20. CAPTCHA_TYPES: {
  21. // █████ 通用数英类(12种)█████
  22. GENERAL_NUM_EN_1_4: {
  23. type: "10103",
  24. name: "通用数英1-4位基础版",
  25. params: {
  26. image: "", // Base64图片
  27. token: "", // 用户令牌
  28. extra: "" // 扩展参数
  29. },
  30. pricing: {
  31. base: 12, // 基础价格
  32. tiers: { // 阶梯价格
  33. 4: 12, // <=4位
  34. 6: 15 // <=6位(当基础版失败时升级)
  35. }
  36. },
  37. fallback: "GENERAL_NUM_EN_HUMAN_1_20" // 上位接口
  38. },
  39.  
  40. GENERAL_NUM_EN_HUMAN_1_20: {
  41. type: "50103",
  42. name: "人机混合数英1-20位",
  43. params: {
  44. image: "",
  45. token: "",
  46. hybrid_mode: true // 人机混合标志
  47. },
  48. pricing: {
  49. tiers: { // 详细阶梯定价
  50. 5: 12, 6:15, 7:18, 8:20,
  51. 9:23, 10:25, 12:30, 20:50
  52. }
  53. },
  54. timeout: 30000 // 人工识别延长超时
  55. },
  56.  
  57. // ...其他数英变体...
  58. GENERAL_NUM_EN_5_8: {
  59. type: "10105",
  60. name: "通用数英5-8位",
  61. params: {
  62. image: "",
  63. token: "",
  64. length_range: [5,8] // 显式长度限制
  65. }
  66. },
  67.  
  68. GENERAL_NUM_EN_12_PLUS: {
  69. type: "10120",
  70. name: "通用数英12位+",
  71. params: {
  72. image: "",
  73. token: "",
  74. strict_mode: true // 严格校验模式
  75. }
  76. },
  77.  
  78. // █████ 特殊定制类(8种)█████
  79. CASE_SENSITIVE: {
  80. type: "20110",
  81. name: "区分大小写定制版",
  82. params: {
  83. image: "",
  84. token: "",
  85. case_sensitive: true, // 大小写区分
  86. template_match: true // 需匹配示例图
  87. }
  88. },
  89.  
  90. COLOR_FILTER: {
  91. type: "20205",
  92. name: "指定颜色字符",
  93. params: {
  94. image: "",
  95. token: "",
  96. color: "red", // 支持red/blue/yellow/all
  97. filter_type: "exact" // 精确颜色匹配
  98. }
  99. },
  100.  
  101. // ...其他定制类型...
  102. DYNAMIC_BG: {
  103. type: "20301",
  104. name: "动态背景适配",
  105. params: {
  106. image: "",
  107. token: "",
  108. bg_complexity: 3 // 背景复杂度等级
  109. }
  110. },
  111.  
  112. // █████ 计算题类(6种)█████
  113. MATH_CHINESE: {
  114. type: "30101",
  115. name: "中文计算题",
  116. params: {
  117. image: "",
  118. token: "",
  119. lang: "zh-CN" // 语言标识
  120. }
  121. },
  122.  
  123. MATH_NUMERIC: {
  124. type: "30201",
  125. name: "数字计算题",
  126. params: {
  127. image: "",
  128. token: "",
  129. max_operands: 3 // 最大操作数
  130. }
  131. },
  132.  
  133. // █████ 滑块类(11种)█████
  134. SLIDE_DOUBLE: {
  135. type: "40101",
  136. name: "双图滑块",
  137. params: {
  138. bg_image: "", // 背景图
  139. slice_image: "", // 滑块图
  140. token: ""
  141. },
  142. calibration: { // 校准参数
  143. base_ratio: 0.82, // 基础比例
  144. offset: 5, // 像素偏移
  145. formula: raw => Math.round(raw * 0.82 + 5)
  146. }
  147. },
  148.  
  149. SLIDE_SINGLE: {
  150. type: "40201",
  151. name: "单图滑块",
  152. params: {
  153. image: "",
  154. token: "",
  155. detection_mode: "edge" // 边缘检测模式
  156. },
  157. calibration: {
  158. base_ratio: 1.15,
  159. offset: -3,
  160. formula: raw => Math.abs(raw * 1.15 - 3)
  161. }
  162. },
  163.  
  164. // ...其他滑块变体...
  165. BEHAVIOR_SLIDE: {
  166. type: "40305",
  167. name: "行为验证滑块",
  168. params: {
  169. image: "",
  170. token: "",
  171. behavior_data: "" // 行为轨迹数据
  172. }
  173. },
  174.  
  175. // █████ 错误处理配置 █████
  176. ERROR_CODES: {
  177. 10000: { level: "success", msg: "识别成功" },
  178. 10002: {
  179. level: "critical",
  180. msg: "余额不足",
  181. action: "recharge|stop"
  182. },
  183. 10007: {
  184. level: "warning",
  185. msg: "服务繁忙",
  186. retry: {
  187. max_attempts: 3,
  188. backoff: [1000, 3000, 5000] // 重试间隔
  189. }
  190. },
  191. // ...其他错误码...
  192. 10010: {
  193. level: "info",
  194. msg: "请求结束",
  195. action: "refresh_captcha"
  196. }
  197. },
  198.  
  199. // █████ 高级安全配置 █████
  200. SECURITY: {
  201. IMAGE_VALIDATION: {
  202. MIN_WIDTH: 80, // 最小图片宽度
  203. MIN_HEIGHT: 30, // 最小图片高度
  204. MAX_SIZE: 1.5 * 1024 * 1024, // 1.5MB
  205. ALLOWED_FORMATS: ["jpg", "png", "webp"]
  206. },
  207. REQUEST_SIGNING: {
  208. ENABLED: true,
  209. VERSION: "v2",
  210. ALGORITHM: "HMAC-SHA256",
  211. TIMESTAMP_WINDOW: 5000 // 5秒有效期
  212. }
  213. }
  214. },
  215.  
  216. // █████ 运行时配置 █████
  217. RUNTIME: {
  218. AUTO_SWITCH_THRESHOLD: 0.65, // 识别置信度阈值
  219. HUMAN_FALLBACK_DELAY: 15000, // 人工识别等待时间
  220. ELEMENT_DETECTION: {
  221. SCAN_INTERVAL: 3000, // 元素检测间隔
  222. CAPTCHA_KEYWORDS: [ // 验证码特征关键词
  223. "captcha", "yzm", "verification",
  224. "验证码", "安全校验", "人机验证"
  225. ]
  226. }
  227. }
  228. };
  229.  
  230. /* 配置验证函数 */
  231. function validateConfig() {
  232. // 类型存在性检查
  233. const REQUIRED_TYPES = [
  234. 'GENERAL_NUM_EN_1_4',
  235. 'SLIDE_DOUBLE',
  236. 'MATH_CHINESE'
  237. ];
  238. // 参数完整性检查
  239. const validateParams = (typeConfig) => {
  240. const requiredParams = ['type', 'name', 'params'];
  241. return requiredParams.every(param => param in typeConfig);
  242. };
  243.  
  244. // 执行验证
  245. try {
  246. REQUIRED_TYPES.forEach(type => {
  247. if (!Config.CAPTCHA_TYPES[type]) {
  248. throw new Error(`Missing required captcha type: ${type}`);
  249. }
  250. if (!validateParams(Config.CAPTCHA_TYPES[type])) {
  251. throw new Error(`Invalid configuration for type: ${type}`);
  252. }
  253. });
  254. console.log("Config validation passed");
  255. } catch (e) {
  256. console.error("Config validation failed:", e);
  257. }
  258. }
  259.  
  260. // 初始化时自动验证
  261. validateConfig();

QingJ © 2025

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