const schedule = require(
'node-schedule'
);
const puppeteer = require(
'puppeteer'
);
let
browserInstance;
(async () => {
browserInstance = await puppeteer.launch({
headless:
false
,
defaultViewport: {
width: 0,
height: 0
}
});
})()
const resetOnlineTimeJob = schedule.scheduleJob(
'0 9 * * *'
, async () => {
const b = Math.floor(Math.random() * 60000)
console.log(
'在'
+ b +
'毫秒后开始签到'
);
setTimeout(aa, b)
});
async
function
aa() {
const page = await browserInstance.newPage();
await page.setDefaultNavigationTimeout(60000);
try
{
await page.goto(
'https://juejin.cn/user/center/signin?from=main_page'
);
await delay(5000);
if
(await page.$(
'.signin.btn'
)) {
await page.click(
'.signin.btn'
);
console.log(
'找到.signin.btn'
);
}
else
if
(await page.$(
'.signedin.btn'
)) {
await page.click(
'.signedin.btn'
);
console.log(
'找到.signedin.btn'
);
}
await delay(5000);
await page.waitForSelector(
'.btn-area .btn'
, { visible:
true
});
await page.waitForFunction(
selector => {
const element = document.querySelector(selector);
return
element && !element.disabled && element.offsetWidth > 0 && element.offsetHeight > 0;
},
{ timeout: 5000 },
'.btn-area .btn'
);
await page.click(
'.btn-area .btn'
);
console.log(
'签到成功'
);
await delay(3000);
await page.waitForSelector(
'#turntable-item-0'
);
if
(await page.$(
'#turntable-item-0'
)) {
await page.click(
'#turntable-item-0'
);
}
console.log(
'抽奖成功'
);
await delay(3000);
}
catch
(error) {
console.log(error);
}
}
function
delay(time) {
return
new
Promise(
function
(resolve) {
setTimeout(resolve, time)
});
}
console.log(
'掘金自动签到已启动'
);