Profile
Back to NewsBack
GitHub Trending 2 min
Reader Mode
Re0XIAOPA/AutoScrapeFreeNodes: AutoScrapeFreeNodes - 自动抓取免费节点

Re0XIAOPA/AutoScrapeFreeNodes: AutoScrapeFreeNodes - 自动抓取免费节点

7 hours ago


AutoScrapeFreeNodes

高效 · 自动化 · 跨协议的免费节点聚合方案

GitHub stars GitHub forks GitHub issues GitHub license

在线预览 · 部署指南 · 配置文档



核心特性

多源聚合抓取
从多个高质量公共渠道自动提取免费订阅信息。
自动化运维
支持定时更新机制,确保持续维护节点数据的时效性。
智能去重过滤
内置指纹识别逻辑,自动剔除重复的链接,保持订阅纯净。
全协议兼容
全面支持 Clash, V2ray, SS, SSR, Trojan, Sing-Box 等。

要求

  • Node.js: 18.0.0 或更高版本

快速开始

本地部署

静态模式 (无依赖) 直接通过浏览器打开 public/index.html 即可查看静态快照数据。

2完整模式 (支持实时抓取)

# 克隆仓库
git clone https://github.com/Re0XIAOPA/AutoScrapeFreeNodes.git

安装必要依赖

npm install

启动服务端应用

npm start

配置指南

项目核心配置文件位于根目录 config.json。

抓取站点 (sites)

| 字段 | 类型 | 说明 | |------|------|------| | url | String | 需要爬取的网页 URL | | enabled | Boolean | 是否启用该抓取任务 | | description | String | 站点用途备注 |

添加自定义订阅

通过修改根目录的 config.json 文件,可以轻松添加需要抓取的网站和您自己的自定义订阅:

抓取的配置格式:

"sites": [
    {
      "url": "https://example.com/clash",
      "enabled": true,
      "description": "免费节点订阅站点1"
    },
    {
      "url": "https://example.com/v2ray",
      "enabled": true,
      "description": "免费节点订阅站点2"
    }
]

自定义配置文件格式:

"subscriptions": [
  {
    "type": "Clash",
    "name": "我的Clash订阅",
    "url": "https://example.com/clash",
    "description": "自定义Clash订阅"
  },
  {
    "type": "V2ray",
    "name": "我的V2ray订阅",
    "url": "https://example.com/v2ray",
    "description": "自定义V2ray订阅"
  }
]

每个订阅项需要包含以下字段:

  • type: 订阅类型,可以是以下值之一: Clash, V2ray, SS, SSR, Trojan, Sing-Box, Shadowrocket, Quantumult 或 通用
  • name: 订阅名称
  • url: 订阅链接
  • description: 订阅描述(可选)

抓取的网站

本工具会自动抓取以下网站的免费节点:

https://clashnode.github.io/free-nodes/ https://clash-meta.github.io/free-nodes/ https://www.airportnode.com/category-1.html

Docker 部署

Docker 模式运行的是完整应用:Express 同时托管前端页面(public/)、提供实时抓取 API(/api/*),并按 config.json 的 updateInterval 定时刷新数据。抓取结果持久化在挂载的 ./data 卷中。

方式一:Docker Compose(推荐)

docker compose up -d
  • 访问 http://localhost:3000
  • 数据目录 ./data 已挂载为卷,重启 / 更新不丢数据
  • 容器配置了健康检查(/)与 init 信号处理,异常会自动按 restart: unless-stopped 重启

方式二:Docker 命令

docker build -t autoscrape-free-nodes .
docker run -d -p 3000:3000 -v $(pwd)/data:/app/data --name autoscrape autoscrape-free-nodes

更新镜像

代码变动后需重新构建(镜像不会自动拉取最新代码):

git pull
docker compose build
docker compose up -d

用域名访问(如 asfn.awafuns.cn)

镜像只暴露容器端口 3000,前面用 Nginx / Caddy 反代即可。Nginx 示例:

server {
    listen 80;
    server_name asfn.awafuns.cn;
    location / {
        proxy_pass http://127.0.0.1:3000;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}
说明:Docker 部署 = 动态全量应用(含实时 API 与定时抓取);gh-pages 分支 = 静态快照,方便分发到 GitHub Pages / Netlify / Vercel 等任意静态平台。两者可并存,按需选用。

## 免责声明
  • 本项目仅作为技术交流与学术研究使用。
  • 所有节点数据均来源于第三方互联网公开页面,工具本身不存储、不分发任何服务器资源。
  • 使用者应自行判断节点安全性,并严格遵守当地相关法律法规。
  • 作者不对因使用本工具导致的任何形式的损失或法律纠纷负责。

Star History

Star History Chart

Chat with me