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折优惠券,有需要的朋友可以看看。



暂无评论内容