飞道的博客

上班防摸鱼插件(知乎页面)

507人阅读  评论(0)

前言

最近突发奇想,写了一个js插件,用来防止上班摸鱼,插件仅知乎页面有效,别做的太绝。。。

启动该插件后,打开知乎页面,标题会改成 “摸鱼中。。。” ,背景被替换成咸鱼。每隔一分钟,背景就会变的透明一下。

10分钟后,页面提示同时发送钉钉机器人报警。20分钟后,页面报警同时发送机器人报警并主动关闭知乎页面。同时2小时内禁止再次访问知乎页面。效果和代码如下。


  
  1. // ==UserScript==
  2. // @name 上班防摸鱼插件
  3. // @namespace http://tampermonkey.net/
  4. // @version 0.1
  5. // @description 上班防摸鱼,自动关闭知乎页面,发送钉钉机器人报警。
  6. // @author 大话家
  7. // @include *://*.zhihu.com/*
  8. // @require https://cdn.bootcss.com/jquery/1.11.1/jquery.min.js
  9. // @require https://res.layui.com/layui/release/layer/dist/layer.js?v=3111
  10. // @require http://pv.sohu.com/cityjson?ie=utf-8
  11. // ==/UserScript==
  12. ( function() {
  13. 'use strict';
  14. // 背景透明值
  15. var opacityNum = 1.0;
  16. // 页面打开的时间
  17. var startTime = dateFormat( "YYYY年MM月dd日 HH时mm分ss秒", new Date());
  18. // 主机IP
  19. var ip = returnCitySN.cip;
  20. // 员工唯一标识
  21. var userId = 360945;
  22. var flag = localStorage.getItem( "flag");
  23. if(flag == "" || flag == undefined){
  24. flag = 0;
  25. localStorage.setItem( "flag", 1);
  26. }
  27. if(flag == 2){
  28. var banTime = localStorage.getItem( "banTime");
  29. // 2小时后可解封
  30. if( Date.now() - banTime > 2* 60* 60* 1000){
  31. localStorage.setItem( "flag", 0);
  32. } else{
  33. // 关闭页面
  34. window.opener = null;
  35. window.open( '', '_self');
  36. window.close();
  37. }
  38. }
  39. // 设置摸鱼壁纸
  40. document.body.style.background = "url('https://ss0.bdstatic.com/70cFvHSh_Q1YnxGkpoWK1HF6hhy/it/u=1272729702,676992708&fm=26&gp=0.jpg')";
  41. // 设置摸鱼标题
  42. setTimeout( function(){
  43. document.title = '摸鱼中。。。';
  44. }, 3* 1000);
  45. // 摸鱼过程中,每一分钟背景逐渐透明
  46. setInterval( function(){
  47. $( "body").css({ opacity: opacityNum });
  48. opacityNum = opacityNum -0.04;
  49. }, 60* 1000);
  50. // 10分钟内,页面警告;20分钟内强制退出!
  51. setInterval( function(){
  52. if(flag == 0){
  53. layer.msg( "你已摸鱼10分钟,请注意用时!\n上班要专心!", { icon: 7, time: 10000 });
  54. localStorage.setItem( "flag", 1);
  55. var dingMsg1 = "提示:"+userId+ "("+ip+ ")用户从"+startTime+ "开始摸鱼10分钟,上班要认真!";
  56. $.ajax({
  57. url: 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxx',
  58. type: "POST",
  59. async: false,
  60. beforeSend: function (xhr){
  61. xhr.setRequestHeader( 'Content-Type', 'application/json,application/x-www-form-urlencoded');
  62. },
  63. data: JSON.stringify({ "msgtype": "text", "text": { "content": dingMsg1}}),
  64. success: function (res){
  65. console.log(res);
  66. },
  67. error: function (err){
  68. console.log(err);
  69. }
  70. });
  71. // 强制退出
  72. } else{
  73. layer.msg( "你已摸鱼20分钟,您将禁止访问知乎页面2小时!", { icon: 7, time: 10000 });
  74. localStorage.setItem( "flag", 2);
  75. var dingMsg2 = "提示:"+userId+ "("+ip+ ")用户从"+startTime+ "开始摸鱼20分钟!插件将屏蔽该用户访问知乎页面2小时。";
  76. $.ajax({
  77. url: 'https://oapi.dingtalk.com/robot/send?access_token=xxxxxxxxxxx',
  78. type: "POST",
  79. async: false,
  80. beforeSend: function (xhr){
  81. xhr.setRequestHeader( 'Content-Type', 'application/json,application/x-www-form-urlencoded');
  82. },
  83. data: JSON.stringify({ "msgtype": "text", "text": { "content": dingMsg2}}),
  84. success: function (res){
  85. console.log(res);
  86. },
  87. error: function (err){
  88. console.log(err);
  89. }
  90. });
  91. localStorage.setItem( "banTime", Date.now());
  92. setTimeout( function(){
  93. window.opener = null;
  94. window.open( '', '_self');
  95. window.close();
  96. }, 12* 1000);
  97. }
  98. }, 10* 60* 1000);
  99. // 获取格式化时间
  100. function dateFormat(fmt, date) {
  101. let ret;
  102. const opt = {
  103. "Y+": date.getFullYear().toString(), // 年
  104. "M+": (date.getMonth() + 1).toString(), // 月
  105. "d+": date.getDate().toString(), // 日
  106. "H+": date.getHours().toString(), // 时
  107. "m+": date.getMinutes().toString(), // 分
  108. "s+": date.getSeconds().toString() // 秒
  109. // 有其他格式化字符需求可以继续添加,必须转化成字符串
  110. };
  111. for ( let k in opt) {
  112. ret = new RegExp( "(" + k + ")").exec(fmt);
  113. if (ret) {
  114. fmt = fmt.replace(ret[ 1], (ret[ 1].length == 1) ? (opt[k]) : (opt[k].padStart(ret[ 1].length, "0")))
  115. };
  116. };
  117. return fmt;
  118. }
  119. })();

 


转载:https://blog.csdn.net/qq_41057885/article/details/109215579
查看评论
* 以上用户言论只代表其个人观点,不代表本网站的观点或立场