893 lines
30 KiB
JavaScript
893 lines
30 KiB
JavaScript
|
// 赞赏:趣头条邀请码`A1040276307`,农妇山泉 -> 有点咸
|
||
|
const cookieName = '趣头条'
|
||
|
const signKey = 'senku_signKey_qtt'
|
||
|
const signXTKKey = 'senku_signXTK_qtt'
|
||
|
const readKey = 'senku_readKey_qtt'
|
||
|
const navCoinKey = 'senku_navCoinKey_qtt'
|
||
|
const senku = init()
|
||
|
const signVal = senku.getdata(signKey)
|
||
|
const signXTKVal = senku.getdata(signXTKKey)
|
||
|
const readVal = senku.getdata(readKey)
|
||
|
const navCoinVal = senku.getdata(navCoinKey)
|
||
|
const vsign = 'version=30967000&xhi=200' + signVal
|
||
|
const signurlVal = 'https://api.1sapp.com/sign/sign?' + vsign
|
||
|
const adUrl = 'https://api.1sapp.com/sign/adDone?' + vsign
|
||
|
const getinfoUrlVal = 'https://api.1sapp.com/sign/info?' + vsign
|
||
|
const hourUrlVal = 'https://api.1sapp.com/mission/intPointReward?' + vsign
|
||
|
const coinUrlVal = 'https://api.1sapp.com/app/ioscoin/getInfo?' + vsign
|
||
|
const readReawardVal = 'https://api.1sapp.com/app/ioscoin/readReward?type=content_config&' + vsign
|
||
|
const sleepUrlVal = 'https://mvp-sleeper.qutoutiao.net/v1/sleep/update?status=1&' + vsign
|
||
|
const sleepRewardVal = 'https://mvp-sleeper.qutoutiao.net/v1/reward?which=2&' + vsign
|
||
|
const sleepBagVal = 'https://mvp-sleeper.qutoutiao.net/v1/reward?which=3&' + vsign
|
||
|
const sleepStatusVal = 'https://mvp-sleeper.qutoutiao.net/v1/sleep/status?' + vsign
|
||
|
const luckyUrlVal = 'https://qtt-turntable.qutoutiao.net/press_trigger?' + vsign
|
||
|
const luckyRewardVal = 'https://qtt-turntable.qutoutiao.net/extra_reward?' + vsign
|
||
|
const raindropVal = 'https://work-for-coin.1sapp.com/raindrop/v1/click?sub_id=2&type=2&scene_id=2&' + vsign
|
||
|
const loginVal = 'https://api.1sapp.com/app/user/info/member/v1/get?' + vsign
|
||
|
const sleepNightVal = 'https://cj-activity.1sapp.com/v1/zfb/sleep/coin?from=pm&' + vsign
|
||
|
const sleepMorningVal = 'https://cj-activity.1sapp.com/v1/zfb/sleep/coin?from=am&' + vsign
|
||
|
const sleepinitVal = 'https://api.1sapp.com/dlc/ali/zfbSleepInit?' + vsign
|
||
|
const signinfo = {
|
||
|
playList: [],
|
||
|
luckyList: [],
|
||
|
rainList: []
|
||
|
}
|
||
|
|
||
|
;
|
||
|
(sign = async () => {
|
||
|
senku.log(`🔔 ${cookieName}`)
|
||
|
await login()
|
||
|
if (navCoinVal != undefined && navCoinVal.match(/\/x\/feed\/getReward\?qdata=[a-zA-Z0-9_-]+/)) {
|
||
|
await navCoin()
|
||
|
}
|
||
|
if (readVal != undefined && readVal.match(/\/content\/readV2\?qdata=[a-zA-Z0-9_-]+/)) {
|
||
|
await read()
|
||
|
await getcoininfo()
|
||
|
await getreadReward()
|
||
|
}
|
||
|
if (new Date().getHours() == 20 || new Date().getHours() == 12) {
|
||
|
await sleepStatus()
|
||
|
await sleepReward()
|
||
|
await sleep()
|
||
|
if (signinfo.sleepStatus.data.fortune_bag_can_reward) {
|
||
|
await sleepBag()
|
||
|
}
|
||
|
}
|
||
|
if (new Date().getHours() >= 20) {
|
||
|
await sleepinit()
|
||
|
await sleepNight()
|
||
|
}
|
||
|
if (new Date().getHours() >= 5 && new Date().getHours() <= 9) {
|
||
|
await sleepinit()
|
||
|
await sleepMorning()
|
||
|
}
|
||
|
if (new Date().getHours() == 8 || new Date().getHours() == 14) {
|
||
|
await sleepReward()
|
||
|
}
|
||
|
await rain(0)
|
||
|
await rain(1)
|
||
|
await rain(2)
|
||
|
if (new Date().getDay() == 5) {
|
||
|
await luckyReward(3)
|
||
|
await luckyReward(8)
|
||
|
await luckyReward(15)
|
||
|
await luckyReward(20)
|
||
|
await luckyReward(30)
|
||
|
}
|
||
|
await signDay()
|
||
|
await signHour()
|
||
|
await signLucky()
|
||
|
await playone()
|
||
|
await playtwo()
|
||
|
await playthree()
|
||
|
await playfour()
|
||
|
await getinfo()
|
||
|
showmsg()
|
||
|
senku.done()
|
||
|
})().catch((e) => senku.log(`❌ ${cookieName} 签到失败: ${e}`), senku.done())
|
||
|
|
||
|
// 每日登录
|
||
|
function login() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: loginVal,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} login- response: ${JSON.stringify(response)}`)
|
||
|
signinfo.login = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `登录结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} signDay - 登录失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} signDay - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
//
|
||
|
function sleepinit() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: sleepinitVal,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `睡觉初始化结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepinit - 睡觉初始化失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepinit - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
// 睡觉
|
||
|
function sleep() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: sleepUrlVal,
|
||
|
headers: {
|
||
|
'Host': 'mvp-sleeper.qutoutiao.net',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} sleep - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.sleep = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `睡觉结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleep - 睡觉失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleep - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
// 早睡
|
||
|
function sleepNight() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: sleepNightVal,
|
||
|
headers: {
|
||
|
'Host': 'cj-activity.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} sleepNight - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.sleepNight = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `早睡结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepNight - 早睡失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepNight - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
// 早起
|
||
|
function sleepMorning() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: sleepMorningVal,
|
||
|
headers: {
|
||
|
'Host': 'cj-activity.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} sleepMorning - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.sleepMorning = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `早起结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepMorning - 早起失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepMorning - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
// 睡觉金币
|
||
|
function sleepReward() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: sleepRewardVal,
|
||
|
headers: {
|
||
|
'Host': 'mvp-sleeper.qutoutiao.net',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} sleepReward - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.sleepReward = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `睡觉结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepReward - 睡觉失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepReward - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 睡觉福袋
|
||
|
function sleepBag() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: sleepBagVal,
|
||
|
headers: {
|
||
|
'Host': 'mvp-sleeper.qutoutiao.net',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} sleepBag - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.sleepBag = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `睡觉福袋: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepBag - 睡觉福袋: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepBag - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 睡觉信息
|
||
|
function sleepStatus() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: sleepStatusVal,
|
||
|
headers: {
|
||
|
'Host': 'mvp-sleeper.qutoutiao.net',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} sleepStatus - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.sleepStatus = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `睡觉信息: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepStatus - 睡觉信息: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} sleepStatus - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 雨滴金币
|
||
|
function rain(seri_num) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const raindropUrl = raindropVal + '&serial_number=' + seri_num
|
||
|
const url = {
|
||
|
url: raindropUrl,
|
||
|
headers: {
|
||
|
'Host': 'work-for-coin.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} rain - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.rainList.push(JSON.parse(data))
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `雨滴结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} rain - 雨滴失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} rain - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 每日签到
|
||
|
function signDay() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: signurlVal,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} signDay - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.signDay = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `签到结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} signDay - 签到失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} signDay - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 首页奖励
|
||
|
function navCoin() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: navCoinVal,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} navCoin - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.navCoin = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `首页奖励: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} navCoin - 首页奖励失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} navCoin - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
// 阅读部分
|
||
|
function read() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: readVal,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} read - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.read = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `阅读结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} read - 阅读失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} read - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 获取阅读奖励
|
||
|
function getreadReward() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
try {
|
||
|
if (signinfo.coininfo.data) {
|
||
|
const read_num = signinfo.coininfo.data.read_num
|
||
|
if (read_num < 5 && read_num >= 1) {
|
||
|
resolve(readReward(1))
|
||
|
} else if (read_num < 15 && read_num >= 5) {
|
||
|
resolve(readReward(5))
|
||
|
} else if (read_num < 18 && read_num >= 15) {
|
||
|
resolve(readReward(15))
|
||
|
} else if (read_num == 18) {
|
||
|
resolve(readReward(18))
|
||
|
} else resolve()
|
||
|
}
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `获取阅读奖励: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} getreadReward - 获取阅读奖励失败: ${e}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 阅读奖励请求
|
||
|
function readReward(reward_id) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const readRewardUrl = readReawardVal + '&reward_id=' + reward_id
|
||
|
const url = {
|
||
|
url: readRewardUrl,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} readReward - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.readReward = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `阅读奖励请求: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} readReward - 阅读奖励请求失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} readReward - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 获取阅读信息
|
||
|
function getcoininfo() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: coinUrlVal,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} getcoininfo - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.coininfo = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `签到结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} getcoininfo - 签到失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} getcoininfo - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// FIXME: 时段请求偶尔丢失或伪请求
|
||
|
function signHour() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: hourUrlVal,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} signHour - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.signHour = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `时段签到结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} signHour - 时段签到失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} signHour - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function signLucky() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: luckyUrlVal,
|
||
|
headers: {
|
||
|
'Host': 'qtt-turntable.qutoutiao.net',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} signLucky - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.signLucky = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `幸运转盘: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} signLucky - 幸运转盘失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} signLucky - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 幸运转盘额外奖励
|
||
|
function luckyReward(times) {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const luckyRewardUrl = luckyRewardVal + '×=' + times
|
||
|
const url = {
|
||
|
url: luckyRewardUrl,
|
||
|
headers: {
|
||
|
'Host': 'qtt-turntable.qutoutiao.net',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla/5.0 (iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit/605.1.15 (KHTML, like Gecko) Mobile/15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} luckyReward - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.luckyList.push(JSON.parse(data))
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `转盘额外奖励请求: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} luckyReward - 转盘额外奖励请求失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} luckyReward - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
// 获取签到信息
|
||
|
function getinfo() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const url = {
|
||
|
url: getinfoUrlVal,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} getinfo - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.info = JSON.parse(data)
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `获取信息: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} getinfo - 获取信息失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} getinfo - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
|
||
|
// 视频广告部分
|
||
|
function playone() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const urlParameter = 'https://api.1sapp.com/sign/adDone?version=30967000&xhi=200&pos=one' + signVal
|
||
|
const url = {
|
||
|
url: urlParameter,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla / 5.0(iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit / 605.1.15(KHTML, like Gecko) Mobile / 15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} playAd - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.playList.push(JSON.parse(data))
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `签到结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} playAd - 签到失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} playAd - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function playtwo() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const urlParameter = 'https://api.1sapp.com/sign/adDone?version=30967000&xhi=200&pos=two' + signVal
|
||
|
const url = {
|
||
|
url: urlParameter,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla / 5.0(iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit / 605.1.15(KHTML, like Gecko) Mobile / 15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} playAd - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.playList.push(JSON.parse(data))
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `签到结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} playAd - 签到失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} playAd - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function playthree() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const urlParameter = 'https://api.1sapp.com/sign/adDone?version=30967000&xhi=200&pos=three' + signVal
|
||
|
const url = {
|
||
|
url: urlParameter,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla / 5.0(iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit / 605.1.15(KHTML, like Gecko) Mobile / 15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} playAd - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.playList.push(JSON.parse(data))
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `签到结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} playAd - 签到失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} playAd - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
function playfour() {
|
||
|
return new Promise((resolve, reject) => {
|
||
|
const urlParameter = 'https://api.1sapp.com/sign/adDone?version=30967000&xhi=200&pos=four' + signVal
|
||
|
const url = {
|
||
|
url: urlParameter,
|
||
|
headers: {
|
||
|
'Host': 'api.1sapp.com',
|
||
|
'X-Tk': signXTKVal
|
||
|
}
|
||
|
}
|
||
|
url.headers['User-Agent'] = 'Mozilla / 5.0(iPhone; CPU iPhone OS 12_4_1 like Mac OS X) AppleWebKit / 605.1.15(KHTML, like Gecko) Mobile / 15E148'
|
||
|
senku.get(url, (error, response, data) => {
|
||
|
try {
|
||
|
senku.log(`❕ ${cookieName} playAd - response: ${JSON.stringify(response)}`)
|
||
|
signinfo.playList.push(JSON.parse(data))
|
||
|
resolve()
|
||
|
} catch (e) {
|
||
|
senku.msg(cookieName, `签到结果: 失败`, `说明: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} playAd - 签到失败: ${e}`)
|
||
|
senku.log(`❌ ${cookieName} playAd - response: ${JSON.stringify(response)}`)
|
||
|
resolve()
|
||
|
}
|
||
|
})
|
||
|
})
|
||
|
}
|
||
|
|
||
|
|
||
|
// 将时间戳格式化
|
||
|
function tTime(timestamp) {
|
||
|
const date = new Date(timestamp * 1000)
|
||
|
const M = (date.getMonth() + 1 < 10 ? '0' + (date.getMonth() + 1) : date.getMonth() + 1) + '-'
|
||
|
const D = (date.getDate() + 1 < 10 ? '0' + date.getDate() : date.getDate()) + ' '
|
||
|
const h = date.getHours() + ':'
|
||
|
const m = (date.getMinutes() + 1 < 10 ? '0' + (date.getMinutes() + 1) : date.getMinutes() + 1) + ''
|
||
|
return M + D + h + m
|
||
|
}
|
||
|
|
||
|
// 通知信息部分
|
||
|
function showmsg() {
|
||
|
let subTitle = ``
|
||
|
let detail = ``
|
||
|
const name = signinfo.login.data.nickname ? signinfo.login.data.nickname : `未设置昵称或Cookie失效`
|
||
|
// signDayMsg
|
||
|
if (signinfo.info && signinfo.info.data.signIn.today == 1) {
|
||
|
if (signinfo.signDay.code == 0) {
|
||
|
subTitle += subTitle == `` ? `` : ` `
|
||
|
const continuation = signinfo.info.data.signIn.continuation
|
||
|
const amount = signinfo.info.data.signIn.amount
|
||
|
const currentCoin = amount[continuation]
|
||
|
const nextCoin = amount[continuation + 1]
|
||
|
const coins = signinfo.info.data.show_balance_info.coins
|
||
|
subTitle += `每日:成功`
|
||
|
detail += `【每日签到】获得${currentCoin}💰,明日可得${nextCoin}💰\n`
|
||
|
} else subTitle += ``
|
||
|
} else {
|
||
|
subTitle += `每日:失败`
|
||
|
senku.log(`❌ ${cookieName} showmsg - 每日签到: ${JSON.stringify(signinfo.signDay)}`)
|
||
|
}
|
||
|
|
||
|
// signHourMsg
|
||
|
subTitle += subTitle == `` ? `` : ` `
|
||
|
if (signinfo.signHour && signinfo.signHour.code == 0) {
|
||
|
subTitle += '时段:成功'
|
||
|
const amount = signinfo.signHour.data.amount
|
||
|
const next_time = tTime(signinfo.signHour.data.next_time)
|
||
|
detail += `【时段签到】获得${amount}💰,下次签到:${next_time}\n`
|
||
|
} else subTitle += `时段:时间未到`
|
||
|
|
||
|
// readMsg
|
||
|
if (signinfo.read && signinfo.read.data.status_code == 0) {
|
||
|
if (signinfo.coininfo.data) {
|
||
|
const desc = signinfo.coininfo.data.content_config.desc
|
||
|
if (signinfo.readReward != undefined && signinfo.readReward.code == 0) {
|
||
|
detail += `【阅读详情】${desc},奖励:成功\n`
|
||
|
} else if (signinfo.readReward != undefined && signinfo.readReward.code == -113) {
|
||
|
signinfo.coininfo.data.read_num == 18 ? detail += `` : detail += `【阅读详情】${desc},已获取阶段奖励\n`
|
||
|
|
||
|
} else detail += `【阅读详情】${desc},手动获取金币\n`
|
||
|
}
|
||
|
} else detail += `【阅读详情】失败\n`
|
||
|
|
||
|
// sleepMsg
|
||
|
if (signinfo.sleep && signinfo.sleep.data.success) {
|
||
|
detail += `【睡觉结果】已开始睡觉\n`
|
||
|
} else if (signinfo.sleepReward && signinfo.sleepReward.data) {
|
||
|
if (signinfo.sleepReward.data.success) {
|
||
|
const coins = signinfo.sleepReward.data.coins
|
||
|
coins == 0 ? detail += `` : detail += `【睡觉金币】获得${coins}💰\n`
|
||
|
} else {
|
||
|
detail += `【睡觉金币】金币获取失败\n`
|
||
|
}
|
||
|
} else if (signinfo.sleep == undefined) {
|
||
|
detail += ``
|
||
|
// sleepBagMsg
|
||
|
} else if (signinfo.sleepBag && signinfo.sleepBag.code == 0) {
|
||
|
const coins = signinfo.sleepBag.data.coins
|
||
|
coins == 0 ? detail += `` : detail += `【睡觉福袋】获得${signinfo.sleepBag.data.coins}💰\n`
|
||
|
} else {
|
||
|
detail += `【睡觉结果】失败\n`
|
||
|
}
|
||
|
// 早睡
|
||
|
if (signinfo.sleepNight && signinfo.sleepNight.code == 0) {
|
||
|
if (signinfo.sleepNight.data && signinfo.sleepNight.data.coin) {
|
||
|
const coin = signinfo.sleepNight.data.coin
|
||
|
coin == 0 ? detail += `` : detail += `【早睡结果】获得${coin}💰\n`
|
||
|
}
|
||
|
}
|
||
|
// 早起
|
||
|
if (signinfo.sleepMorning && signinfo.sleepMorning.code == 0) {
|
||
|
if (signinfo.sleepMorning.data && signinfo.sleepMorning.data.coin) {
|
||
|
const coin = signinfo.sleepMorning.data.coin
|
||
|
coin == 0 ? detail += `` : detail += `【早起结果】获得${coin}💰\n`
|
||
|
}
|
||
|
}
|
||
|
|
||
|
// rainDropMsg
|
||
|
if (signinfo.rainList) {
|
||
|
for (const rains of signinfo.rainList) {
|
||
|
87
|
||
|
rains.code == 0 ? detail += `【金币雨滴】成功\n` : detail += ``
|
||
|
}
|
||
|
} else {
|
||
|
detail += `【金币雨滴】失败\n`
|
||
|
}
|
||
|
|
||
|
// navCoinMsg
|
||
|
if (signinfo.navCoin && signinfo.navCoin.code == 0) {
|
||
|
if (signinfo.coininfo.data) {
|
||
|
const cur_amount = signinfo.navCoin.data.cur_amount
|
||
|
const total_times = signinfo.navCoin.data.total_times
|
||
|
const done_times = signinfo.navCoin.data.done_times
|
||
|
done_times == 15 ? detail += `` : detail += `【首页奖励】${cur_amount} 💰, 完成${done_times} /${total_times}\n`
|
||
|
}
|
||
|
} else if (signinfo.navCoin && signinfo.navCoin.code == -308) {
|
||
|
detail += `【首页奖励】时间未到\n`
|
||
|
} else if (signinfo.navCoin && signinfo.navCoin.code == -2) {
|
||
|
detail += `【首页奖励】Cookie失效\n`
|
||
|
} else detail += `【首页奖励】失败或Cookie不存在\n`
|
||
|
|
||
|
// signLuckyMsg
|
||
|
subTitle += subTitle == '' ? '' : ' '
|
||
|
if (signinfo.signLucky && signinfo.signLucky.code == 1) {
|
||
|
subTitle += `幸运转盘:成功`
|
||
|
const amount_coin = signinfo.signLucky.amount_coin
|
||
|
const count = signinfo.signLucky.count
|
||
|
const count_limit = signinfo.signLucky.count_limit
|
||
|
detail += `【幸运转盘】获得${amount_coin},抽奖情况:${count}/${count_limit}次\n`
|
||
|
} else subTitle += ``
|
||
|
|
||
|
// luckyExtraMsg
|
||
|
if (signinfo.luckyList) {
|
||
|
const times = [3, 8, 15, 20, 30]
|
||
|
let i = 0
|
||
|
for (const extra of signinfo.luckyList) {
|
||
|
if (extra.code == 0) {
|
||
|
detail += `【转盘额外】次数:${times[i]} 获得${extra.reward_coin}💰\n`
|
||
|
} else if (extra.code == -2) {
|
||
|
detail += `【转盘额外】次数:${times[i]} 重复领取\n`
|
||
|
} else if (extra.code == -1) {
|
||
|
detail += `【转盘额外】次数:${times[i]} 当前次数未达到\n`
|
||
|
} else detail += `【转盘额外】未知错误\n`
|
||
|
i += 1
|
||
|
}
|
||
|
} else detail += `【转盘额外】失败`
|
||
|
|
||
|
// playAdsMsg
|
||
|
subTitle += subTitle == '' ? '' : ' '
|
||
|
if (signinfo.playList) {
|
||
|
if (signinfo.playList[0].code == 0) {
|
||
|
const icon = signinfo.info.data.signIn.ext_ad.icon
|
||
|
const coins = signinfo.info.data.show_balance_info.coins
|
||
|
const continuation = signinfo.info.data.signIn.continuation
|
||
|
for (const poss of icon) {
|
||
|
if (poss.next_time > 0) {
|
||
|
const time = tTime(poss.next_time)
|
||
|
detail += `【视频广告】下次🕥${time} 可获得${poss.amount}💰\n`
|
||
|
}
|
||
|
}
|
||
|
detail += `【账户详情】共计:${coins}💰,连续签到${continuation}天`
|
||
|
} else if (signinfo.playList[0].code == -126) subTitle += `广告:权限错误`
|
||
|
} else subTitle += `广告:失败`
|
||
|
|
||
|
senku.msg(cookieName + ` 用户:${name}`, subTitle, detail)
|
||
|
senku.done()
|
||
|
}
|
||
|
|
||
|
|
||
|
function init() {
|
||
|
isSurge = () => {
|
||
|
return undefined === this.$httpClient ? false : true
|
||
|
}
|
||
|
isQuanX = () => {
|
||
|
return undefined === this.$task ? false : true
|
||
|
}
|
||
|
getdata = (key) => {
|
||
|
if (isSurge()) return $persistentStore.read(key)
|
||
|
if (isQuanX()) return $prefs.valueForKey(key)
|
||
|
}
|
||
|
setdata = (key, val) => {
|
||
|
if (isSurge()) return $persistentStore.write(key, val)
|
||
|
if (isQuanX()) return $prefs.setValueForKey(key, val)
|
||
|
}
|
||
|
msg = (title, subtitle, body) => {
|
||
|
if (isSurge()) $notification.post(title, subtitle, body)
|
||
|
if (isQuanX()) $notify(title, subtitle, body)
|
||
|
}
|
||
|
log = (message) => console.log(message)
|
||
|
get = (url, cb) => {
|
||
|
if (isSurge()) {
|
||
|
$httpClient.get(url, cb)
|
||
|
}
|
||
|
if (isQuanX()) {
|
||
|
url.method = 'GET'
|
||
|
$task.fetch(url).then((resp) => cb(null, resp, resp.body))
|
||
|
}
|
||
|
}
|
||
|
post = (url, cb) => {
|
||
|
if (isSurge()) {
|
||
|
$httpClient.post(url, cb)
|
||
|
}
|
||
|
if (isQuanX()) {
|
||
|
url.method = 'POST'
|
||
|
$task.fetch(url).then((resp) => cb(null, resp, resp.body))
|
||
|
}
|
||
|
}
|
||
|
done = (value = {}) => {
|
||
|
$done(value)
|
||
|
}
|
||
|
return {
|
||
|
isSurge,
|
||
|
isQuanX,
|
||
|
msg,
|
||
|
log,
|
||
|
getdata,
|
||
|
setdata,
|
||
|
get,
|
||
|
post,
|
||
|
done
|
||
|
}
|
||
|
}
|