Script Archived
This script has been archived by the author. The script may be no longer functional, and the author no longer maintains it. You cannot provide feedback for this script.
// ==UserScript==
// @name 米游社-后台原神签到
// @namespace https://bbs.tampermonkey.net.cn/
// @version 0.2.3
// @description 后台签到原神,需要先登录https://bbs.mihoyo.com/ys/,不用再打开浏览器啦,代码已经原作者允许
// @author 王一之
// @crontab * 1-23 once * *
// @grant GM_xmlhttpRequest
// @grant GM_notification
// @grant GM_cookie
// @connect api-takumi.mihoyo.com
// @connect mihoyo.com
// @require https://cdn.jsdelivr.net/gh/emn178/js-md5/build/md5.min.js
// @license MIT
// @original-script https://greasyfork.org/zh-CN/scripts/432059
// @original-author 苏芣苡
// @original-license MIT
// @original-script https://greasyfork.org/zh-CN/scripts/448880
// @original-author asadahimeka
// @original-license MIT
// ==/UserScript==
function Rn(min, max) {
return Math.floor(Math.random() * (max - min + 1) + min)
}
/*!
* Forked from https://greasyfork.org/zh-CN/scripts/448880
* Copyright © asadahimeka
* License MIT
*/
const APP_VERSION = "2.33.2";
const CLIENT_TYPE = "4";
const USER_AGENT = `Mozilla/5.0 (iPhone; CPU iPhone OS 14_0_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) miHoYoBBS/${APP_VERSION}`;
const REFERER = "https://webstatic.mihoyo.com/bbs/event/signin-ys/index.html?bbs_auth_required=true&act_id=e202009291139501&utm_source=bbs&utm_medium=mys&utm_campaign=icon";
const HOST = "api-takumi.mihoyo.com";
const GET_ROLE_URL = "https://api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookie?game_biz=hk4e_cn";
const SIGN_URL = "https://api-takumi.mihoyo.com/event/bbs_sign_reward/sign";
const DEVICE_ID = "7ab3bc70b846186b9da1e816e6c6f08d";
function getDS() {
const s = "1OUn34iIy84ypu9cpXyun2VaQ2zuFeLm";
const t = Math.floor(Date.now() / 1e3);
const r = Math.random().toString(36).slice(-6);
const c = `salt=${s}&t=${t}&r=${r}`;
const ds = `${t},${r},${md5(c)}`;
return ds;
}
function getHeaders() {
return {
"User-Agent": USER_AGENT,
"Referer": REFERER,
"Host": HOST,
"DS": getDS(),
"x-rpc-app_version": APP_VERSION,
"x-rpc-client_type": CLIENT_TYPE,
"x-rpc-device_id": DEVICE_ID,
};
}
var mpid = [9873884]
for (var i = 0; i < 30; i++) {
mpid.push(Rn(6000000, 9870000))
}
return new Promise((resolve, reject) => {
GM_cookie("list", {
domain: ".mihoyo.com",
name: "cookie_token_v2",
}, (cookie) => {
if (cookie.length == 0) {
GM_notification({
title: "[米游社 原神签到]\未找到cookie_token,请尝试重新登录",
text: "点击前往登录!",
ondone: () => { window.open(ysurl) },
})
reject('未找到cookie_token,请尝试重新登录');
return
}
GM_xmlhttpRequest({
url: "https://api-takumi.mihoyo.com/binding/api/getUserGameRolesByCookie?game_biz=hk4e_cn",
method: "GET",
onload: function (xhr) {
var json = JSON.parse(xhr.responseText)
if (json.retcode !== 0) {
if (ysweb < 0) {
GM_notification({
title: "[米游社 原神签到]\n帐号未登录!",
text: "点击前往登录!",
ondone: () => { window.open(ysurl) },
})
} else {
GM_notification({
title: "[米游社 原神签到]\n帐号未登录!",
text: "请登录帐号!",
})
}
reject('请登录帐号!');
return;
}
var list = json.data.list
let n = 0;
for (var i in list) {
uid = json.data.list[i].game_uid
region = json.data.list[i].region
region_name = json.data.list[i].region_name
nickname = json.data.list[i].nickname
level = json.data.list[i].level
data = '{"act_id":"e202009291139501","region":"' + region + '","uid":"' + uid + '"}'
GM_xmlhttpRequest({
url: 'https://api-takumi.mihoyo.com/event/bbs_sign_reward/sign',
method: 'POST',
data: data,
headers: getHeaders(),
onload: function (xhr) {
var json = JSON.parse(xhr.responseText)
message = json.message
if (message == "OK") {
message = "今日打卡完成!"
}
var tips = '【' + region_name + '】[ Lv : ' + level + ']\n【' + nickname + '】[UID : ' + uid + ']\n【消息】' + message;
GM_notification({
title: "[米游社 原神签到]\n签到成功!!",
text: tips,
});
n++;
if (n == list.length) {
resolve(tips);
}
}, onerror() {
GM_notification({
title: "原神签到失败",
text: "网络错误,签到失败"
});
reject("网络错误");
}
})
}
}, onerror() {
GM_notification({
title: "原神签到失败",
text: "网络错误,签到失败"
});
reject("网络错误");
}
});
});
});