您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
QOS-Handler(window param ver)
此脚本不应直接安装。它是供其他脚本使用的外部库,要使用该库请加入元指令 // @require https://update.greasyforks.org/scripts/430297/1128326/QOS-Handler.js
// ==UserScript== // @name QOS-Handler // @namespace http://greasyforks.org/ // @version 0.2 // @description QOS-Handler(window param ver) // @author Cosil.C // @grant unsafeWindow // @license GPL // ==/UserScript== /* jshint esversion: 6 */ /** * @description 流控相关 */ unsafeWindow.qos = { /** * @description 记录这次的访问时间戳,并返回是否超出限制 * @param sec 时间限制 * @param timesLimit 次数限制 * @returns sec秒内访问了超过timesLimit次 ? true : false */ record: (sec, timesLimit) => { sec = sec || 5; timesLimit = timesLimit || 10; console.log(`start qos recording...\nsec:${sec},timesLimit:${timesLimit}`); let timestamp = new Date().getTime(), historyArr = document.defaultView.qos.getRecord(); historyArr.push(timestamp); if (historyArr.length > timesLimit) { let shift; do { shift = parseInt(historyArr.shift()); } while (historyArr.length > timesLimit); // if (timestamp - shift <= sec * 1000) { let format = function (target) { return new Date(target).toTimeString().substr(0, 8); }; console.log(`current:${format(timestamp)}, shift:${format(shift)}, interval(sec):${(timestamp - shift) / 1000}`); return true; } } localStorage.setItem('historyArr', JSON.stringify(historyArr)); console.log('qos recorded'); return false; }, /** * @description 清除缓存中的记录 */ clearRecord: () => { localStorage.removeItem('historyArr'); }, /** * @description 获取记录的历史 * @returns 历史记录数组 */ getRecord: () => { let historyArr; try { historyArr = JSON.parse(localStorage.getItem('historyArr') || '[]'); } catch (e) { console.error(e); console.error(`cause:${localStorage.getItem('historyArr')}`); document.defaultView.qos.clearRecord(); historyArr = []; } return historyArr; } };