インストールの前に、Sleazy Forkは、このスクリプトにアンチ機能が含まれることをお知らせします。これはあなたではなく、スクリプトの作者の利益を目的としてます。
このスクリプトは支払うことでのみ完全な機能となります。Sleazy Fork は支払いに関与しないので、価値のあるものを入手できるかを検証していませんし、返金のお手伝いもできないので注意してください。
Sleazy Fork is available in English.
含羞草研究所,可观看含羞草vip視頻 除钻石和付费视频。
// ==UserScript== // @name 含羞草研究所|fi11.com 永久vip vip视频随意观看 // @name:zh-TW 含羞草研究所|fi11.com 永久vip vip視頻隨意觀看 // @namespace http://tampermonkey.net/ // @version 2.6.1 // @description 含羞草研究所,可观看含羞草vip視頻 除钻石和付费视频。 // @description:zh-tw 含羞草研究所,可观看含羞草vip視頻,除钻石和付费视频。 // @author JamToday // @include * // @icon data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw== // @grant none // @antifeature payment // ==/UserScript== (function () { let kitty_emojiList = ["😃","😄","😁","😆","😅","🤣","😂","🙂","🙃","🫠","😉","😊","😇","😕","🫤","😟","🙁","☹","😯","😲","🥺","🥹","😦","😧","😨","😰","😥","😢","😭","😱","😖","😣","😞","😓","😩","😫","😤","😡","😠"] let kitty_emojiIndex = 0 let kitty_StatusColor = { success: "#67C23A", warning: "#E6A23C", info: "#909399", danger: "#F56C6C", '200': "#67C23A", '300': "#E6A23C", '400': "#909399", '500': '#F56C6C' } let kitty_config = { name: "含羞草脚本", id: "xns", version: "2.6.1", homePageName: "kitty猫", homePageUrl: "www.kittymao.xyz", update: 3, logListMaxLength: 5, logItemLength: 20, useMethodUrlList: ["docs.kittymao.xyz"], payUrlList: ["shop.kittymao.xyz"], updateUrl: "https://sleazyfork.org/zh-CN/scripts/477924", requestHostList: ["https://baixiaodu.uk/api","https://www.kittymao.xyz/api","https://kittymao.xyz/api"], } let kitty_isrun = { getNewVersion: false } let kitty_tabIndex = 0 let kitty_logList = [] let localStorageName = "token" function kitty_setCookie(cname, cvalue, exdays) { var d = new Date(); d.setTime(d.getTime() + (exdays * 24 * 60 * 60 * 1000)); var expires = "expires=" + d.toGMTString(); document.cookie = cname + "=" + cvalue + "; " + expires; } function kitty_insertStyle() { let style = document.createElement("style") style.innerHTML = ` /* 整体-start */ #kitty_vipPanel { width: 310px; height: 500px; box-shadow: 0 0 0 1px rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 9%); border-left: 1px solid transparent; border-right: none; border-top: 1px solid transparent; border-bottom: 1px solid transparent; background-color: #FFFFFF; position: fixed; left: 6px; bottom: 6px; z-index: 99999; font-size: 16px; --script-panel-main-color: black; } #kitty_vipPanel a { text-decoration: underline; } .kitty_panelMain { font-size: 0.85em; } .hitty_hiddenPanel { left: -310px !important; } /* 整体-end */ /* panelHead-start */ .kitty_panelHead { display: flex; border-bottom: 1px solid #ececec; } .kitty_panelHead>div { color: #444; padding: 0 10px; height: 40px; line-height: 40px; box-sizing: border-box; user-select: none; text-align: center; width: 76px; font-size: 1em; } .kitty_panelHead>div:not(.kitty_headDivActive):hover { border-bottom: 3px solid #ccc; cursor: pointer; } .kitty_headDivActive { border-bottom: 3px solid var(--script-panel-main-color); color: #444; font-weight: bold; } /* panelHead-end */ /* 界面显示按钮 */ .kitty_showPanelBtn { position: absolute; left: 320px; bottom: 20px; width: 60px; height: 40px; line-height: 40px; color: var(--script-panel-main-color); user-select: none; background-color: #FFFFFF; position: absolute; left: 320; bottom: 20px; display: none; cursor: pointer; border-radius: 5px; } /* 身体 */ .kitty_panelBody { padding: 0 10px; } .kitty_panelBody p { margin: 10px 0; color: black; } /* 输入框-start */ .kitty_searchInput { width: 98%; border-radius: 24px; box-shadow: 0 0 0 1px rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 9%); height: 40px; border-left: 1px solid transparent; border-right: none; border-top: 1px solid transparent; border-bottom: 1px solid transparent; overflow: hidden; margin: 0 auto; margin-top: 40px; margin-bottom: 50px; display: flex; } .kitty_searchInput:hover { border-top-left-radius: 24px; box-shadow: 0 0 0 1px rgb(0 0 0 / 10%), 0 2px 4px 1px rgb(0 0 0 / 18%); border-left: 1px solid transparent; border-right: none; border-top: 1px solid transparent; border-bottom: 1px solid transparent; } .kitty_searchInput input { height: 100%; border: 0; outline: 0; padding: 0 10px; color: black !important; width: 100%; background-color: white; } /* 输入框-end */ /* go按钮-start */ .kitty_goToVipBtn { color: #FFFFFF; font-weight: bold; background-color: var(--script-panel-main-color); height: 100px; width: 100px; border-radius: 50px; text-align: center; line-height: 100px; margin: 20px auto; box-shadow: 0 0 0 1px rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 9%); user-select: none; } .kitty_goToVipBtn:hover { cursor: pointer; box-shadow: 0 0 0 0 rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 18%); -webkit-box-shadow: 0 0 0 0 rgb(0 0 0 / 5%), 0 2px 4px 1px rgb(0 0 0 / 18%); -moz-box-shadow: 0 0 0 0 rgba(0,0,0,.05),0 2px 4px 1px rgba(0,0,0,.18); } /* 动画 */ @keyframes kitty_float { 0% { transform: translateY(0px); } 5% { transform: translateY(-10px); } 10%,100% { transform: translateY(0px); } } .kitty_navy { position: relative; } .kitty_navy span { position: relative; display: inline-block; color: white; animation: kitty_float 9s ease-in-out infinite; animation-delay: 2s; font-size: 1.5em; } /* go按钮-end */ .kitty_logOutput { color: #71777d; font-size: 0.9em; margin-top: 50px; } .kitty_logOutput div { margin: 0; padding: 0; line-height: 1.5; } .kitty_downloadText { font-size: 20px; font-weight: bold; } .kitty_downloadText a { cursor:pointer; } ` document.querySelector("head").appendChild(style); } function kitty_createPanel() { let panel = document.createElement("div") panel.setAttribute("id", "kitty_vipPanel") panel.innerHTML = ` <div class="kitty_showPanelBtn">>>显示</div> <div class="kitty_panelMain"> <div class="kitty_panelHead"> <div class="kitty_headDivActive">获取权限</div> <div>令牌登录</div> <div>使用指南</div> <div>支付</div> </div> <div class="kitty_panelBody kitty_panelBody_0"> <div class="kitty_searchInput"> <input id="kitty_txm" type="text" placeholder=""> </div> <div class="kitty_goToVipBtn kitty_navy"> <span>G</span> <span>O</span> <span>!</span> </div> <div class="kitty_logOutput"> <div>脚本--><span class="kitty_scriptName"></span>-<span class="kitty_version"></span>-<span class="kitty_update"></span></div> <div>主页--><a class="kitty_homepage" target="_blank" href="">主页地址</a></div> <div>邮箱-->JamJamToday@protonmail.com</div> <div>操作--><span style="color: red;cursor:pointer;" class="kitty_hiddenPanelBtn">点此隐藏此脚本操作界面<<</span></div> <div class="kitty_logList"> </div> </div> </div> <div class="kitty_panelBody kitty_panelBody_1" style="display:none;"> <p>暂未开放</p> </div> <div class="kitty_panelBody kitty_panelBody_2" style="display:none;"> <p>+ 使用方法线路1: <a target="_blank" href="https://docs.kittymao.xyz">www.kittymao.xyz</a></p> </div> <div class="kitty_panelBody kitty_panelBody_3" style="display:none;"> <p>+ 支付线路1: <a target="_blank" href="https://shop.kittymao.xyz">shop.kittymao.xyz</a></p> </div> </div> ` document.body.appendChild(panel) } function kitty_eventBind() { let tabs = document.querySelectorAll(".kitty_panelHead>div") for (let i = 0; i < tabs.length; i++) { tabs[i].addEventListener("click", function() { for (let ii = 0; ii < tabs.length; ii++) { tabs[ii].className = "" } tabs[i].className = "kitty_headDivActive" kitty_changeTab(i) }) } document.querySelector(".kitty_hiddenPanelBtn").addEventListener("click", function() { kitty_hiddenPanel() }) document.querySelector(".kitty_showPanelBtn").addEventListener("click", function() { kitty_showPanel() }) let gets = document.querySelectorAll(".kitty_goToVipBtn") gets[0].addEventListener("click", function() { kitty_getPermissionStart() }) } function kitty_changeTab(index) { kitty_tabIndex = index let panelBodys = document.querySelectorAll(".kitty_panelBody") if(!panelBodys[kitty_tabIndex]) { return } for (let i = 0; i < panelBodys.length; i ++) { panelBodys[i].style.display = "none" } panelBodys[kitty_tabIndex].style.display = "block" } function kitty_hiddenPanel() { document.querySelector("#kitty_vipPanel").className = "hitty_hiddenPanel" document.querySelector(".kitty_showPanelBtn").style.display = "block" } function kitty_showPanel() { document.querySelector("#kitty_vipPanel").className = "" document.querySelector(".kitty_showPanelBtn").style.display = "none" } function kitty_getPermissionStart() { let emoLength = kitty_emojiList.length let txm = document.querySelector("#kitty_txm").value if (!txm) { kitty_logListPush(`请输入口令,然后点击GO按钮${kitty_emojiList[kitty_emojiIndex]}`, "info") kitty_emojiIndex++ if (kitty_emojiIndex>=emoLength) { kitty_emojiIndex = 0; } return } localStorage.setItem("kitty_txm", txm) kitty_getSuccessHost(); kitty_getPermission(0, txm, false); } function kitty_getSuccessHost() { let successHost = localStorage.getItem("kitty_requestSuccessHost") if(successHost) { let findIndex = kitty_config.requestHostList.indexOf(successHost); if (findIndex!=-1) { kitty_config.requestHostList.splice(findIndex, 1); kitty_config.requestHostList.unshift(successHost); } } } function kitty_getHost(index) { return kitty_config.requestHostList[index] } function kitty_getStatusTypeText(type) { let typeText = "提示"; switch(type){ case "success": typeText = "成功" break case "warning": typeText = "警告" break case "info": typeText = "信息" break case "danger": typeText = "失败" break case '200': typeText = "成功" break case '300': typeText = "警告" break case '400': typeText = "信息" break case '500': typeText = "失败" break } return typeText; } function kitty_logListPush(item, type) { let stringLength = item.length let start = 0; let end = kitty_config.logItemLength-1 let headLine = true while(stringLength>=0) { let typeText = `${kitty_getStatusTypeText(type)}-->`; let styleColor = "" if (type) { styleColor = type?`color: ${kitty_StatusColor[type]}`:""; } if (kitty_logList.length >= kitty_config.logListMaxLength) { kitty_logListShift() } kitty_logList.push(`<span style="${styleColor}">${headLine?typeText:'<span style="opacity: 0;">续行--</span>>'}${item.substring(start, end)}</span>`) start = end end += end stringLength = stringLength-kitty_config.logItemLength headLine = false } kitty_showLogList() } function kitty_logListShift() { kitty_logList.shift(); kitty_showLogList(); } function kitty_showLogList() { let innerhtml = ""; let kitty_logListDiv = document.getElementsByClassName("kitty_logList")[0] kitty_logList.forEach(item => { innerhtml+=`<div>${item}</div>` }) kitty_logListDiv.innerHTML = innerhtml; } function kitty_setConfig() { document.getElementsByClassName("kitty_scriptName")[0].innerHTML = kitty_config.name; document.getElementsByClassName("kitty_version")[0].innerHTML = `v${kitty_config.version}`; let homepage = document.getElementsByClassName("kitty_homepage")[0]; homepage.innerHTML = kitty_config.homePageName+`(${kitty_config.homePageUrl})` homepage.href = "https://"+kitty_config.homePageUrl if (kitty_config.update===1) { let versionSpan = document.getElementsByClassName("kitty_update")[0]; versionSpan.innerHTML = `已最新`; versionSpan.style = `color: ${kitty_StatusColor.success};`; } else if (kitty_config.update===2) { let versionSpan = document.getElementsByClassName("kitty_update")[0]; versionSpan.innerHTML = `<span class="kitty_toNewVersion" style="user-select: none;cursor: pointer;">点此更新</span>`; versionSpan.style = `color: ${kitty_StatusColor.warning};`; document.querySelector(".kitty_toNewVersion").addEventListener("click", function() { window.open(kitty_config.updateUrl) }) } else { let versionSpan = document.getElementsByClassName("kitty_update")[0]; versionSpan.innerHTML = `<span class="kitty_checkVersion" style="user-select: none;cursor: pointer;">检查更新</span>`; versionSpan.style = `color: ${kitty_StatusColor.warning};`; document.querySelector(".kitty_checkVersion").addEventListener("click", function() { kitty_getNewVersion(0, false) }) } } function kitty_getCardNumber() { let txm = localStorage.getItem("txm") if (txm) { localStorage.setItem("kitty_txm", txm) localStorage.removeItem("txm") } let kitty_txm = localStorage.getItem("kitty_txm") if (kitty_txm) { document.querySelector("#kitty_txm").value = kitty_txm kitty_logListPush("已获取到上次使用的口令,请另外保存口令", "info") kitty_logListPush(`请点击GO按钮${kitty_emojiList[kitty_emojiIndex]}`, "info") } else { kitty_logListPush(`请输入口令,然后点击GO按钮${kitty_emojiList[kitty_emojiIndex]}`, "info") kitty_emojiIndex++ } } function kitty_getPermission(index, txm, change) { if (kitty_isrun.getPermission&&!change) { return } let host = kitty_getHost(index) if(!change) { kitty_logListPush("发送请求中请耐心等待...", "info") } kitty_isrun.getPermission = true let url = `${host}/hxc/getPermission` fetch(url, { method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "version": kitty_config.version, "cardContent": txm.trim(), "nickname": "hxc" }) }).then(res => res.json()).then(res => { localStorage.setItem("kitty_requestSuccessHost", host) try { if (res.success) { dealGetPermissionRes(res.data) } else { kitty_logListPush(res.message, "warning") } } catch(e) { kitty_logListPush("失败,返回值处理有问题", "danger") console.log(e) } kitty_isrun.getPermission = false }).catch((e) => { if (e.toString().includes("JSON")) { kitty_logListPush("JSON解析失败,请联系作者", "danger") kitty_isrun.getPermission = false } else { console.log(e) index++ let getHost = kitty_getHost(index) if (getHost) { kitty_logListPush("请求失败,切换线路中请耐心等待...", "warning") kitty_getPermission(index, txm, true) } else { kitty_logListPush("请求失败,请联系作者", "danger") kitty_isrun.getPermission = false } } }) } function dealGetPermissionRes(resData) { console.log(resData) kitty_saveToken(resData) } function kitty_getNewVersion(index, change) { if (kitty_isrun.getNewVersion&&!change) { return } let host = kitty_getHost(index) if(!change) { kitty_logListPush("检查版本号中请耐心等待...", "info") } kitty_isrun.getNewVersion = true let url = `${host}/getVersion` fetch(url,{ method: "POST", headers: { "Content-Type": "application/json", }, body: JSON.stringify({ "nickname": "hxc" }) }).then(res => res.json()).then(res => { localStorage.setItem("kitty_requestSuccessHost", host) try { let data = res.data if (data.version === kitty_config.version) { kitty_config.update = 1 kitty_logListPush("已是最新版", "success") } else { kitty_config.update = 2 kitty_config.updateUrl = data.updateUrl kitty_logListPush("不是最新版,可能无法使用", "warning") } kitty_setConfig() } catch(e) { kitty_logListPush("失败,返回值处理有问题", "danger") console.log(e) } kitty_isrun.getNewVersion = false }).catch((e) => { if (e.toString().includes("JSON")) { kitty_logListPush("JSON解析失败,请联系作者", "danger") kitty_isrun.getNewVersion = false } else { console.log(e) index++ let getHost = kitty_getHost(index) if (getHost) { kitty_logListPush("请求失败,切换线路中请耐心等待...", "warning") kitty_getNewVersion(index, true) } else { kitty_logListPush("请求失败,请联系作者", "danger") kitty_isrun.getPermission = false } } }) } function kitty_vipPanelInit() { kitty_insertStyle(); kitty_createPanel(); kitty_getSuccessHost(); kitty_showLogList(); kitty_eventBind(); kitty_setConfig(); kitty_isLogin(); } function kitty_saveToken ({token}) { let local = JSON.parse(localStorage.getItem(localStorageName)) local = token localStorage.setItem("isGetPermission", true) localStorage.setItem("getTokenTime", Date.now()) localStorage.setItem(localStorageName, JSON.stringify(local)) kitty_logListPush("请求成功,刷新页面中", "success"); location.reload(); } function kitty_isSuccess() { let get = localStorage.getItem("isGetPermission") if (get === "true" || get === true) { get = true } else { get = false } let local = localStorage.getItem(localStorageName) let localb = false if (local) { localb = true } else { localb = false } if (!(localb && get)) { localStorage.setItem("isGetPermission", false) } return localb && get } function kitty_isLogin() { let isLoginInterval = setInterval(function(){ let local = JSON.parse(localStorage.getItem(localStorageName)) if (local) { kitty_logListPush("您已登录自己的账号", "success"); if (kitty_isSuccess()) { kitty_getCardNumber(); kitty_hiddenPanel(); kitty_logListPush("请求成功,请尝试观看VIP视频", "success"); } else { kitty_getCardNumber(); } clearInterval(isLoginInterval) } else { kitty_logListPush("请先登录自己的含羞草账号...", "warning"); localStorage.setItem("isGetPermission", false) } },500) } function kitty_isMobileDevice() { return /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent); } function kitty_isRun() { let startnumber = 0; let startInterval = setInterval(()=>{ startnumber ++ if (localStorage.getItem("timeStampError")!=null||localStorage.getItem('homeGetAds')||localStorage.getItem('preInfo')) { let site = true let run = false if (document.querySelector("#kitty_vipPanel")||document.querySelector("#vipPanel")) { run = true } if (site&&!run) { let isH5 = kitty_isMobileDevice() if (isH5) { console.log("手机端") localStorageName = "fission-friends-h5_B_token" } kitty_vipPanelInit(); console.log("启动脚本") } clearInterval(startInterval) } if (startnumber>=40) { clearInterval(startInterval) } },1000) } kitty_isRun() })();