RSSHub 是一个开源的RSS订阅源生成器,它可以为各种内容生成RSS订阅源,包括但不限于社交媒体、新媒体、论坛等。RSSHub的特点是简单易用、易于扩展,它利用开源社区的力量快速发展,目前已经适配了数百家网站的上千项内容
RSSHub的使用者可以通过RSS阅读器、IFTTT、Tiny Tiny RSS及其插件等工具来订阅和阅读通过RSSHub生成的内容。RSSHub的作者DIYgod表示,他最喜欢的RSSHub条目是“RSSHub有新路由啦”,这个条目能够让用户及时了解RSSHub的更新和新功能
此外,RSSHub可以通过Docker容器进行部署,也可以在Vercel等平台上免费部署。用户可以通过官方文档或者镜像站点来了解如何配置和使用RSSHub
RSSHub还支持与浏览器扩展RSSHub Radar以及移动端辅助应用RSSBud(iOS)和RSSAid(Android)配合使用,以便用户在不同设备上发现和订阅内容
开源社区对RSSHub的贡献包括新路由的添加、新功能的开发和bug修复。RSSHub的官方文档提供了详细的使用指南和路由信息,用户可以根据自己的需求找到相应的订阅源
对于那些不想自己部署RSSHub的用户,还可以选择使用其他人搭建好的RSSHub服务
rsshub 如何生成 rss 订阅源
RSSHub 是一个开源、简单易用、易于扩展的 RSS 生成器,可以为各种内容生成 RSS 订阅源
生成订阅源:例如,如果你希望订阅 Twitter 上一个名为 DIYgod 的用户的时间线,根据 Twitter 用户时间线路由的文档,路由为 /twitter/user/:id
,把 :id
替换为用户名,得到路径为 /twitter/user/DIYgod
,再加上域名 https://rsshub.app
,一个订阅源就生成了:https://rsshub.app/twitter/user/DIYgod
。然后你可以把 https://rsshub.app/twitter/user/DIYgod
,添加到任意 RSS 阅读器里来使用
通用参数:RSSHub 支持很多实用的参数,比如内容过滤、全文输出等。所有通用参数可以使用 &
连接组合使用,效果叠加。例如,可以使用 filter
参数过滤内容,使用 limit
参数限制最大条数,使用 mode
参数来开启自动提取全文内容功能
如果你需要自定义订阅源规则,可以在服务器自行搭建 RSSHub 服务,通过对 RSSHub 源码进行修改就可以实现自定义规则的 RSS 订阅源。RSSHub 是用 Javascript 写的,因此要修改源码,必须要具备 Javascript 编程知
自行部署 RSSHub
使用到docker-compose , dockker 和 docker-compose的安装 参见
version: '3.9' services: rsshub: # two ways to enable puppeteer: # * comment out marked lines, then use this image instead: diygod/rsshub:chromium-bundled # * (consumes more disk space and memory) leave everything unchanged image: diygod/rsshub restart: always ports: - '1200:1200' environment: NODE_ENV: production CACHE_TYPE: redis REDIS_URL: 'redis://redis:6379/' PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000' # marked ACCESS_KEY: cHthEdScE85LMW depends_on: - redis - browserless # marked browserless: # marked image: browserless/chrome # marked restart: always # marked ulimits: # marked core: # marked hard: 0 # marked soft: 0 # marked redis: image: redis:alpine restart: always volumes: - redis-data:/data warp-socks: image: monius/docker-warp-socks:latest privileged: true restart: always volumes: - /lib/modules:/lib/modules cap_add: - NET_ADMIN - SYS_MODULE sysctls: net.ipv6.conf.all.disable_ipv6: 0 net.ipv4.conf.all.src_valid_mark: 1 healthcheck: test: ["CMD", "curl", "-f", "https://www.cloudflare.com/cdn-cgi/trace"] interval: 30s timeout: 10s retries: 5 volumes: redis-data:
配置nginx
nginx的安装和配置参见
配置路径为: /etc/nginx/sites-available/rss.conf
server { server_name rss.x.com; # 请根据实际情况修改你的域名 listen 443 ssl; ssl_certificate /etc/nginx/ssl/rss.x.com.crt; ssl_certificate_key /etc/nginx/ssl/rss.x.com.key; ssl_session_timeout 1d; ssl_session_cache shared:SSL:50m; ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_ciphers 'ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384'; ssl_prefer_server_ciphers on; location /.well-known/acme-challenge { root /var/www/letsencrypt; try_files $uri =404; } location / { client_max_body_size 64m; proxy_http_version 1.1; proxy_pass http://localhost:1200; proxy_set_header Host $host; proxy_set_header X-Forwarded-For $remote_addr; proxy_cache_bypass $http_upgrade; proxy_set_header Accept-Encoding gzip; proxy_read_timeout 300s; } } server { server_name rss.x.com; # 请根据实际情况修改你的域名 listen 80; location /.well-known/acme-challenge { root /var/www/letsencrypt; try_files $uri =404; } location / { return 301 https://$host$request_uri; } }
使用当前配置可用
sudo ln -s /etc/nginx/sites-available/rss.conf /etc/nginx/sites-enabled/rss.conf
nginx 配置完成后使用 nginx -t
进行检查 然后再使用 nginx -s reload
加载配置
其中 ssl 相关的密钥生成方法如下
acme.sh --issue -d example.com -w /var/www/letsencrypt acme.sh --install-cert -d example.com \ --key-file /etc/nginx/ssl/example.com.key \ --fullchain-file /etc/nginx/ssl/example.com.crt \ --ca-file /etc/nginx/ssl/example.com.ca.crt \ --reloadcmd "systemctl restart nginx"
注意需要提前在nginx 中配置验证url