274 lines
13 KiB
Markdown
Executable File
274 lines
13 KiB
Markdown
Executable File
---
|
||
createDate: <% tp.file.creation_date("YYYY-MM-DD HH:mm")%>: 星期五, 七月 11日 2025, 8:50:05 早上
|
||
date modified: 星期六, 八月 2日 2025, 12:25:07 中午
|
||
createDate: <% tp.file.creation_date("YYYY-MM-DD HH:mm")%>: 星期五, 七月 11日 2025, 8:50:05 早上
|
||
---
|
||
## 1. RSS是什么
|
||
|
||
网页以RSS的形式为其内容提供一个通过URL获得的提要。RSS提要文件包含大量离散的新闻项,每一个RSS文件包含一个频道(Channel)。一个频道必须至少具备以下元素:Title(标题),在Description(描述)中对频道的简单介绍;Link(链接相应的目标网页);Language(频道语言)。每个频道由若干个Item(项)组成,每个项包含了一个URL,一个标题和一个摘要。RSS技术主要包含两个重要组件, RSS 提要(Feed)和RSS阅读器。
|
||
|
||
比如某个博客(Blog)的入口,其基本语法如下:
|
||
|
||
```
|
||
<channel>
|
||
|
||
<title><!-- channel 的标题 --></title>
|
||
|
||
<description><!-- 简要描述 --></description>
|
||
|
||
<link><!-- channel 的 URL --></link>
|
||
|
||
<!-- 可选/可扩展元素 -->
|
||
|
||
<item>
|
||
|
||
<title><!-- 项标题 --></title>
|
||
|
||
<link><!-- 项 URL --></link>
|
||
|
||
<description><!-- 简要描述 --></description>
|
||
|
||
<!-- 可选的/可扩展的元素 -->
|
||
|
||
</item>
|
||
|
||
</channel>
|
||
```
|
||
|
||
## 2. RSS文件结构
|
||
|
||
|
||
RSS是两级结构,第一级结构是channel,相当于blog系统中某人的blog,第二级结构是item,相当于blog中的文章。属性中最重要的是title、description和link,title是标题,description是介绍,link是与其相关的url。
|
||
|
||
```
|
||
1. <?xml version="1.0" encoding="gb2312" ?>
|
||
2. <rss version="2.0">
|
||
3. <channel>
|
||
4. <title>我的Blog</title> //channel的标题
|
||
5. <description>与我自己的技术Blog相关联</description> //channel的介绍
|
||
6. <link>http://counter.csdn.net/pv.aspx?id=72</link> //channel的url
|
||
7. <item>
|
||
8. <title><!-- 项标题 --></title> //item的标题
|
||
9. <link><!-- 项 URL --></link> //item的url
|
||
10. <description><!-- 简要描述 --></description> //item的介绍
|
||
11. <!-- 可选的/可扩展的元素 --> //item的其他属性,比如更新时间
|
||
12. </item>
|
||
13. <item>
|
||
14. <!-- 可多个<item>项目--> //一个channel有多个item
|
||
15. </item>
|
||
16. </channel>
|
||
17. </rss>
|
||
## 3. RSS制作
|
||
```
|
||
|
||
烧制网页 RSS 源,主要有 **FEED43** 和 **Huginn** 两种方法:
|
||
|
||
- FEED43:简单免费,六小时抓取一次,每次抓取 20 条静态页面。
|
||
- Huginn:自由度高,能自定义**抓取频率、内容结构、js 结果、输出样式**等;需要搭建服务器,学习 Huginn 抓取规则。
|
||
|
||
[Huginn](http://github.com/huginn/huginn)
|
||
|
||
! [Huginn]([https://github.com/yourname/huginn](https://github.com/yourname/huginn))
|
||
## 3. 工作机制
|
||
|
||
内容提供者在其网站上添加RSS的链接,以提供RSS订阅功能,当打开这个链接时,传送过去了一些频道信息,比如:blog的作者名。
|
||
|
||
一种做法是,RSS链接URL指向的是一个空内容的页面,该页面后台程序通过传过来的频道信息访问数据库,获取频道列表,用Response.Write向该空页面写出XML格式的文件。
|
||
|
||
另一种做法是,RSS链接URL指向的是一个xml文件,该文件由服务器的程序事先生成好的,放在服务器上,访问时静态获取,服务器在作者每添加一个频道列表时自动更新该xml文件。
|
||
|
||
第一种做法的优点是管理方便,因为不需要为每个频道生成xml文件,所有的RSS请求都由一个后台页面处理,接口统一,但每次访问RSS链接时,都要动态地写出RSS频道列表,访问效率相对较低,第二种做法的优点是访问时,只是返回一个静态的xml文件,不需要访问数据库来临时生成,所以访问效率相对较高,但每更新一次频道列表中的项时,就要自动地重新生成xml文件以保证RSS文件的最新,这样就降低了更新的效率。
|
||
|
||
## 4. RSSHub
|
||
|
||
一个开源易扩展的rss生成器,简单来说:让万物皆可rss。
|
||
本质上是一个爬虫路由及解析服务。开发者可以通过got、cheerio等库,来抓取网页数据,交由rsshub生成rss源。
|
||
RSSHub是GitHub上的一款开源RSS聚合软件。凭借良好的可拓展性和富有活力的社区,它现在已经可以将大部分常用网站的文章转化为RSS形式,让你可以在一个RSS阅读器上聚合阅读所有网站的内容。
|
||
|
||
作者:DIYGod 博客网址:https://diygog.cc
|
||
设计初衷:解决RSS订阅,需要梯子的RSS源和没有RSS源的信息订阅
|
||
|
||
当我们进入一个新页面时,RSSHub Radar 开始检测当前页面的 RSS 和 RSSHub
|
||
|
||
### **当前页面自带的 RSS**
|
||
|
||
分析页面中的每个链接显然是不现实的,好在标准中指定了一种特殊 MIME 类型的 link 标签来指明 RSS 链接,`link[type="application/rss+xml"]` 和 `link[type="application/atom+xml"]`,RSSHub Radar 正是通过这个标签来检测页面是否有自带 RSS,具体实现在[这里](https://link.zhihu.com/?target=https%3A//github.com/DIYgod/RSSHub-Radar/blob/master/src/js/content/utils.js%23L14)
|
||
|
||
### **适用于当前页面的 RSSHub**
|
||
|
||
使用[给定规则](https://link.zhihu.com/?target=https%3A//github.com/DIYgod/RSSHub/blob/master/assets/radar-rules.js),根据当前页面的 URL 或 DOM 来获取 RSSHub 链接,规则各个字段的具体含义见[文档](https://link.zhihu.com/?target=https%3A//docs.rsshub.app/joinus/%23%25E6%258F%2590%25E4%25BA%25A4%25E6%2596%25B0%25E7%259A%2584-rsshub-radar-%25E8%25A7%2584%25E5%2588%2599),具体实现在[这里](https://link.zhihu.com/?target=https%3A//github.com/DIYgod/RSSHub-Radar/blob/master/src/js/background/utils.js%23L111)
|
||
|
||
每隔 5 个小时从 GitHub 远程更新一次规则
|
||
- RSSHub/RSSHub Radar/TTRS
|
||
RSSHub顾名思义RSS集散地,可以集中订阅各种Rss源,而且可以创建Rss源,以供订阅。
|
||
由于网络问题,
|
||
RSSHub Radar也是DIYGod编写的,一个浏览器插件,作用有三个:发现网页RSS;匹配是否存在已知规则,如果是,则显示自建RSSHub的完整RSS订阅链接;同时提供推送到订阅平台或者阅读器快捷方式
|
||
[Tiny Tiny RSS](https://link.zhihu.com/?target=https%3A//tt-rss.org/)作为RSS服务器,[RSSHub](https://link.zhihu.com/?target=https%3A//docs.rsshub.app/)作为RSSfeed的生成器
|
||
|
||
|
||
## 5. RSS阅读器
|
||
- Mac:Reeder、fluent reader、feeder、feedflow、ReadKit
|
||
- Windows:irreader、fluent reader、
|
||
- iOS:Unread、reeder5 、feedly、fluent reader
|
||
- Andriod:
|
||
- RSS服务平台:feedly.com、innoreader.com、qireader.com
|
||
- 自建RSS平台:TTRSS、FreshRSS、Miniflux
|
||
|
||
### 5.1 RSS的订阅
|
||
|
||
有的网站提供了RSS自动发现机制,可以很方便地把RSS的URL添加到RSS阅读器中。如果没有自动发现,那么可以手动把RSS链接的URL添加到RSS阅读器中,这样就加入了一个用户订阅的频道。在RSS阅读器中可以更新频道列表或点击一个item链接打开该item的页面。
|
||
浏览器中订阅:两个浏览器插件
|
||
RSSHubRadar、油猴脚本
|
||
客户端中输入订阅URL即可完成订阅。
|
||
由于 RSSHub 支持自建,很多网友都建了一份,并且分享了出来,我们可以叫这些网站为 RSSHub 的镜像网站。如果你不想动手,则完全搭其他网友的“**便车**”。
|
||
|
||
### 5.2 RSSHub镜像站点
|
||
https://rsshub.rssforever.com
|
||
https://i.scnu.edu.cn/sub
|
||
https://rsshub.anyant.xyz
|
||
https://rss.injahow.cn
|
||
https://rss.shab.fun
|
||
https://rss.injahow.cn
|
||
http://himan.picp.net:1202
|
||
|
||
## 5.3 微信公众号RSS
|
||
### 5.3.1 搭建教程,私有化部署
|
||
https://github.com/ttttmr/wechat2rss?tab=readme-ov-file
|
||
https://wechat2rss.xlab.app/deploy/
|
||
https://github.com/ellipse42/wxrss
|
||
收费!
|
||
### 5.3.2 推荐收录公众号
|
||
https://github.com/ttttmr/wechat2rss/issues
|
||
|
||
- 以下是几个可以寻找 RSS 订阅的网站
|
||
|
||
- [微文库](https://link.zhihu.com/?target=https%3A//www.wxwenku.com/): 微信公众号的 RSS 订阅,只有部分。
|
||
- [Feeddd](https://link.zhihu.com/?target=https%3A//feeddd.org/): 微信公众号的 RSS 订阅。
|
||
- [wxrss](https://link.zhihu.com/?target=https%3A//github.com/ellipse42/wxrss): 微信公众号的 RSS 订阅。
|
||
- 已知公众号免费RSS
|
||
https://wechat2rss.xlab.app/list/all
|
||
- WeWe-RSS 免费
|
||
WeWe RSS是一款开源的微信公众号订阅工具,它能够将微信公众号的内容转化为RSS格式,让用户可以通过[RSS阅读器](https://zhida.zhihu.com/search?content_id=252105679&content_type=Article&match_order=1&q=RSS%E9%98%85%E8%AF%BB%E5%99%A8&zhida_source=entity)来订阅和阅读微信文章。它支持全文内容输出,自动更新内容,并且支持私有化部署,满足对数据隐私有高要求的用户。
|
||
采用sqlite方式,帐号经常失效,免费!
|
||
docker-compose.yml:
|
||
```
|
||
|
||
version: '3.9'
|
||
|
||
services:
|
||
app:
|
||
image: cooderl/wewe-rss-sqlite:latest
|
||
ports:
|
||
- 4000:4000
|
||
environment:
|
||
# 数据库连接地址
|
||
# - DATABASE_URL=file:../data/wewe-rss.db
|
||
- DATABASE_TYPE=sqlite
|
||
# 服务接口请求授权码
|
||
- AUTH_CODE=true
|
||
# 提取全文内容模式
|
||
# - FEED_MODE=fulltext
|
||
# 定时更新订阅源Cron表达式
|
||
# - CRON_EXPRESSION=35 5,17 * * *
|
||
# 服务接口请求限制,每分钟请求次数
|
||
# - MAX_REQUEST_PER_MINUTE=60
|
||
# 外网访问时,需设置为服务器的公网 IP 或者域名地址
|
||
- SERVER_ORIGIN_URL=http://himan.picp.net:4000
|
||
|
||
volumes:
|
||
# 映射数据库文件存储位置,容器重启后不丢失
|
||
- ./data:/app/data
|
||
|
||
|
||
```
|
||
扩展管理组件:
|
||
https://github.com/wyn-ying/wewe-rss-extensions
|
||
### 5.3.3 一个成熟的订阅助手
|
||
https://github.com/rachelos/we-mp-rss
|
||
基于官方接口开发的,docker-cli:
|
||
```
|
||
docker run -d \ --name we-mp-rss \ -p 4001:8001 \ -e DB=mysql+pymysql://<username>:<password>@<host>/<database> \ -e USERNAME:admin \ -e PASSWORD:admin@123 \ -e DINGDING_WEBHOOK=https://oapi.dingtalk.com/robot/send?access_token=admin8466 \ -v $(pwd)/data:/app/data \ ghcr.io/rachelos/we-mp-rss:latest
|
||
```
|
||
|
||
|
||
## 6. 自建RSS源
|
||
|
||
- 重要参考链接:
|
||
https://zhuanlan.zhihu.com/p/680291195
|
||
TTRSS搭建
|
||
https://blog.naibabiji.com/tutorial/tiny-tiny-rss.html
|
||
TTRSS-Mobile
|
||
https://github.com/mboinet/ttrss-mobile
|
||
https://blognas.hwb0307.com/linux/docker/788
|
||
我的TTRSS网址:
|
||
http://himan.picp.net:1810
|
||
|
||
|
||
Reeder客户端目前只支持3种自建HostedServer:
|
||

|
||
TTRSS安装fever插件Fever API可以支持!
|
||
|
||
关于FreshRSS见下一节介绍。
|
||
|
||
自建RSS服务比较:
|
||
|
||
| 产品 | 优点 | 缺点 |
|
||
| ------------- | ---------------------- | ------------- |
|
||
| Tiny Tiny RSS | 功能和插件最丰富 | 资源占用多,更新缓慢 |
|
||
| FreshRSS | 支持 XPath 抓取不支持 RSS 的网站 | 资源占用也不小 |
|
||
| Miniflux | 资源占用小,功能够用 | 无法为每个源自定义抓取间隔 |
|
||
| wewerss | | |
|
||
注:都是我自己用下来的感觉,不一定准确 如果你要使用 TTRSS,不建议使用官方原版,用 [🐋 Awesome TTRSS](https://ttrss.henry.wang/zh/)
|
||
- miniflux搭建教程如下:
|
||
https://yfi.moe/post/rsshub-miniflux/
|
||
## 7.RSS客户端
|
||
|
||
- PC
|
||
unread、reeder、netnewwire
|
||
- 移动端
|
||
unread、netnewwire
|
||
- 浏览器
|
||
feedpro
|
||
|
||
## 8. 成果和后续计划
|
||
|
||
### 8.1 微信转发
|
||
- http://himan.picp.net:4000 使用微信读书帐号进行抓取,但是不能连续,有封号风险
|
||
- http://himan.picp.net:8001 使用官网API接口,比较稳定
|
||
## 8.2 TTRSS
|
||
- http://himan.picp.net:1810 导入外部opml,订阅了大量RSS,安装了插件,可以在网站或者使用Mobile阅读app如:unread,可以在网页上通过rsshub或脚本直接订阅RSS!
|
||
## 8.3 RSSHub
|
||
|
||
- http://himan.picp.net:1202 可以使用别人已经做好的路由进行订阅;也可以自行进行各种RSS转换好订阅,待学习!
|
||
-
|
||
|
||
## 9. 参考链接
|
||
- 网站RSS feed查找工具汇总
|
||
https://zhuanlan.zhihu.com/p/719753010
|
||
- FreshRSS
|
||
https://www.1itao.com/freshrss-localhost.html
|
||
https://www.freshrss.org/
|
||
- wewerss搭建教程
|
||
https://github.com/cooderl/wewe-rss
|
||
https://zhuanlan.zhihu.com/p/15414931059
|
||
https://blog.csdn.net/wbsu2004/article/details/137666657
|
||
https://peterjxl.blog.csdn.net/article/details/141345162?spm=1001.2101.3001.6650.1&utm_medium=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-1-141345162-blog-137666657.235%5Ev43%5Epc_blog_bottom_relevance_base9&depth_1-utm_source=distribute.pc_relevant.none-task-blog-2%7Edefault%7EBlogCommendFromBaidu%7ECtr-1-141345162-blog-137666657.235%5Ev43%5Epc_blog_bottom_relevance_base9&utm_relevant_index=2
|
||
|
||
https://blog.csdn.net/wbsu2004/article/details/137666657
|
||
|
||
已搭建成功:
|
||
http://himan.picp.net:4000/feeds/MP_WXS_3255413770.atom
|
||
|
||
AuthCode=true
|
||
http://himan.picp.net:4000
|
||
微信读书:hii
|
||
|
||
|
||
-为什么说 FreshRSS 是我心目中最好的 RSS 阅读器。
|
||
|
||
1. 免费、无订阅源数量限制、支持全文搜索,常规 RSS 阅读器该有的功能它都有
|
||
|
||
2. 支持 HTML+XPath(Web 抓取)方式订阅,可以订阅不提供 RSS 的网站内容,搭配 RSSHub 等工具,真正实现“订阅一切”
|
||
|
||
3. 相对于其他本地 RSS 阅读器,FreshRSS 可做到全平台支持;而相对于其他自建 RSS 阅读器,FreshRSS 的界面更美观,而且搭建更容易
|