| const axios = require('axios'); |
| const http = require('http'); |
| const cron = require('node-cron'); |
| const port = process.env.PORT || 7860; |
| const moment = require('moment-timezone'); |
|
|
| |
| const urls = [ |
| 'https://arti.cszy1.cf', |
| 'https://sli-sg.cszy1.cf', |
| 'https://sli-us.cszy1.cf', |
| 'https://min.cszy1.cf', |
| 'https://www.baidu.com', |
| 'https://www.yahoo.com', |
| 'https://www.baidu.com', |
| 'https://www.yahoo.com', |
| |
| ]; |
|
|
| |
| function visitWebsites() { |
| const websites = [ |
| 'https://www.google.com', |
| 'https://www.google.com', |
| 'https://www.google.com', |
| 'https://www.google.com' |
| |
| ]; |
|
|
| |
| websites.forEach(async (url) => { |
| try { |
| const response = await axios.get(url); |
| console.log(`${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')} Visited web successfully: ${url} - Status code: ${response.status}\n`); |
| } catch (error) { |
| console.error(`Error visiting ${url}: ${error.message}\n`); |
| } |
| }); |
| } |
|
|
| |
| function checkAndSetTimer() { |
| const currentMoment = moment().tz('Asia/Hong_Kong'); |
| const formattedTime = currentMoment.format('YYYY-MM-DD HH:mm:ss'); |
| if (currentMoment.hours() >= 1 && currentMoment.hours() < 5) { |
| console.log(`Stop visit from 1:00 to 5:00 --- ${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')}`); |
| clearInterval(visitIntervalId); |
| const nextVisitTime = moment().tz('Asia/Hong_Kong').add(0, 'day').hours(5).minutes(0).seconds(0); |
| const nextVisitInterval = nextVisitTime.diff(currentMoment); |
| setTimeout(() => { |
| startVisits(); |
| }, nextVisitInterval); |
| } else { |
| startVisits(); |
| } |
| } |
|
|
| let visitIntervalId; |
| function startVisits() { |
| clearInterval(visitIntervalId); |
| |
| visitIntervalId = setInterval(() => { |
| visitWebsites(); |
| }, 2 * 60 * 1000); |
| } |
|
|
| function runScript() { |
| const runScriptIntervalId = setInterval(() => { |
| |
| checkAndSetTimer(); |
| }, 2 * 60 * 1000); |
| } |
| checkAndSetTimer(); |
| runScript(); |
|
|
| |
| async function scrapeAndLog(url) { |
| try { |
| const response = await axios.get(url); |
| console.log(`${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')} Web visited Successfully: ${url} - Status code: ${response.status}\n`); |
| } catch (error) { |
| console.error(`${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')}: Web visited Error: ${url}: ${error.message}\n`); |
| } |
| } |
| |
| cron.schedule('*/2 * * * *', () => { |
| console.log('Running webpage access...'); |
| urls.forEach((url) => { |
| scrapeAndLog(url); |
| }); |
| }); |
|
|
| |
| const server = http.createServer((req, res) => { |
| if (req.url === '/') { |
| res.writeHead(200, {'Content-Type': 'text/plain'}); |
| res.end('Hello, World!\n'); |
| } else { |
| res.writeHead(404, {'Content-Type': 'text/plain'}); |
| res.end('Not Found\n'); |
| } |
| }); |
|
|
| server.listen(port, () => { |
| console.log(`Server is running on port:${port}`); |
| }); |
|
|