鱼C论坛

 找回密码
 立即注册
查看: 12586|回复: 7

【油猴脚本】模拟鼠标点击

[复制链接]
发表于 2021-4-22 20:32:53 | 显示全部楼层 |阅读模式
60鱼币
本帖最后由 知我枯荣 于 2021-4-22 20:38 编辑

最近刷课,视频每隔几分钟就会暂停,需要手动点击才能继续播放

V86VO4(8$TESKRL]ZVL@ATI.png

想写个油猴脚本,每次弹窗都模拟鼠标自动点击继续播放

出现弹窗时,代码如图:
1.jpg

点击继续后:

JLT}][JM9}MH`2)K]][W51F.png
大佬们,分享代码的同时能不能分享一下思路,小白一枚,想向大佬们学习学习

小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-23 00:50:35 | 显示全部楼层
  1. // ==UserScript==
  2. // @name         发展对象在线培训
  3. // @namespace    http://tampermonkey.net/
  4. // @version      1.510
  5. // @description  一开始选择课程既会自动点击开始播放。视频学习播放每5分钟左右会遇上弹窗(发现这段js被关闭了,用了其他方法来检查视频播放完毕)。原理:每3秒左右(随机)尝试点击“继续”的弹窗,没有则会跳过。支持同一课程下多个视频的自动播放。课程结束后会自动点击“学习完成”。没有需要学习的视频后停止。页面跳转回选课界面,请留意。
  6. // @author       ShiZitou
  7. // @include      http://210.37.41.108/fzdx/*/play?*
  8. // @grant        none
  9. // @require      http://code.jquery.com/jquery-1.11.0.min.js
  10. // ==/UserScript==

  11. (function() {
  12.     'use strict';
  13.     console.log('It\'s runing Now');
  14.     var i=0;var j=0;
  15.     var colors="red";
  16.     var time=getTimes();
  17.     var pa = document.createElement('p');
  18.     var n=130;//最大等待响应时长:n*3s
  19.     var k=0;
  20.     if(document.getElementsByClassName("video_cont")[0]===undefined){
  21.         console.log("视频出错,即将刷新");
  22.         location.reload();
  23.     }else{
  24.        document.getElementsByClassName("video_cont")[0].appendChild(pa);  
  25.     }
  26.     showInfo('开始工作');
  27.     var tm=setInterval(function(){
  28.         if(document.getElementsByClassName("video_head").length==0&&document.getElementsByClassName("video_cont").length==0){
  29.             console.log("视频出错,即将刷新");
  30.             location.reload();
  31.         }else{
  32.             if(document.getElementsByClassName("video_red1")[0].children[0].style.color==colors){//如果当前已经看完
  33.                 showInfo("当前视频已看完,将点击下一视频");
  34.                 if(document.getElementsByClassName("video_red1")[0].nextSibling.nextSibling===null){
  35.                     window.clearInterval(t1);
  36.                     showInfo('当前课程没有需要学习的内容了!');
  37.                     window.location.href="http://wsdx.ncu.edu.cn/user/lesson";
  38.                 }else{
  39.                     document.getElementsByClassName("video_red1")[0].nextSibling.nextSibling.children[0].click();//点击下一视频
  40.                 }
  41.             }else{
  42.                 //进行弹窗点击操作
  43.                 //console.log(document.getElementsByClassName("public_submit")[0]);
  44.                 if(document.getElementsByClassName("public_cancel")[0]===undefined){
  45.                     if(document.getElementsByClassName("public_submit")[0]===undefined){
  46.                         i=i+1;
  47.                         showInfo('共点击'+j+'次弹窗!预计下次弹窗'+(i/n*100).toFixed(2)+'%。已过'+(i*time/60/1000).toFixed(2)+'分钟');
  48.                         if(document.getElementsByClassName("plyr--stopped")[0]===undefined){
  49.                             k=0;
  50.                         }else{
  51.                             k++;
  52.                             if(k>=n/10-5){
  53.                                 showInfo('视频暂停中,将在'+((n/10-k)*time/60/1000).toFixed(2)+'分钟后刷新');
  54.                             }
  55.                             if(k>=n/10){
  56.                                 showInfo('视频暂停中,可能已播完,刷新');
  57.                                 location.reload();
  58.                             }                           
  59.                         }
  60.                     }else{
  61.                         document.getElementsByClassName("public_submit")[0].click();
  62.                         i=0;
  63.                         j=j+1;
  64.                         showInfo('第'+j+'次点击弹窗!开始学习');
  65.                     }
  66.                 }else{
  67.                     document.getElementsByClassName("public_cancel")[0].click();
  68.                     i=0;
  69.                     j=j+1;
  70.                     showInfo('第'+j+'次点击弹窗!继续学习');
  71.                 }
  72.             }
  73.         }
  74.        //alert(document.getElementsByClassName("public_submit")[1]);
  75.     },time);
  76.    
  77. })();

  78. function getTimes(){
  79.     var times=Math.random()*8 + 1;//1-9
  80.     times=3*1000*1;//+times*10
  81.     return times
  82. }

  83. function showInfo(str){
  84.     console.log(str);
  85.     document.getElementsByClassName("video_cont")[0].children[2].innerText=str;
  86. }
复制代码
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-23 00:53:04 | 显示全部楼层

恰巧在greasyfork上看到一个原理差不多的,稍微改了一下可以实现我想要的功能了,但是还有一个问题,切换到新标签页视频会自动暂停,这个有大佬能帮忙解决吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-22 20:47:16 From FishC Mobile | 显示全部楼层
这东西一般都是js编写
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-22 21:40:24 | 显示全部楼层
  1. #
复制代码
是通过js操作使网页继续
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

发表于 2021-4-22 21:43:54 | 显示全部楼层
我推荐鼠标连点器,设置固定时间,然后点击
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-22 21:52:36 | 显示全部楼层
雷欧库珀 发表于 2021-4-22 21:43
我推荐鼠标连点器,设置固定时间,然后点击

但是这个出现的时间是随机的,这个确实可以用按键精灵或者Uibot实现,主要是希望能和大佬们学学JS
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

 楼主| 发表于 2021-4-22 22:10:56 | 显示全部楼层
xiaosi4081 发表于 2021-4-22 21:40
是通过js操作使网页继续

大佬,能教教我吗
小甲鱼最新课程 -> https://ilovefishc.com
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2025-4-21 15:39

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表