之前介绍过一款 RSS 工具 irreader,但它只适用于 Windows 系统,多终端使用和同步不够方便。而且 irreader 只能搜索文章标题,而不能检索文章内容,即不支持全文搜索。
此次给大家推荐一款网页版 RSS 工具——FreshRSS,无设备限制。它支持多种订阅方式,可以通过 XPath 抓取网页内容,订阅不提供 RSS 的网站,像 irreader 软件那样“订阅一切”。XPath 不仅可以用来订阅网站,还可以用来监控某个网页的变化,比如软件的更新记录发布页面!
安装教程
其实,小白之前分享过 FreshRSS 的搭建教程,当时介绍的是在 Windows 电脑本地的搭建方法。使用服务器搭建原理与之类似,在手动安装(也可以使用 Docker 等自动安装)之前,需要先搭建运行环境。如果有使用宝塔之类的管理面板,运行环境很容易安装。
注意事项:
1.安装 LNMP 套件时,先不要安装 PHP,其他通过默认“极速安装”即可。PHP 应选择单独“编译安装”。PHP 若使用极速安装,其中的 OpenSSL 版本过低,订阅部分网站时可能出现 SSL 报错:
cURL error 60: SSL certificate problem: certificate has expired [https://订阅域名/feed]
通过编译安装会集成高版本比较新的 OpenSSL,可避免出现此类问题。
2.FreshRSS 需要 Fileinfo 扩展,安装非常简单,在宝塔 PHP 管理(软件商店的已安装应用中找到 PHP 设置)- 安装扩展 - 找到“fileinfo”安装即可,安装后记得重启一下 PHP。
有了运行环境,添加(新建)一个网站,配置域名和 SSL 证书,记录好数据库账号和密码,然后把 FreshRSS 程序文件上传到网站目录。访问已配置的域名地址,根据提示进行设置即可完成安装。
- 主机:localhost
- 表前缀:默认即可
总体来讲,没什么难度。有其他一些常见的问题,可参考下方说明解决。
openlog 报错
FreshRSS 若出现类似下述错误警告,在宝塔 PHP 管理中 - 禁用函数 - 搜索删除 openlog 即可解决。
Warning: openlog() has been disabled for security reasons in /www/wwwroot/rss/FreshRSS-master/lib/lib_rss.php on line 15
也可能出现导入订阅源后,全都不更新的问题,可尝试在“禁用函数”中删除 syslog。
nginx 报错
nginx: [emerg] open() "/www/server/nginx/conf/enable-php.conf" failed (2: No such file or directory) in /www/server/nginx/conf/nginx.conf:76 nginx: configuration file /www/server/nginx/conf/nginx.conf test failed
若出现上述警告,可尝试更换 nginx 到最新版本。
更新订阅源
FreshRSS 安装完成后,根据需要添加订阅源,此时我们会发现订阅源并不能自动刷新。那么,如何获取文章更新呢?更新订阅源方案有手动和自动两种:
手动更新
手动获取最新文章很简单,直接点击下图所示的刷新按钮,就可以更新订阅源了。
自动更新
下面我们重点说说自动更新订阅源的方法,自动更新又可分为安装使用“FreshRSS 扩展”和宝塔添加“计划任务”两种。
FreshRSS 扩展
下载 Auto Refresh 扩展,将解压后的 xExtension-AutoRefresh 文件夹放到 /www/wwwroot/您的域名/extensions
目录下,然后在 FreshRSS 配置中启用该扩展,修改下刷新间隔时间就行了。
添加计划任务
通过宝塔添加计划任务,同样也有两种方法:
1.在“任务类型”中选择“访问 URL”,URL 地址填上您 FreshRSS 的手动刷新地址:https://您的域名/p/i/?c=feed&a=actualize
然后根据需要设置“执行周期”。不建议执行周期设置的间隔时间太短,不然会频繁刷新访问订阅源所在网站,有可能会被某些网站封锁 IP 地址。
2.另一种为官方说明文档中推荐的订阅源刷新方案,同样是通过计划任务添加。不过,在“任务类型”中要选择“Shell 脚本“,脚本内容为:php /www/wwwroot/您的 FreshRSS 目录文件夹/app/actualize_script.php > /tmp/FreshRSS.log 2>&1
PS,actualize_script.php 其实是 FreshRSS 安装程序中的一个文件,在宝塔”文件“中可直接查找复制此文件的路径。
XPath 订阅
上边提到过,使用 XPath 抓取网页,可用来订阅本身不提供 RSS 服务的网站,还可以用来订阅某个网页的内容更新。
由于不同网站的 XPath 规则一般也有所差异,小白就不以具体网站来举例了。下面主要是提供一些个人使用过程中总结的经验和技巧,希望对您有所帮助。
以 HTML+XPath(XML+XPath 与之类似)Web 抓取为例,FreshRSS 本身提供了一些 XPath 规则示例供我们参考。
通常以下四项的 XPath 规则填写正确,即可成功订阅网页:
- 文章标题:XPath 规则中若有二级标题标签,则可试试
descendant::h2
- 文章链接 (URL):一般使用示例中的
descendant::a/@href
就行
那么,我们应如何自行查找网页的 XPath 呢?
1.通过浏览器开发者工具获取 XPath;
比如我们需要查找文章标题的 XPath,就可以在文章标题上右键 - 检查,在开发工具对应的”元素“上右键 - 复制,就可以复制 XPath 的值了。
2.使用“XPath Helper”浏览器扩展获取 XPath;
XPath Helper 可以轻松提取、编辑 XPath。安装此扩展程序后,必须重新加载现有选项卡(刷新网页)或重启浏览器方可使其正常工作。
通过按 Ctrl+Shift+X(macOS 上为 Command+Shift+X)或点击工具栏中的 XPath Helper 按钮,打开 XPath Helper 控制台,然后将鼠标悬停在页面需要定位的元素上并按下 Shift 键。
如果需要订阅获取文章全文内容,除了通过 XPath 规则外,小白更习惯使用 CSS 选择器来获取全文。
获取 CSS 选择器规则跟使用浏览器开发者工具获取 XPath方法类似,只是复制时改为”复制 selector“。还有一个偷懒的办法,就是直接填写p
或者body
,只是可能全文显示时会出现一些多余内容。
PS,如果设置好规则后,订阅列表无变化,可以在订阅源管理的”归档“中”删除所有文章“,然后手动” 更新订阅源“,或者在”维护“中”重载文章“。
过滤订阅源
过滤订阅源在其他 RSS 阅读器(比如 inoreader)中是付费功能,由于 FreshRSS 是开源免费的,该功能自然也可以免费使用。
小白主要使用过滤规则来”将文章标记为已读“,因为有些订阅源有大量无用信息(比如广告内容),将其标为已读后可只筛选查看其他感兴趣的部分。
在订阅源管理”过滤动作“中,在”何时将文章标记为已读“处填写过滤规则,过滤规则可以参考官方文档。如果嫌麻烦,最简单的可以直接填写关键词,一行一个,当订阅文章包含这些关键词时,会自动标记为已读。
配置客户端
FreshRSS 在电脑等大屏幕上,一般直接使用网页版就行了。如果是在手机等小屏幕上,网页端使用体验就不如 RSS 阅读器 APP 了。支持 FreshRSS 的 APP 有很多,比如 FeedMe、Read You、Fluent Reader 等。那么,如何在 RSS 阅读器上登录 FreshRSS 呢?
1.通过 FreshRSS 设置 - 认证 - 开启”允许 API 访问 (用于手机应用)“
2.通过 FreshRSS 设置 - ”账户“管理 - API 管理 - 设置”API 密码“。在”API 密码“框下方会出现提示链接,其格式为https://您的域名/p/api/
,打开此链接可看到两个 API 地址:
https://您的域名/p/api/greader.php
https://您的域名/p/api/fever.php
3.在 RSS 阅读器上,通过 Google Reader 或 Fever 的”API 地址“+”API 密码“登录即可
最后,若需要对 FreshRSS 进行备份,在没有对其程序文件做过修改(增减或编辑)的情况下,通常只需要备份数据库就行了,没必要备份网站程序文件。备份数据库同样可以使用宝塔的计划任务,以实现自动执行。rss
r