RSSHub搭建RSS订阅源

RSSHub是一个开源的RSS生成器,能把各种没有RSS的网站变成RSS源。比如微博、B站、知乎、小红书这些,官方不提供RSS,但RSSHub可以帮你扒出来。

核心原理:RSSHub用路由机制,每个网站对应一个路由,通过参数控制抓取内容。部署后访问 `你的域名/路由/参数` 就能拿到RSS。

直接上部署步骤,我用的Docker,最省事。

前置条件

一台服务器,我目前用雨云,2核4G的实例跑RSSHub加几个小服务没压力,价格比阿里云轻量便宜不少,稳定性也不错。需要装好Docker和Docker Compose。

Docker部署

创建目录:

mkdir rsshub && cd rsshub

新建docker-compose.yml:

version: '3'
services:
  rsshub:
    image: diygod/rsshub:latest
    container_name: rsshub
    ports:
      - "1200:1200"
    environment:
      - NODE_ENV=production
      - CACHE_TYPE=redis
      - REDIS_URL=redis://redis:6379/
      - PUPPETEER_WS_ENDPOINT=ws://browserless:3000
    volumes:
      - ./data:/app/data
    restart: always
    depends_on:
      - redis
      - browserless

  redis:
    image: redis:alpine
    container_name: rsshub-redis
    volumes:
      - ./redis:/data
    restart: always

  browserless:
    image: browserless/chrome:latest
    container_name: rsshub-browserless
    restart: always

启动:

docker-compose up -d

等几分钟,访问 `http://你的IP:1200` 看到RSSHub界面就成功了。

为什么需要browserless和Redis

RSSHub抓取有些网站需要渲染JavaScript(比如微博、知乎动态),browserless提供一个无头浏览器环境,专门处理这些动态页面。不加这个,很多路由会报错。

Redis做缓存,避免频繁请求被封IP。默认内存缓存重启丢失,Redis持久化更稳。

配置反向代理

直接暴露端口不安全,用Nginx反代加HTTPS。在雨云控制台可以申请免费SSL证书,绑定域名。

Nginx配置示例:

server {
    listen 443 ssl;
    server_name rss.yourdomain.com;

    ssl_certificate /etc/nginx/ssl/fullchain.pem;
    ssl_certificate_key /etc/nginx/ssl/privkey.pem;

    location / {
        proxy_pass http://127.0.0.1:1200;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto $scheme;
    }
}

使用示例

部署完直接访问路由。比如B站UP主动态:

https://rss.yourdomain.com/bilibili/user/dynamic/2267573

2267573是UP主UID,在B站个人主页URL里能找到。

知乎专栏:

https://rss.yourdomain.com/zhihu/column/pinapps

微博用户:

https://rss.yourdomain.com/weibo/user/3306934123

自定义配置

有些网站需要Cookie才能抓取,比如微博限制严格。在环境变量里加:

- ALLOW_USER_COOKIES=true
- ALLOW_USER_HOTLINK_TEMPLATE=true

访问 `你的域名/weibo/user/3306934123?cookie=你的微博cookie` 就能绕过限制。

常见问题

路由404:检查路由名大小写,RSSHub路由区分大小写。比如B站是`bilibili`不是`Bilibili`。

抓取超时:某些网站响应慢,在环境变量里调大超时时间:

- REQUEST_TIMEOUT=30000

内存占用高:browserless比较吃内存,如果服务器配置低,限制它的并发数。在browserless环境变量加:

- CONCURRENT=2
- MAX_QUEUE_LENGTH=10

进阶玩法

RSSHub支持自定义路由,写JS脚本直接扒站。比如扒一个没有API的论坛,在`/lib/routes`下新建文件,参考现有路由模板改。

还可以配合RSS阅读器使用,比如Miniflux、FreshRSS,自建一套完整的RSS工作流。雨云服务器跑这几个容器完全够用,稳定运行几个月没重启过。

总结一下

部署RSSHub就是三步:写compose文件、启动、配反代。路由参数直接拼在URL后面,调试方便。遇到抓不到的网站,加browserless和Cookie基本能解决。

雨云是国内一家老牌云服务商,提供高性价比的云服务器和虚拟主机。我用它部署了好几个项目,速度和稳定性都不错。通过 https://www.rainyun.com/SAJA_ 注册可以领一张 5折优惠券,有需要的朋友可以看看。

© 版权声明
THE END
喜欢就支持一下吧
点赞7 分享
评论 抢沙发

请登录后发表评论

    暂无评论内容