Greasy Fork镜像 支持简体中文。

CNKI自动滑动验证(调试版)

自动滑动CNKI试读页面的验证滑块(包含调试信息)

  1. // ==UserScript==
  2. // @name CNKI自动滑动验证(调试版)
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.4
  5. // @description 自动滑动CNKI试读页面的验证滑块(包含调试信息)
  6. // @match https://kns.cnki.net/nzkhtml/xmlRead/trialRead.html*
  7. // @grant none
  8. // ==/UserScript==
  9.  
  10. (function() {
  11. 'use strict';
  12.  
  13. function autoSlide() {
  14. const slider = document.querySelector('.handler.handler_bg');
  15. if (slider) {
  16. console.log('滑块元素找到');
  17. const sliderBox = document.querySelector('.slider-wrapper');
  18. if (sliderBox) {
  19. console.log('滑块容器找到');
  20. const boxRect = sliderBox.getBoundingClientRect();
  21. const sliderRect = slider.getBoundingClientRect();
  22. const startX = sliderRect.left + sliderRect.width / 2;
  23. const startY = sliderRect.top + sliderRect.height / 2;
  24. const endX = boxRect.right - sliderRect.width / 2;
  25.  
  26. console.log(`开始位置: (${startX}, ${startY}), 结束位置: (${endX}, ${startY})`);
  27.  
  28. // 模拟鼠标按下
  29. slider.dispatchEvent(new MouseEvent('mousedown', {
  30. bubbles: true,
  31. cancelable: true,
  32. view: window,
  33. clientX: startX,
  34. clientY: startY
  35. }));
  36. console.log('模拟鼠标按下事件已触发');
  37.  
  38. // 模拟鼠标移动(增加多个中间点)
  39. const steps = 10;
  40. for (let i = 1; i <= steps; i++) {
  41. const currentX = startX + (endX - startX) * (i / steps);
  42. document.dispatchEvent(new MouseEvent('mousemove', {
  43. bubbles: true,
  44. cancelable: true,
  45. view: window,
  46. clientX: currentX,
  47. clientY: startY
  48. }));
  49. console.log(`模拟鼠标移动事件已触发 (${currentX}, ${startY})`);
  50. }
  51.  
  52. // 模拟鼠标松开
  53. document.dispatchEvent(new MouseEvent('mouseup', {
  54. bubbles: true,
  55. cancelable: true,
  56. view: window,
  57. clientX: endX,
  58. clientY: startY
  59. }));
  60. console.log('模拟鼠标松开事件已触发');
  61. } else {
  62. console.log('未找到滑块容器');
  63. }
  64. } else {
  65. console.log('未找到滑块元素');
  66. }
  67. }
  68.  
  69. // 创建一个MutationObserver来监视DOM变化
  70. const observer = new MutationObserver((mutations) => {
  71. for (let mutation of mutations) {
  72. if (mutation.type === 'childList') {
  73. const slider = document.querySelector('.handler.handler_bg');
  74. if (slider) {
  75. console.log('检测到滑块元素,准备执行自动滑动');
  76. autoSlide();
  77. observer.disconnect(); // 滑块出现后停止观察
  78. console.log('观察器已断开连接');
  79. break;
  80. }
  81. }
  82. }
  83. });
  84.  
  85. // 配置observer选项
  86. const config = { childList: true, subtree: true };
  87.  
  88. // 开始观察document.body的变化
  89. observer.observe(document.body, config);
  90. console.log('DOM观察器已启动');
  91.  
  92. // 添加手动触发按钮(用于调试)
  93. const debugButton = document.createElement('button');
  94. //debugButton.textContent = '手动触发自动滑动';
  95. debugButton.style.position = 'fixed';
  96. debugButton.style.top = '10px';
  97. debugButton.style.left = '10px';
  98. debugButton.style.zIndex = '9999';
  99. debugButton.addEventListener('click', autoSlide);
  100. document.body.appendChild(debugButton);
  101. })();

QingJ © 2025

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