CoolFace
Apppublic

feaderry/keep-alive

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
index.js91 linesDownload Raw Back to root
1const axios = require('axios');2const moment = require('moment-timezone');3const http = require('http');4const cron = require('node-cron');5const port = process.env.PORT || 7860;           6 7// 添加24小时是不间断访问的url数组8const webpages = [9  'https://artistic-curious-baritone.glitch.me',10  // ... 添加更多url11];12 13// 添加1:00-6:00暂停,其他时间正常访问的url数组14const urls = [15  'https://www.google.com',  // 备注名称16  'https://www.baidu.com',17  'https://feaderry-keep-alive.hf.space',18  // ... 添加更多url19];20 21// 遍历网页数组并发请求访问网页22const visit = async (url) => {23  try {24    const response = await axios.get(url);25    console.log(`${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')} Visited web successfully: ${url} --- Status: ${response.status}\n`);26  } catch (error) {27    console.error(`Failed to visit ${url}: ${error.message}\n`);28  }29};30const visitAll = async () => {31  for (let url of urls) {32    await visit(url);33  }34};35 36// 定判断是否在访问时间段内37const isWithinTime = () => {38  const now = moment().tz('Asia/Hong_Kong');39  const hour = now.hour();40  if (hour >= 1 && hour < 6) {41    return false;42  }43  return true;44};45 46// 创建http服务47const createServer = () => {48  const server = http.createServer((req, res) => {49    if (req.url === '/') {50      res.writeHead(200, {'Content-Type': 'text/plain'});51      res.end('Hello world!');52    } else {53      res.writeHead(404, {'Content-Type': 'text/plain'});54      res.end('404 Not Found');55    }56  });57  server.listen(port, () => {58    console.log(`Server started on port ${port}`);59  });60};61 62// 执行访问逻辑63const main = async () => {64  createServer();65  setInterval(async () => {66    if (isWithinTime()) {67      await visitAll();68    } else {69      console.log(`Stop visiting at ${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')}`);70    }71  }, 2 * 60 * 1000); // 指定时间段访问的间隔2分钟72};73main();74 75//24小时不间断访问部分76async function access(url) {77  try {78    const response = await axios.get(url);79    console.log(`${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')} Web visited successfully: ${url} --- status:${response.status}`);80  } catch (error) {81    console.error(`${moment().tz('Asia/Hong_Kong').format('YYYY-MM-DD HH:mm:ss')} Failed to visit ${url}, Error ${error.message}`);82  }83}84 85async function batchVisit() {86 87  for (let url of webpages) {88    await access(url);89  }90}91cron.schedule('*/2 * * * *', batchVisit); // 24小时访问任务间隔周期,默认2分钟