新增 BiliBili 漫画签到脚本
This commit is contained in:
parent
bdf6cf9440
commit
f1bc013840
|
@ -0,0 +1,144 @@
|
|||
/*
|
||||
哔哩哔哩漫画签到
|
||||
|
||||
脚本兼容: QuantumultX, Surge, Loon
|
||||
电报频道:@NobyDa
|
||||
问题反馈:@NobyDa_bot
|
||||
如果转载,请注明出处
|
||||
|
||||
说明:
|
||||
打开哔哩哔哩漫画后 (AppStore中国区),单击"我的", 如果通知获取cookie成功, 则可以使用此脚本.
|
||||
|
||||
脚本将在每天上午9点执行。 您可以修改执行时间。
|
||||
|
||||
~~~~~~~~~~~~~~~~
|
||||
Surge 4.2.0+ :
|
||||
|
||||
[Script]
|
||||
Bili漫画签到 = type=cron,cronexp=0 9 * * *,wake-system=1,script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js
|
||||
|
||||
Bili漫画Cookie = type=http-request,pattern=^https:\/\/passport\.biligame\.com\/api\/login\/sso.+?version%22%3A%22(3|4|5),script-path=https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js
|
||||
|
||||
[MITM]
|
||||
hostname = passport.biligame.com
|
||||
~~~~~~~~~~~~~~~~
|
||||
QX 1.0.10+ :
|
||||
|
||||
[task_local]
|
||||
0 9 * * * https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js, tag=Bili漫画签到
|
||||
|
||||
[rewrite_local]
|
||||
#获取Bili漫画Cookie
|
||||
^https:\/\/passport\.biligame\.com\/api\/login\/sso.+?version%22%3A%22(3|4|5) url script-request-header https://raw.githubusercontent.com/NobyDa/Script/master/Bilibili-DailyBonus/Manga.js
|
||||
|
||||
[mitm]
|
||||
hostname = passport.biligame.com
|
||||
~~~~~~~~~~~~~~~~
|
||||
*/
|
||||
|
||||
|
||||
const $nobyda = nobyda();
|
||||
|
||||
if ($nobyda.isRequest) {
|
||||
GetCookie()
|
||||
} else {
|
||||
checkin()
|
||||
}
|
||||
|
||||
function checkin() {
|
||||
const bilibili = {
|
||||
url: 'https://manga.bilibili.com/twirp/activity.v1.Activity/ClockIn',
|
||||
headers: {
|
||||
Cookie: $nobyda.read("CookieBM"),
|
||||
},
|
||||
body: "platform=ios"
|
||||
};
|
||||
$nobyda.post(bilibili, function (error, response, data) {
|
||||
if (!error) {
|
||||
if (parseInt(response.status) == 200) {
|
||||
console.log("bilibili success response : \n" + data)
|
||||
$nobyda.notify("哔哩哔哩漫画 - 签到成功!🎉", "", "")
|
||||
} else {
|
||||
console.log("bilibili failed response : \n" + data)
|
||||
if (data.match(/duplicate/)) {
|
||||
$nobyda.notify("哔哩哔哩漫画 - 今日已签过 ⚠️", "", "")
|
||||
} else if (data.match(/uid must/)) {
|
||||
$nobyda.notify("哔哩哔哩漫画 - Cookie无效 ‼️‼️", "", "")
|
||||
} else {
|
||||
$nobyda.notify("哔哩哔哩漫画 - 签到失败 ‼️", "", data)
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$nobyda.notify("哔哩哔哩漫画 - 签到接口请求失败", "", error)
|
||||
}
|
||||
$nobyda.end()
|
||||
})
|
||||
}
|
||||
|
||||
function GetCookie() {
|
||||
var CookieName = "B站漫画";
|
||||
var CookieKey = "CookieBM";
|
||||
var regex = /SESSDATA=.+?;/;
|
||||
if ($request.headers) {
|
||||
var header = $request.headers['Cookie'] ? $request.headers['Cookie'] : "";
|
||||
if (header.indexOf("SESSDATA=") != -1) {
|
||||
var CookieValue = regex.exec(header)[0];
|
||||
if ($nobyda.read(CookieKey)) {
|
||||
if ($nobyda.read(CookieKey) != CookieValue) {
|
||||
var cookie = $nobyda.write(CookieValue, CookieKey);
|
||||
if (!cookie) {
|
||||
$nobyda.notify("更新" + CookieName + "Cookie失败‼️", "", "");
|
||||
} else {
|
||||
$nobyda.notify("更新" + CookieName + "Cookie成功 🎉", "", "");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
var cookie = $nobyda.write(CookieValue, CookieKey);
|
||||
if (!cookie) {
|
||||
$nobyda.notify("首次写入" + CookieName + "Cookie失败‼️", "", "");
|
||||
} else {
|
||||
$nobyda.notify("首次写入" + CookieName + "Cookie成功 🎉", "", "");
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$nobyda.notify("写入" + CookieName + "Cookie失败‼️", "", "Cookie关键值缺失");
|
||||
}
|
||||
} else {
|
||||
$nobyda.notify("写入" + CookieName + "Cookie失败‼️", "", "配置错误, 无法读取请求头,");
|
||||
}
|
||||
$nobyda.end()
|
||||
}
|
||||
|
||||
function nobyda() {
|
||||
const isRequest = typeof $request != "undefined"
|
||||
const isSurge = typeof $httpClient != "undefined"
|
||||
const isQuanX = typeof $task != "undefined"
|
||||
const notify = (title, subtitle, message) => {
|
||||
if (isQuanX) $notify(title, subtitle, message)
|
||||
if (isSurge) $notification.post(title, subtitle, message)
|
||||
}
|
||||
const write = (value, key) => {
|
||||
if (isQuanX) return $prefs.setValueForKey(value, key)
|
||||
if (isSurge) return $persistentStore.write(value, key)
|
||||
}
|
||||
const read = (key) => {
|
||||
if (isQuanX) return $prefs.valueForKey(key)
|
||||
if (isSurge) return $persistentStore.read(key)
|
||||
}
|
||||
const post = (options, callback) => {
|
||||
if (isQuanX) {
|
||||
if (typeof options == "string") options = {url: options}
|
||||
options["method"] = "POST"
|
||||
$task.fetch(options).then(response => {
|
||||
response["status"] = response.statusCode
|
||||
callback(null, response, response.body)
|
||||
}, reason => callback(reason.error, null, null))
|
||||
}
|
||||
if (isSurge) $httpClient.post(options, callback)
|
||||
}
|
||||
const end = () => {
|
||||
if (isQuanX) return $done({})
|
||||
if (isSurge) isRequest ? $done({}) : $done()
|
||||
}
|
||||
return {isRequest, isQuanX, isSurge, notify, write, read, post, end}
|
||||
};
|
Loading…
Reference in New Issue