JDbScript

提效gogogo!

当前为 2022-11-28 提交的版本,查看 最新版本

  1. // ==UserScript==
  2. // @name JDbScript
  3. // @namespace http://598570789@qq.com/
  4. // @version 0.4
  5. // @description 提效gogogo!
  6. // @author JDb
  7. // @compatible chrome
  8. // @compatible firefox
  9. // @match *://*.shizhuang-inc.com/*
  10. // @match *://*.shizhuang-inc.net/*
  11. // @match *://open.feishu.cn/*
  12. // @match *://home.console.aliyun.com/*
  13. // @include *://signin.aliyun.com/poizon.onaliyun.com/*
  14. // @license MIT
  15. // @run-at document-start
  16. // @require http://cdn.bootcss.com/jquery/1.8.3/jquery.min.js
  17. // ==/UserScript==
  18. var 测试 = 80;//P
  19. var 评测默认没问题 = 79;//O
  20. // 键盘编码表 https://jingyan.baidu.com/article/fedf073780e16335ac8977a4.html
  21. // console document.querySelector("video").playbackRate=
  22.  
  23. //获取所有 class 同时包括 'red' 和 'test' 的元素.
  24. //document.getElementsByClassName('red test');
  25.  
  26. //在id 为'main'的元素的子节点中,获取所有class为'test'的元素
  27. //document.getElementById('main').getElementsByClassName('test');
  28.  
  29.  
  30.  
  31.  
  32. //统一登录(不可用)平台
  33. var poizonLoginAliyunUrl="https://prism.shizhuang-inc.com/account/cloudy/account/my";
  34. //阿里云控制台
  35. var ailiyunConsoleUrl="https://home.console.aliyun.com/home/dashboard/ProductAndService";
  36. //poizon登录(不可用) 飞书扫码
  37. var poizonLoginUrl="https://sso.shizhuang-inc.com/";
  38. //poizon登录(不可用) 飞书授权
  39. var poizonLoginUrl2="https://open.feishu.cn/open-apis/authen/v1/user_auth_page_beta";
  40.  
  41. //资源加载完成事件
  42. (function() {
  43. 'use strict';
  44. window.onload = ()=>{
  45. doTask();
  46. }
  47. })();
  48.  
  49. //dom加载完成事件
  50. document.addEventListener("DOMContentLoaded", onDomReady);
  51. function onDomReady() {
  52. closeAliyun();
  53. }
  54.  
  55. //标签切换事件
  56. document.addEventListener('visibilitychange', () => {
  57. if(document.visibilityState === 'hidden') {
  58. // 离开当前tab标签
  59. }else {
  60. log("回到当前tab标签")
  61. //回到sso登录(不可用)页,关闭
  62. if("prism.shizhuang-inc.com"===document.domain){
  63. window.close()
  64. history.back(1)
  65. return
  66. }
  67. //回到阿里云ram用户登录(不可用)页,刷新
  68. if("signin.aliyun.com"===document.domain){
  69. location.reload()
  70. return
  71. }
  72. }
  73. }
  74. )
  75. const sleep = ms => new Promise(resolve => setTimeout(resolve, ms));
  76.  
  77. //页面加载后执行
  78. async function doTask(){
  79. // log("domain:"+document.domain)
  80. // log("url:"+decodeURIComponent(location.href.split('#')[0]))
  81. log(window.location.protocol+"//"+window.location.host+""+window.location.pathname)
  82.  
  83. await sleep(300);
  84.  
  85. //自动登录(不可用) 阿里云
  86. autoLoginAliyun()
  87. //自动登录(不可用) poizon
  88. autoLoginPoizon()
  89.  
  90. log("x.未知页面")
  91. }
  92.  
  93. async function autoLoginAliyun(){
  94. if(!isUrlOrDomainMatch("signin.aliyun.com")&&!isUrlMatch(poizonLoginAliyunUrl)&&!isUrlMatch(ailiyunConsoleUrl)){
  95. return;
  96. }
  97. log("是阿里云登录(不可用)页面")
  98.  
  99. //1.打开公司登录(不可用)页面
  100. if(hasTag('button','使用企业账号登录(不可用)') && "signin.aliyun.com"===document.domain ){
  101. log("autoLoginAliyun.1.打开公司登录(不可用)页面")
  102. window.open("https://prism.shizhuang-inc.com/cloud/cloudy",'_blank');
  103. return
  104. }
  105. //2.点开控制台登录(不可用)
  106. if("prism.shizhuang-inc.com"===document.domain){
  107. log("autoLoginAliyun.2.点开控制台登录(不可用)")
  108. if(await clickTagPlus('button','控制台登陆',true,20)){
  109. sleep(500)
  110. log("点击控制台登陆成功")
  111. // window.close()
  112. }else{
  113. error("点击控制台登陆失败")
  114. }
  115. return
  116. }
  117.  
  118. // //3.关闭阿里云控制台
  119. // if("home.console.aliyun.com"===document.domain){
  120. // log("autoLoginAliyun.3.关闭阿里云控制台")
  121. // window.close()
  122. // return
  123. // }
  124. }
  125. function closeAliyun(){
  126. //1.关闭阿里云控制台
  127. if("home.console.aliyun.com"===document.domain){
  128. log("autoLoginAliyun.3.关闭阿里云控制台")
  129. window.close()
  130. return
  131. }
  132. }
  133.  
  134. function autoLoginPoizon(){
  135. if(!isUrlOrDomainMatch(poizonLoginUrl)&&!isUrlOrDomainMatch(poizonLoginUrl2)){
  136. return
  137. }
  138. log("是poizon登录(不可用)页面")
  139.  
  140. //1.飞书扫码登录(不可用)
  141. if(isUrlOrDomainMatch(poizonLoginUrl)){
  142. log("autoLoginPoizon.1")
  143. clickTag('button','飞书扫码登录(不可用)')
  144. return
  145. }
  146. //2.授权
  147. if(isUrlOrDomainMatch(poizonLoginUrl2)){
  148. log("autoLoginPoizon.1")
  149. clickTag('div','授权',false)
  150. return
  151. }
  152. }
  153.  
  154.  
  155. function log(str){
  156. var d=new Date()
  157. var s=d.getMinutes()+":" + d.getSeconds() + " "+ str;
  158. console.log('%c'+s,'color:green;fontpsize:35px;')
  159. }
  160. function error(str){
  161. var d=new Date()
  162. var s=d.getMinutes()+":" + d.getSeconds() + " "+ str;
  163. console.error('%c'+s,'color:red;fontpsize:35px;')
  164. }
  165.  
  166.  
  167.  
  168.  
  169. //域名或完整地址匹配
  170. function isUrlOrDomainMatch(urlOrDamin){
  171. // log("isUrlOrDomainMatch.urlOrDamin:"+isUrlOrDomainMatch.urlOrDamin)
  172. return isUrlMatch(urlOrDamin)||isDomainMatch(urlOrDamin)
  173. }
  174. //完整地址匹配
  175. function isUrlMatch(url){
  176. if(window.location.protocol+"//"+window.location.host+""+window.location.pathname===url){
  177. log("matchUrlSuccess:"+url)
  178. return true
  179. }
  180. error("matchUrlFail:"+url)
  181. return false
  182. }
  183. //域名匹配
  184. function isDomainMatch(domain){
  185. if(domain===document.domain){
  186. log("domainMatchSuccess:"+domain)
  187. return true
  188. }
  189. error("domainMatchFail:"+domain)
  190. return false
  191. }
  192.  
  193.  
  194.  
  195. //ark自动审批
  196. async function autoCheckArk(){
  197. log("autoCheckArk()")
  198. log(window.location.href)
  199.  
  200. var eleArr
  201. var rs
  202. if(window.location.href.indexOf("ark.shizhuang-inc.com/approveList?")!=-1
  203. ||
  204. window.location.href.indexOf("ark.shizhuang-inc.com/ark/approveList?")!=-1
  205. ){
  206. log("进入ark list")
  207. retry(()=>clickTag('a','详情',true))
  208. await sleep(1000)
  209.  
  210. if(await retry(()=>clickTag('button','审批通过',true))){
  211. retry(()=>clickTag('button','返回',true))
  212. }
  213. }
  214. }
  215.  
  216. //是否有当前指定标签
  217. async function hasTag(tag,val){
  218. await sleep(500);
  219. var eleArr = document.getElementsByTagName(tag);
  220. var rs=false
  221. for( var i=0; i<eleArr.length; i++ ){
  222. // log("value="+eleArr[i].value+" innerText="+eleArr[i].innerText)
  223. if(val===eleArr[i].innerText||val===eleArr[i].value){
  224. rs= true
  225. }
  226. }
  227. return rs;
  228. }
  229.  
  230. //带重试的点击行为
  231. async function clickTagPlus(tag,val,onlyFirst,retries){
  232. for(var i=0;i<retries;i++){
  233. log("第"+(i+1)+"次点击:"+val)
  234. if(await clickTag(tag,val,onlyFirst)){
  235. return true;
  236. }
  237. await sleep(1000);
  238. }
  239. return false;
  240. }
  241.  
  242. //点击行为
  243. async function clickTag(tag,val,onlyFirst){
  244. await sleep(500);
  245. // log("clickTag(" + val + ")")
  246. var eleArr = document.getElementsByTagName(tag);
  247. var rs=false
  248. for( var i=0; i<eleArr.length; i++ ){
  249. // log("value="+eleArr[i].value+" innerText="+eleArr[i].innerText)
  250. if(tag==='button'){
  251. if(val===eleArr[i].innerText.trim()||val===eleArr[i].value.trim()){
  252. eleArr[i].click()
  253. // log("点击"+val)
  254. rs= true
  255. }
  256. }else{
  257. if(val==eleArr[i].innerText){
  258. eleArr[i].click()
  259. // log("点击"+val)
  260. rs= true
  261. }
  262. }
  263. if(onlyFirst && rs){
  264. return rs;
  265. }
  266. }
  267. return rs;
  268. }
  269.  
  270. //重试
  271. async function retry(asyncRequest) {
  272. var times=2
  273. log("尝试调用"+asyncRequest)
  274. while(!await asyncRequest()){
  275. log("等待500ms 再次尝试")
  276. await sleep(500)
  277. }
  278. return true;
  279. }
  280. //满意度评测默认没问题
  281. function autoCheck(){
  282. var eleArr = document.getElementsByTagName('input');
  283. var rs=false
  284. for( var i=0; i<10; i++ ){
  285. eleArr[i].click()
  286. }
  287. clickTag('input','没问题',false)
  288. }
  289.  
  290.  
  291. $(document).ready(function() {
  292. //调用键盘编码,按了键盘回调keydown里的function(event)函数,event就是你按的那个按键的code码
  293.  
  294. // var 测试 = 80;//P
  295. // var 评测默认没问题 = 79;//O
  296. $(document).keydown(function(event){
  297. switch(event.keyCode){
  298. case 测试:
  299. // autoCheckArk();
  300. doTask();
  301. break;
  302. case 评测默认没问题:
  303. // autoCheck();
  304. }
  305. });
  306. });
  307.  

QingJ © 2025

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