惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

C
CXSECURITY Database RSS Feed - CXSecurity.com
Google Online Security Blog
Google Online Security Blog
The Last Watchdog
The Last Watchdog
S
Security @ Cisco Blogs
Help Net Security
Help Net Security
Security Archives - TechRepublic
Security Archives - TechRepublic
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
W
WeLiveSecurity
cs.CV updates on arXiv.org
cs.CV updates on arXiv.org
H
Hacker News: Front Page
人人都是产品经理
人人都是产品经理
aimingoo的专栏
aimingoo的专栏
Vercel News
Vercel News
Microsoft Azure Blog
Microsoft Azure Blog
小众软件
小众软件
Project Zero
Project Zero
T
Tailwind CSS Blog
V
Vulnerabilities – Threatpost
P
Privacy & Cybersecurity Law Blog
Know Your Adversary
Know Your Adversary
Last Week in AI
Last Week in AI
腾讯CDC
Schneier on Security
Schneier on Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
WordPress大学
WordPress大学
量子位
L
Lohrmann on Cybersecurity
J
Java Code Geeks
Cyberwarzone
Cyberwarzone
Recent Announcements
Recent Announcements
IT之家
IT之家
博客园_首页
罗磊的独立博客
博客园 - 聂微东
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
Application and Cybersecurity Blog
Application and Cybersecurity Blog
F
Fortinet All Blogs
博客园 - Franky
P
Palo Alto Networks Blog
V2EX - 技术
V2EX - 技术
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Martin Fowler
Martin Fowler
N
News and Events Feed by Topic
C
Cybersecurity and Infrastructure Security Agency CISA
B
Blog RSS Feed
Cisco Talos Blog
Cisco Talos Blog
TaoSecurity Blog
TaoSecurity Blog
H
Heimdal Security Blog
G
GRAHAM CLULEY
Cloudbric
Cloudbric

Razeen`s Blog

Let's Encrypt 推出 Gen Y 根证书架构:揭示 Web PKI 的五大未来趋势 通过 Wi-Fi 自动备份你的 iPhone 到 Nas 管理培训感悟:从技术视角看管理之路 UPS 一拖多:保护你的 NAS 和 Linux 服务器 从影音中心到 AI 助手:我的50款 Homelab 服务清单 从SSL证书有效期将缩短到47天聊开去 部署一个自己的 Running Page 谈谈特斯拉 Model Y 用车一年的感受和费用分析 弃用 Disqus 评论,使用自建 Waline 使用 Prometheus 和 Grafana 搭建你的证书监控面板 服务器迁移记:一次磁盘换板引发的Linux分区与挂载的学习 多种 Docker 镜像拉取解决方案与实践 App分享 | AppCleaner - Mac上的卸载神器 Azure OpenAI API 申请和使用 如何开通 OneKey 虚拟信用卡,并充值消费 如何拥有一个可长期在国内使用的国外手机号码 分享开通 ChatGPT Plus 过程 如何开通 Depay 虚拟信用卡,并充值消费 如何开通欧易Web3钱包, 交易入账 如何5分钟内1块钱注册 ChatGPT 如何注册美区的 Apple ID (2023年/无需科学上网) NAS折腾记(11): NASTool3.0体验和降级 NAS折腾记(10): Docker版本的NASTool配置 NAS折腾记(9): NASTool与微信交互,微信发送消息远程下载电影【多图】 NAS折腾记(8):群晖安装 NASTool 实现影音半自动化【多图】 内网穿透(2):Tailscale 组网实现内网穿透,操作简单,无成本 内网穿透(1):总结了11中内网穿透的方式,总有一种适合你 NAS折腾记(7):从零开始设置(黑)群晖系统 NAS折腾记(6):黑群晖系统安装好后怎么洗白? NAS折腾记(5):群晖硬盘休眠设置与分析 NAS折腾记(4): 20分钟手把手带你完美安装 DS918+ 黑群晖7.1.1 NAS折腾记(3):NAS 装机 NAS折腾记(2):B360-ITX 双M.2 双2.5G网口 6 SATA主版 开箱 NAS折腾记(1):328元的4盘位Nas机箱开箱 Openwrt + Clash 全局科学上网 Newifi3 刷入 OpenWrt 固件 v21.02 利用 Markdown 画一些流程图、时序图、甘特图等 Homelab(8): 搭建自用 Gitlab 与 Docker 仓库 Nginx Tcp 转发保留客户端真实 IP (PROXY Protocol) Homelab (7):IPSec VPN(基于证书认证)客户端设置 Homelab (6): 基于自签发证书的 IPSec VPN 搭建 Homelab (5): DDNS 动态域名解析 Homelab (4): Linux 服务器基础环境准备 Homelab (3): 整体网络与基础硬件介绍 Go学习笔记(十)老项目迁移 go module 大型灾难记录 Github Actions 初体验之自动化部署 Hexo 博客 记一次 Nginx DNS 缓存导致转发问题 Homelab (2): 电信悦me网关修改桥接模式,路由器拨号 Homelab (1):5分钟上手黑群晖 NAS 终极 Bash 脚本指南 Typora 自动上传图片到七牛云 Ubuntu 20.04 LTS 有线网卡驱动安装 折腾 Ubuntu 20.04 LTS 开发环境 Go学习笔记(九) 计时器的生命周期[译] 利用 git hook 规范你的代码与 commit message 规范 git commit message 与自动化版本控制 超详细 vim 配置 (with MacVim) Golang 中的 RESTful API 最佳实践 折腾服务器(开篇) 我的第一台个人服务器 Newifi3 实现低成本家庭级科学上网 Go学习笔记(八) | 使用 os/exec 执行命令 如何用 Go 调用 Windows API Mac OS 自动根据 WI-FI 名字改变网络位置 关于 Docker 清理 MIME Types 速查表 Go学习笔记(七) | 理解OAuth 2.0并实现一个客户端 我又又又把博客迁移了 Go学习笔记(六) | 使用swaggo自动生成Restful API文档 Go学习笔记(五) | 使用代码片段(snippets)提高编码效率 书单 - 2018 IPFS 初体验,利用 IPFS 托管你的静态网站 记一次 PostgreSQL LIKE 索引优化,联合字段 LIKE 查询优化。 Disqus 添加有趣的 Reactions 的功能 TLS 1.3 详解 (RFC 8446解读) gRPC在Go中的使用(三)gRPC实现TLS加密通信与流模式 gRPC在Go中的使用(二)gRPC实现简单通讯 gRPC在Go中的使用(一)Protocol Buffers语法与相关使用 CentOS 安装 tshark 抓包工具 Go学习笔记(四) | win上使用VSCode搭建Go开发环境 日常 Postgres 数据库点滴记录 简单了解 PKCS 规范 美食篇 | DIY戚风蛋糕(烤箱做蛋糕) Go学习笔记(三) | 怎么写Go基准测试(性能测试) TLS1.3正式更新,为Nginx添加TLS1.3的支持 一次诡异的数据库删除 GitHub Pages自定义域名开启HTTPS 证书透明度是什么?它是怎么工作的? Go学习笔记(二) | 我对 recover 的一点误解 搭建证书透明度(certificate-transparency)日志服务之从入门到放弃 修复远程登陆 Centos 时,出现 UTF-8 Warning HTTPS篇之SSL握手过程详解 Go学习笔记(一) | postgres与golang点点滴滴 AWS 命令行界面(aws-cli)从安装到快速上手 数字证书分类及怎么区分各类数字证书 常用 linux 命令小结(一)文件目录操作 云服务器搭建 hexo 博客,git hooks自动更新 SSH 免密登陆, SSH Config 配置 Golang CGO Mac 交叉编译 Windows 使用 goose 让数据库迁移更加轻松 开始使用Ghost
改善信息来源, 利用 RSS 高效获取资讯 (RSShub + Reeder5 + WeWe RSS)
2024-08-15 · via Razeen`s Blog

最近刷推, 多次刷到关于 DIYgod 大佬最新 follow 项目的体验分享, 然而目前还在邀请测试的阶段,没法参与。但大佬的另外一个项目 RSSHub 却帮我解决了一个困扰很久的问题。

一直以来,我主要的信息来源是推特和公众号。虽然也收藏了一些其他资讯站点和个人博客,但由于太分散(太懒)了,基本不会点开去看。而 RSSHub 项目就帮我解决了这个问题。这篇博客主要分享一下关于 RSSHub + Reeder 5 使用。

用上 Follow 了,但更多的还在使用 Reeder

最近用上了 Follow, 但只有桌面端。平常还是手机上使用的比较多, 于是用的更多的还是 Reeder。

Follow

部署了一个 WeWe RSS,将微信公众号转换成 RSS 订阅

平常不少信息是来自微信公众号的,利用 WeWe RSS 能爬取公众号订阅聚合成 RSS,在Reeder 上统一阅读更方便了。

WeWe RSS

RSS, 1999年网景公司推出, 当时全称 Rich Site Summary, 最新发展到 2.0, 其全称也可叫做 Really Simple Syndication, 这是一种消息来源的格式规范,聚合站点的更新内容,输出XML格式,方便客户端订阅。

最早接触 RSS 还是当初搭建博客的时候,配置项里面有个 RSS 配置,当时也就随手配置了一下,没想到用它来聚合消息。 而且随着自媒体/短视频的发展,身边几乎没有朋友用这种方式订阅信息了。直至前几天,看到 RSSHub,我决定试一试,这两周体验下来感觉还不错。

RSSHub 是一个可以将任何内容都可以抓取然后转换成 RSS 订阅的网站。

项目的 slogan 万物皆可RSS, 它不仅可以订阅各种博客、论坛、新媒体,甚至社交媒体、推特等都不在话下,很强,详见食用指南

该项目已经持续发展6年了,一直在持续更新, 甚至今年进行了一次重构, 不得不佩服大佬们的行动力。

alt text

项目支持私有部署,建议会折腾的自己可以部署一个。使用 docker-compsoe 很简单的就完成部署了,配置文件官方的文档中都有了 docker-compose.yml

对外提供访问的话,最好套一层 Nginx, 再用 acme.sh 来个证书自动化就完美了, 我的配置我贴在在文尾。

除此之外,官方还提供了 Radar 功能,结合浏览器插件就可以发现你正在访问的站点 RSSHub 是否已经支持订阅了,如果支持了可以一键转换成订阅的地址, 很方便。 不仅如此,还支持移动端哦。

alt text

当然,如果你要订阅 Github Trending, 或者 Twitter 时间线等,你需要配置一下对应的 Token, 详见配置

Reeder 5

RSS 的源有了,接下来就是客户端的选择了。我选择了 Reeder 5, 一个 macOS/iOS/iPadOS 上的 RSS 阅读器。 虽然收费,但是几周的体验下来,感觉还是很不错的。

Reeder 5 支持多种 RSS 源,包括 Feedly, Inoreader 等等,当然也支持自定义 RSS 源。

目前我主要用的就是订阅一些博客、公众号、推特等, 它的排版简洁,字体也还不错,而且支持 iCloud 同步,很方便。

alt text

初此之外还有一个功能,稍后再读,我也很喜欢,有时候看到一些文章,当时没时间细看,可以浏览器中直接选择 在 Reeder 中稍后再读,有时间在打开APP慢慢看,很方便(以前都是发送到微信聊天里面…)。

alt text

alt text

平常不少信息都来自微信公众号订阅,然而在微信里阅读的时候干扰比较多,而且公众号不支持 RSS 订阅。 WeWe RSS 很好的解决了这个问题。

需要注意的是,WeWeRSS 核心也是爬虫,爬取微信读书的API,核心部分的代码并没有开源(开源估计很快就能被封了),微信读书相关的接口通过 weread.111965.xyz 服务来转发的。虽然作者也说了只是做转发,但建议使用的时候用小号登录。

alt text

上面是部署好的页面,可以通过粘贴公众号的文章来订阅公众号,同时支持 RSS 订阅和导出 OPML 。感谢作者的奉献,希望这个项目能长久维护下去。

配置就不多说了,官方文档写的还可以,我的配置也贴在文末。

总结

目前这套组合体验下来,感觉不错,一些我想关注的信息,都可以通过 RSSHub 聚合到 Reeder 5 中,然后在合适的时间看,不用担心错过了。

然而,与此同时,信息量也变大了,自己的接受量却很有限,需要做一定的取舍,保留那些适合自己的就好了,不然反而会变成信息焦虑。

之外还有一点,目前微信公众号的文章,还没有很好的爬取方式(虽然看到有付费方案),目前只能通过公众号的订阅号来看。

最后,很期待 DIYgod 大佬的 follow 项目,希望能早日体验到。

相关配置

最后的最后,分享一下我的配置,供参考。

为了顺利的访问 twitter, github, 找一台海外的服务器部署比较好。

  • docker-compose.yml

加了个 acme.sh 申请证书,nginx 代理 rsshub。

version: '3.5'
services:
  acme:
    image: neilpang/acme.sh
    restart: always
    container_name: acme.sh
    command: ["daemon"]
    environment:
      # 我是Cloudflare DNS, 其他参考 https://github.com/acmesh-official/acme.sh/wiki/dnsapi
      - CF_Zone_ID=xxxx  
      - CF_Token=xxx
    volumes:
      - ./acme.sh:/acme.sh
      - ./certs:/ssl

  nginx:
    image: nginx
    network_mode: host
    container_name: nginx
    restart: always
    volumes:
      - ./certs:/etc/nginx/ssl
      - ./web-rsshub.conf:/etc/nginx/conf.d/rsshub.conf

  rsshub:
    image: diygod/rsshub
    restart: always
    container_name: rsshub
    ports:
      - '1200:1200'
    environment:
      NODE_ENV: production
      CACHE_TYPE: redis
      REDIS_URL: 'redis://redis:6379/'
      PUPPETEER_WS_ENDPOINT: 'ws://browserless:3000'  # marked
      GITHUB_ACCESS_TOKEN: 'xxxx'
      TWITTER_USERNAME: 'xxx'
      TWITTER_PASSWORD: 'xxx'
      TWITTER_AUTHENTICATION_SECRET: 'xxxx'
    depends_on:
      - redis
      - browserless  # marked
  
  browserless:  # marked
    image: browserless/chrome  # marked
    container_name: rsshub-browserless
    restart: always  # marked
    ulimits:  # marked
      core:  # marked
        hard: 0  # marked
        soft: 0  # marked
  
  redis:
    image: redis:alpine
    container_name: rsshub-redis
    restart: always
    volumes:
        - ./redis-data:/data

  wewerss:
      image: cooderl/wewe-rss-sqlite:latest
      container_name: wewerss
      restart: always
      environment:
          - DATABASE_TYPE=sqlite
          - AUTH_CODE=changeyourpassword
      ports:
          - '4001:4000'
      volumes:
          - ./wewerss-data:/app/data
  • web-rsshub.conf

反向代理 rsshub 配置

server {
    listen                       443 ssl;
    server_name                  rsshub.example.com;
    server_tokens                off;
    http2 on;

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

    ssl_prefer_server_ciphers    on;
    ssl_ciphers                  EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

    ssl_protocols                TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_session_cache            shared:SSL:50m;
    ssl_session_timeout          1d;
    ssl_session_tickets          on;

    ssl_trusted_certificate      /etc/nginx/ssl/ca.pem;
    ssl_stapling                 on;
    ssl_stapling_verify          on;

    access_log  /var/log/nginx/access_rsshub.log  main;
    error_log   /var/log/nginx/error_rsshub.log;

    resolver 8.8.8.8 ipv6=off valid=30s;

    location / {
        proxy_pass http://127.0.0.1:1200;
    }
}


server {
    listen 443 ssl;
    listen [::]:443 ssl;

    server_name werss.example.com;

    access_log  /var/log/nginx/access_werss.log  main;
    error_log   /var/log/nginx/error_werss.log;

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

    ssl_prefer_server_ciphers    on;
    ssl_ciphers                  EECDH+CHACHA20:EECDH+CHACHA20-draft:EECDH+AES128:RSA+AES128:EECDH+AES256:RSA+AES256:EECDH+3DES:RSA+3DES:!MD5;

    ssl_protocols                TLSv1.1 TLSv1.2 TLSv1.3;
    ssl_session_cache            shared:SSL:50m;
    ssl_session_timeout          1d;
    ssl_session_tickets          on;

    ssl_trusted_certificate      /etc/nginx/ssl/ca.pem;
    ssl_stapling                 on;
    ssl_stapling_verify          on;

    location / {
        proxy_pass               http://127.0.0.1:4001;
    }
}
  • apply-cert.sh

写个脚本申请证书,然后更新证书

#!/bin/bash

echo "start install cert ..."

docker exec acme.sh --issue \
  -d "example.com" \
  -d "*.example.com" \
  --dns dns_cf \
  --keylength ec-256 \
  --server letsencrypt \
  --dnssleep 300 \
  --force

if [ $? -ne 0 ]; then
  echo "apply cert failed"
  exit 1
fi

docker exec acme.sh --install-cert \
  -d "example.com" \
  -d "example.com" \
  --dns dns_cf \
  --keylength ec-256 \
  --server letsencrypt \
  --key-file       /ssl/key.pem \
  --fullchain-file /ssl/fullchain.pem \
  --ca-file /ssl/ca.pem \
  --reloadcmd  "echo 'done'"

if [ $? -ne 0 ]; then
  echo "install cert failed"
  exit 1
fi

docker restart  nginx

if [ $? -ne 0 ]; then
  echo "reload nginx failed"
  exit 1
fi

echo "update cert success"