您需要先安装一个扩展,例如 篡改猴、Greasemonkey 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 暴力猴,之后才能安装此脚本。
您需要先安装一个扩展,例如 篡改猴 或 Userscripts ,之后才能安装此脚本。
您需要先安装一款用户脚本管理器扩展,例如 Tampermonkey,才能安装此脚本。
您需要先安装用户脚本管理器扩展后才能安装此脚本。
Greasy Fork is available in English.
检测当前网站的feed,方便订阅RSS内容。
Feed Finder 是一个 Violentmonkey 用户脚本,旨在自动侦测并显示当前网页上的 RSS、Atom 或 JSON 订阅源。它通过一个多阶段的探索流程运作,包含特定站点规则、DOM 扫描及网络探测。找到的订阅源会显示在一个方便且不干扰的浮动小工具中,该小工具会显示可用的订阅源数量,并可展开以呈现包含其标题和网址的可点击列表。此脚本针对现代网页浏览进行了优化,支持单页应用程序(SPA),并采用高效的防抖动执行机制以最小化对性能的影响。
多方面探索机制: 该脚本采用一个有优先顺序的三阶段方法,以最大化找到订阅源的机会。
github.com
、medium.com
)的硬编码规则。这些规则根据 URL 结构提供高精准度的订阅源链接,例如 GitHub 存储库的 commits 或 releases 链接。<link>
和 <a>
元素。它根据 type
属性(如 application/rss+xml
)、rel="alternate"
以及包含 rss
、feed
等关键字或 .xml
等扩展名的 href
属性来识别它们。/feed
、/rss.xml
)。它使用高效的 HEAD
请求来检查响应的 Content-Type
标头,以确认该 URL 是否指向一个有效的订阅源,而无需下载整个文件。动态且不干扰的 UI:
单页应用程序(SPA)支持: 该脚本能主动监控在现代 Web 应用中常见的、无需完全重新加载页面的 URL 变化。通过修补(patch)history.pushState
和 history.replaceState
并监听导航事件(popstate
、hashchange
),它能在页内导航时自动重新执行探索过程。
高效率与优化设计:
HEAD
请求而非 GET
,节省了带宽并提高了速度。自定义样式: 脚本会为小工具注入其自有的 CSS,并动态获取和嵌入 "Monaspace Neon" 字体,以提供一致且精美的外观,同时谨慎处理相对字体路径以符合内容安全策略(CSP)。
该脚本被封装在一个立即调用函数表达式(IIFE)中,以避免污染全局命名空间。其结构逻辑清晰且模块化。
siteSpecificRules
(对象): 一个设置映射表,其键是主机名称,值是函数。每个函数接收当前的 URL 对象作为参数,并返回一个包含该站点已知高质量订阅源 URL 的 Map
。这是第一个也是最精确的探索方法。
discoverFeeds(initialDocument, url)
(异步函数): 这是核心的协调函数。它按顺序执行三个探索阶段:
findFeedsInNode
以扫描 DOM。gmFetch
启动网络探测。
它会将所有阶段的结果汇总成一个单一列表,并确保没有重复项。gmFetch(url, options)
(函数): 一个基于 Promise 的、对 Greasemonkey API 函数 GM_xmlhttpRequest
的封装。这对于执行跨域网络请求至关重要,这些请求在网络探测和获取外部字体样式表时是必需的。
UI 管理: 一组变量和函数专门用于创建、设置样式和管理 UI 小工具。
injectCSS()
:将小工具的样式注入文件的 <head>
中。widget
, content
, listEl
):构建 UI 所需的 DOM 元素。renderResults()
:将发现的订阅源列表填充到 UI 中。widget.addEventListener
, handleClickOutside
):管理小工具的展开/折叠行为。SPA 导航处理:
patchHistoryMethod()
:一个辅助函数,用于包装原生的 history.pushState
和 history.replaceState
方法。当网站调用这些方法时,包装函数会派发一个自定义事件。popstate
、hashchange
、pushstate
和 replacestate
的事件监听器会触发 handleUrlChange
,后者会重置脚本的状态并启动新的探索过程。GM_xmlhttpRequest
: 此权限是执行跨域网络请求所必需的。它用于以下两个目的:
HEAD
请求。Monaspace Neon
)。@match *://*/*
: 该脚本被配置为在所有 HTTP 和 HTTPS 网站上运行。这种广泛的匹配模式是必要的,以便使其成为一个通用目的的订阅源寻找器,能够在用户访问的任何网站上发现订阅源。