CentOS 7服务器定时访问gofile.io页面留存文件的方案咨询
解决GoFile.io文件长期存储的命令行JS触发方案
Got it,你碰到的这个问题我之前也帮别人处理过——GoFile的文件保留机制要求的“有效访问”必须触发页面里的JavaScript逻辑,而wget、curl这类工具只是单纯拉取静态HTML内容,根本不会执行页面中的JS,自然不会被系统计数。要搞定这个,你得用能模拟真实浏览器行为的工具,下面给你两个基于CentOS 7的可行方案:
方案一:使用Headless Chrome/Chromium(最直接)
CentOS 7可以安装Chromium或Chrome的Headless版本,它能完整模拟浏览器加载页面并执行JS,完美触发GoFile的访问计数。
步骤1:安装Headless Chrome/Chromium
- 先添加Google的YUM源用于安装Chrome:
cat > /etc/yum.repos.d/google-chrome.repo <<EOF [google-chrome] name=google-chrome baseurl=http://dl.google.com/linux/chrome/rpm/stable/x86_64 enabled=1 gpgcheck=1 gpgkey=https://dl.google.com/linux/linux_signing_key.pub EOF
- 安装Chrome(如果偏好开源的Chromium,可替换为
yum install -y chromium-browser):
yum install -y google-chrome-stable
- 安装必要依赖避免Headless模式报错:
yum install -y libX11 libXtst libXScrnSaver libXdamage libXcomposite
步骤2:编写访问脚本
创建refresh_gofile.sh脚本,替换成你的文件链接列表:
#!/bin/bash # 你的GoFile文件页面链接列表 FILE_LINKS=( "https://gofile.io/?c=znRpuJ" # 添加更多链接... ) # Chrome的路径(如果是Chromium,换成/usr/bin/chromium-browser) CHROME_PATH="/usr/bin/google-chrome-stable" for link in "${FILE_LINKS[@]}" do echo "Refreshing: $link" # 用Headless模式访问页面,等待加载完成后退出 "$CHROME_PATH" --headless=new --no-sandbox --disable-gpu --dump-dom "$link" > /dev/null 2>&1 # 可选:每次访问后暂停2秒,避免触发反爬机制 sleep 2 done
步骤3:配置Cron定时执行
- 给脚本添加执行权限:
chmod +x refresh_gofile.sh
- 编辑crontab配置定时任务:
crontab -e
- 添加定时规则(比如每天凌晨2点执行一次,确保每月至少触发一次访问):
0 2 * * * /path/to/refresh_gofile.sh >> /var/log/gofile_refresh.log 2>&1
注意替换
/path/to/为脚本实际路径,日志文件用于后续排查问题。
方案二:使用Puppeteer(更灵活可控)
如果需要更精细的控制(比如等待特定JS执行完成、确认页面加载状态),可以用Puppeteer——这是一个Node.js库,专门用于控制Headless Chrome。
步骤1:安装Node.js和Puppeteer
- 安装EPEL源和Node.js:
yum install -y epel-release yum install -y nodejs npm
- 升级npm到最新版本:
npm install -g npm@latest
- 初始化项目并安装Puppeteer:
mkdir gofile-refresh && cd gofile-refresh npm init -y npm install puppeteer
步骤2:编写Node.js脚本
创建refresh.js:
const puppeteer = require('puppeteer'); // 你的文件链接列表 const fileLinks = [ 'https://gofile.io/?c=znRpuJ', // 添加更多链接... ]; (async () => { // 启动Headless浏览器 const browser = await puppeteer.launch({ headless: 'new', args: ['--no-sandbox', '--disable-gpu'] }); for (const link of fileLinks) { console.log(`Refreshing: ${link}`); const page = await browser.newPage(); // 访问页面,等待网络空闲确保JS执行完成 await page.goto(link, { waitUntil: 'networkidle2' }); // 可选:等待页面核心元素加载,确认页面正常显示 await page.waitForSelector('#content'); await page.close(); await new Promise(resolve => setTimeout(resolve, 2000)); // 暂停2秒 } await browser.close(); })();
步骤3:配置Cron执行
- 编写bash脚本调用Node.js:
#!/bin/bash cd /path/to/gofile-refresh node refresh.js >> /var/log/gofile_refresh.log 2>&1
- 给脚本添加执行权限后,将其加入crontab即可,规则参考方案一。
注意事项
- 反爬限制:不要过于频繁访问,建议每天1次或每周2-3次,避免被GoFile限制IP。
- 环境变量:Cron的环境变量不全,脚本中最好使用命令的绝对路径(比如Node.js路径可通过
which node查看)。 - 日志排查:务必保留日志输出,方便出现问题时定位原因。
内容的提问来源于stack exchange,提问作者Barry B
相关产品推荐
相关产品推荐

