// ==UserScript== // @name 油猴中文网签到 // @namespace https://geoisam.github.io // @version 1.0.0 // @description 油猴中文网DSU每日自动签到 // @author geoisam@qq.com // @icon data:image/png;base64,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 // @homepage https://github.com/geoisam/FuckScripts // @supportURL https://github.com/geoisam/FuckScripts/issues // @crontab * * once * * // @connect bbs.tampermonkey.net.cn // @grant unsafeWindow // @grant GM_xmlhttpRequest // @grant GM_notification // @grant GM_openInTab // @grant GM_log // @tips 此脚本一直为 开源免费 使用,如果你是从某些地方买的话,你就是被骗了 // ==/UserScript== const FuckF = { getRandomNum(num) { return Math.floor(Math.random() * num) }, getDatetime() { const timeUTC = new Date() const timeChina = new Date(timeUTC.setUTCHours(timeUTC.getUTCHours() + 8)) return timeChina.toISOString() }, log(title, text, push = false) { GM_log(title + text + "🔚") if (!push) return GM_notification({ text: text, title: GM_info.script.name + title, onclick: () => { GM_openInTab("https://bbs.tampermonkey.net.cn/?fromuid=27974", { active: true, insert: true, setParent: true }) }, }) }, xhr(options) { return new Promise((resolve, reject) => { const seconds = Date.now() GM_xmlhttpRequest({ ...options, timeout: 15000, ontimeout() { reject(new Error(`请求超时!用时 ${(Date.now() - seconds) / 1000} 秒`)) }, onload(xhr) { if (xhr.status == 200) { resolve(xhr.responseText) } else { reject(new Error(`请求失败,用时 ${(Date.now() - seconds) / 1000} 秒,状态码:${xhr.status}`)) } }, onerror(err) { reject(new Error(`请求发生异常!用时 ${(Date.now() - seconds) / 1000} 秒 🔛${err}`)) }, }) }) }, } return new Promise((resolve, reject) => { const mood = ["kx", "ng", "ym", "wl", "nu", "ch", "fd", "yl", "shuai"] const qdxq = mood[FuckF.getRandomNum(mood.length)] FuckF.signStart = async () => { try { const initCheck = await FuckF.xhr({ url: "https://bbs.tampermonkey.net.cn/" }) if (initCheck) { const formhash = initCheck.match(/formhash=(.*?)"/) if (formhash) { const todaysay = FuckF.getDatetime() const dsuSign = await FuckF.xhr({ method: "POST", url: "https://bbs.tampermonkey.net.cn/plugin.php?id=dsu_paulsign:sign&operation=qiandao&infloat=1&inajax=1", headers: { "content-type": "application/x-www-form-urlencoded; charset=UTF-8", "referer": "https://bbs.tampermonkey.net.cn/", }, data: new URLSearchParams({ "formhash": formhash[1], "qdxq": qdxq, // random "qdmode": 1, // 1:todaysay、2:fastreply、3:empty "todaysay": todaysay, "fastreply": 0, }).toString(), }) if (dsuSign) { const result = dsuSign.replace(/\s/g, "") FuckF.log("🔵", result) const res = result.match(/class="c">(.*?)<\/div><\/div>\]\]/) if (res) { const signed = res[1].match(/成功/) if (signed) { FuckF.log("🟢", res[1], true) } else { FuckF.log("🟣", res[1], true) } } } } else { FuckF.log("🟡", "请先登录才能继续操作!", true) } } } catch (e) { FuckF.log("🔴", e.message, true) } resolve() } FuckF.signStart() })