配置
通过设置环境变量来配置 RSSHub
网络配置
PORT: 监听端口,默认为 1200
SOCKET: 监听 Unix Socket,默认 null
LISTEN_INADDR_ANY: 是否允许公网连接,默认 1
REQUEST_RETRY: 请求失败重试次数,默认 2
REQUEST_TIMEOUT: 请求超时毫秒数,默认 3000
UA: 用户代理,默认为随机用户代理用户代理(macOS 上的 Chrome)
NO_RANDOM_UA: 是否禁用随机用户代理,默认 null
跨域请求
RSSHub 默认对跨域请求限制为当前连接所在的域名,即不允许跨域。可以通过 ALLOW_ORIGIN: * 或者 ALLOW_ORIGIN: www.example.com 以对跨域访问进行修改。
缓存配置
RSSHub 支持 memory 和 redis 两种缓存方式,建议使用 redis 以持久化缓存。
CACHE_TYPE: 缓存类型,可为 memory 和 redis,设为空可以禁止缓存,默认为 memory
CACHE_EXPIRE: 路由缓存过期时间,单位为秒,默认 5 * 60
CACHE_CONTENT_EXPIRE: 内容缓存过期时间,每次访问会重新计算过期时间,单位为秒,默认 1 * 60 * 60
REDIS_URL: Redis 连接地址(redis 缓存类型时有效),默认为 redis://localhost:6379/
MEMORY_MAX: 最大缓存数量(memory 缓存类型时有效),默认 256
代理配置
部分路由反爬严格,可以配置使用代理抓取。
PROXY_URI: 代理 URI,格式为 {protocol}://{host}:{port},protocol 只支持 http, https。socks5 支持讨论见 nodejs/undici#2224
PROXY_AUTH: 给代理服务器的身份验证凭证,会添加 header Proxy-Authorization: Basic ${PROXY_AUTH}
PROXY_URL_REGEX: 启用代理的 URL 正则表达式,默认全部开启 .*
访问控制配置
RSSHub 支持使用访问密钥 / 码进行访问控制。开启将会激活全局访问控制,没有访问权限将会导致访问被拒绝。
允许清单/拒绝清单
建议使用类似 Nginx 或 Cloudflare 的代理服务器进行访问控制。
访问密钥 / 码
ACCESS_KEY: 访问密钥,用于直接访问所有路由或者生成访问码
访问码为 访问密钥 + 路由 共同生成的 md5,例如:
| 访问密钥 | 路由 | 生成过程 | 访问码 |
|---|---|---|---|
| ILoveRSSHub | /qdaily/column/59 | md5('/qdaily/column/59' + 'ILoveRSSHub') | 0f820530128805ffc10351f22b5fd121 |
此时可以通过
code访问路由,例如:https://rsshub.app/qdaily/column/59?code=0f820530128805ffc10351f22b5fd121或使用访问密钥
key直接访问所有路由,例如:https://rsshub.app/qdaily/column/59?key=ILoveRSSHub
Healthcheck 配置
当启用 ACCESS_KEY 时,healthcheck 端点也需要进行身份验证。
对于 Docker Compose 部署,你需要在 docker-compose.yml 中更新 healthcheck 配置以包含访问密钥或访问码参数。
推荐的配置如下:
healthcheck:
- test: ["CMD", "curl", "-f", "http://localhost:1200/healthz"]
+ test: ["CMD", "curl", "-f", "http://localhost:1200/healthz?key=${ACCESS_KEY}"]日志配置
DEBUG_INFO: 是否在首页显示路由信息。值为非 true false 时,在请求中带上参数 debug 开启显示,例如:https://rsshub.app/?debug=value_of_DEBUG_INFO 。默认 true
LOGGER_LEVEL: 指明输出到 console 和日志文件的日志的最大 等级,默认 info
NO_LOGFILES: 是否禁用日志文件输出,默认 false
SHOW_LOGGER_TIMESTAMP: 在控制台输出中显示日志时间戳,默认 false
SENTRY: Sentry dsn,用于错误追踪
SENTRY_ROUTE_TIMEOUT: 路由耗时超过此毫秒值上报 Sentry,默认 3000
图片处理
HOTLINK_TEMPLATE: 用于处理描述中图片的 URL,绕过防盗链等限制,留空不生效。用法参考 #2769。可以使用 URL 的所有属性(加上后缀 _ue 则会对其进行 URL 编码),格式为 JS 变量模板。例子:${protocol}//${host}${pathname}, https://i3.wp.com/${host}${pathname}, https://images.weserv.nl?url=${href_ue}
HOTLINK_INCLUDE_PATHS: 限制需要处理的路由,只有匹配成功的路由会被处理,设置多项时用英文逗号 , 隔开。若不设置,则所有路由都将被处理
HOTLINK_EXCLUDE_PATHS: 排除不需处理的路由,所有匹配成功的路由都不被处理,设置多项时用英文逗号 , 隔开。可单独使用,也可用于排除已被前者包含的路由。若不设置,则没有任何路由会被过滤
路由匹配模式
HOTLINK_INCLUDE_PATHS 和 HOTLINK_EXCLUDE_PATHS 均匹配路由根路径及其所有递归子路径,但并非子字符串匹配。注意必须以 / 开头,且结尾不需要 /。
例:/example, /example/sub 和 /example/anthoer/sub/route 均可被 /example 匹配,但 /example_route 不会被匹配。
也可带有路由参数,如 /weibo/user/2612249974 也是合法的。
功能特性
测试特性
这个板块控制的是一些新特性的选项,他们都是默认关闭的。如果有需要请阅读对应说明后按需开启
ALLOW_USER_HOTLINK_TEMPLATE: 通用参数 -> 多媒体处理特性控制
FILTER_REGEX_ENGINE: 控制 通用参数 -> 内容过滤 使用的正则引擎。可选[re2, regexp],默认re2。我们推荐公开实例不要调整这个选项,这个选项目前主要用于向后兼容。
ALLOW_USER_SUPPLY_UNSAFE_DOMAIN: 允许用户为路由提供域名作为参数。建议公共实例不要调整此选项,开启后可能会导致 服务端请求伪造(SSRF)
其他应用配置
DISALLOW_ROBOT: 阻止搜索引擎收录,默认开启,设置 false 或 0 关闭
ENABLE_CLUSTER: 是否开启集群模式,默认 false
NODE_ENV: 是否显示错误输出,默认 production (即关闭输出)
NODE_NAME: 节点名,用于负载均衡,识别当前节点
PUPPETEER_WS_ENDPOINT: 用于 puppeteer.connect 的浏览器 websocket 链接,见 browserWSEndpoint
CHROMIUM_EXECUTABLE_PATH: Chromium(或 Chrome)的可执行路径。若 puppeteer 没有下载捆绑的 Chromium(主动跳过下载或体系架构为 arm/arm64),设置此项可启用 puppeteer。或者,偏好 Chrome 而不是 Chromium 时,此项也很有用。注意:PUPPETEER_WS_ENDPOINT 被设置时,此项不生效;仅在手动部署时有用,对于 Docker 部署,请改用 chromium-bundled 版本镜像。
TITLE_LENGTH_LIMIT: 限制输出标题的字节长度,一个英文字符的长度为 1 字节,部分语言如中文,日文,韩文或阿拉伯文等,统一算作 2 字节,默认 150
OPENAI_API_KEY: OpenAI API Key,用于使用 ChatGPT 总结文章
OPENAI_MODEL: OpenAI 模型名称,用于使用 ChatGPT 总结文章,默认gpt-3.5-turbo-16k,详见 OpenAI API 文档
OPENAI_TEMPERATURE: OpenAI 温度参数,用于使用 ChatGPT 总结文章,默认0.2,详见 OpenAI API 文档
OPENAI_MAX_TOKENS: OpenAI 最大 token 数,用于使用 ChatGPT 总结文章,默认null,详见 OpenAI API 文档
OPENAI_API_ENDPOINT: OpenAI API 地址,用于使用 ChatGPT 总结文章,默认https://api.openai.com/v1,详见 OpenAI API 文档
OPENAI_PROMPT: OpenAI 提示语,用于使用 ChatGPT 总结文章,详见 OpenAI API 文档
REMOTE_CONFIG: 远程配置地址,用于动态更新配置,地址应返回一个环境变量名作为 key 的 JSON,会在应用启动时加载并合并本地配置,与本地配置冲突时以远程配置为准,但请注意部分基础配置项不支持从远程获取
部分 RSS 模块配置
TIP
此处信息不完整。完整配置请参考路由对应的文档和 lib/config.ts。
4399 论坛
GAME_4399: 对应登录后的 cookie 值,获取方式:- 在 4399 首页登录。
- 打开开发者工具,切换到 Network 面板,刷新
- 查找
www.4399.com的访问请求,点击请求,在右侧 Headers 中找到 Cookie.
bilibili
用于用户关注动态系列路由
BILIBILI_COOKIE_{uid}: 对应 uid 的 b 站用户登录后的 Cookie 值,{uid}替换为 uid,如BILIBILI_COOKIE_2267573,获取方式:- 打开 https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/dynamic_new?uid=0&type=8
- 打开控制台,切换到 Network 面板,刷新
- 点击 dynamic_new 请求,找到 Cookie
- 视频和专栏,UP 主粉丝及关注只要求
SESSDATA字段,动态需复制整段 Cookie
Bitbucket
BITBUCKET_USERNAME: 你的 Bitbucket 用户名BITBUCKET_PASSWORD: 你的 Bitbucket 密码
BTBYR
BTBYR_HOST: 支持 ipv4 访问的 BTBYR 镜像,默认为原站https://bt.byr.cn/。BTBYR_COOKIE: 注册用户登录后的 Cookie 值,获取方式:- 登录后打开网站首页
- 打开控制台,刷新
- 找到
https://bt.byr.cn/index.php请求 - 找到请求头中的 Cookie
BUPT
BUPT_PORTAL_COOKIE: 登录后获得的 Cookie 值,获取方式- 打开 https://webapp.bupt.edu.cn/wap/login.html?redirect=https://>并登录
- 无视掉报错,并打开 https://webapp.bupt.edu.cn/extensions/wap/news/list.html?p-1&type=xnxw
- 打开控制台,刷新
- 找到
https://webapp.bupt.edu.cn/extensions/wap/news/list.html?p-1&type=xnxw请求 - 找到请求头中的 Cookie
Civitai
CIVITAI_COOKIE: Civitai 登录后的 cookie 值
Discourse
DISCOURSE_CONFIG_{id}: 一个 Discourse 驱动的论坛的配置信息,id可自由设定为任意数字或字符串。值应形如{"link":link,"key":key}。其中:link:论坛的链接。key访问论坛 API 的密钥,可参考 此处代码 以获取。需要确保有足够权限访问对应资源。
Discuz
DISCUZ_COOKIE_{cid}: 某 Discuz 驱动的论坛,用户注册后的 Cookie 值,cid 可自由设定,取值范围 [00, 99], 使用 discuz 通用路由时,通过指定 cid 来调用该 cookie
Disqus
DISQUS_API_KEY: Disqus API
E-Hentai
EH_IPB_MEMBER_ID: E-Hentai 账户登录后 cookie 的ipb_member_id值EH_IPB_PASS_HASH: E-Hentai 账户登录后 cookie 的ipb_pass_hash值EH_SK: E-Hentai 账户登录后 cookie 中的sk值EH_IGNEOUS: ExHentai 账户登录后 cookie 中的igneous值。若设置此值,RSS 数据将全部从里站获取EH_STAR: E-Hentai 账户获得捐赠等级后将出现该 cookie。若设置此值,图片访问量限制将与账号关联而非 IP 地址EH_IMG_PROXY: 封面代理访问地址。若设置此值,封面图链接将被替换为以此值开头。使用 ExHentai 时,封面图需要有 Cookie 才能访问,在一些阅读软件上没法显示封面,可以使用此值搭配一个加 Cookie 的代理服务器实现阅读软件无 Cookie 获取封面图。
Fantia
FANTIA_COOKIE: 登录后的cookie, 可以在控制台中查看请求头获取。如果不填会导致部分需要登录后才能阅读的帖子获取异常
Gitee
GITEE_ACCESS_TOKEN: Gitee 私人令牌
GitHub
GITHUB_ACCESS_TOKEN: GitHub Access Token
Google Fonts
GOOGLE_FONTS_API_KEY: API key
Instagram
IG_USERNAME: Instagram 用户名(仅 Private API)IG_PASSWORD: Instagram 密码(仅 Private API)IG_PROXY: Instagram 代理 URL(仅 Private API,可选)IG_COOKIE: Instagram 登录后的 Cookie(仅 Cookie)
注意,暂不支持两步验证。
Iwara
IWARA_USERNAME: Iwara 用户名IWARA_PASSWORD: Iwara 密码
Last.fm
LASTFM_API_KEY: Last.fm API Key
LightNovel.us
SECURITY_KEY: 在token中security_key的值,请去除%22,例如{%22security_key%22:%223cXXXX%22},只需要3cXXXX部分
Mastodon
用户时间线路由:访问 https://mastodon.example/settings/applications 申请(替换掉 mastodon.example)。需要 read:search 和 read:statuses 权限。
MASTODON_API_HOST: API 请求的实例,仅域名,不包括http://或https://协议头MASTODON_API_ACCESS_TOKEN: 用户 access token, 申请应用后,在应用配置页可以看到申请者的 access tokenMASTODON_API_ACCT_DOMAIN: 该实例本地用户 acct 标识的域名,即 WebFinger URIusername@domain中的domain,一般和MASTODON_API_HOST相同
Medium
打开控制台,复制 Cookie(理论上只需要 uid 和 sid 即可)
MEDIUM_ARTICLE_COOKIE:请求全文时使用的 Cookie,存在活跃的 Member 订阅时可获取付费内容全文MEDIUM_COOKIE_{username}:对应 username 的用户的 Cookie,个性推荐相关路由需要
MiniFlux
MINIFLUX_INSTANCE: 用户所用的实例,默认为 MiniFlux 官方提供的 付费服务地址MINIFLUX_TOKEN: 用户的 API 密钥,请登录所用实例后于设置->API 密钥->创建一个新的 API 密钥处获取
NGA BBS
用于获取帖子内文
NGA_PASSPORT_UID: 对应 cookie 中的ngaPassportUid.NGA_PASSPORT_CID: 对应 cookie 中的ngaPassportCid.
nhentai torrent
NHENTAI_USERNAME: nhentai 用户名或邮箱NHENTAI_PASSWORD: nhentai 密码
Notion
NOTION_TOKEN: Notion 内部集成 Token,请按照 Notion 官方指引 申请 Token
pianyuan
PIANYUAN_COOKIE: 对应 cookie 中的py_loginauth, 例:PIANYUAN_COOKIE='py_loginauth=xxxxxxxxxx'
pixiv
PIXIV_REFRESHTOKEN: Pixiv Refresh Token, 请参考 此文 获取,或自行对客户端抓包获取PIXIV_BYPASS_CDN: 绕过 Pixiv 前置的 Cloudflare CDN, 使用PIXIV_BYPASS_HOSTNAME指示的 IP 地址访问 Pixiv API, 可以解决因 Cloudflare 机器人验证导致的登录失败问题,默认关闭,设置 true 或 1 开启PIXIV_BYPASS_HOSTNAME: Pixiv 源站的主机名或 IP 地址,主机名会被解析为 IPv4 地址,默认为public-api.secure.pixiv.net;仅在PIXIV_BYPASS_CDN开启时生效PIXIV_BYPASS_DOH: 用于解析PIXIV_BYPASS_HOSTNAME的 DoH 端点 URL,需要兼容 Cloudflare 或 Google 的 DoH 服务的 JSON 查询格式,默认为https://1.1.1.1/dns-queryPIXIV_IMG_PROXY: 用于图片地址的代理,因为 pixiv 图片有防盗链,默认为https://i.pixiv.re
pixiv fanbox
用于获取付费内容
FANBOX_SESSION_ID: 对应 cookies 中的FANBOXSESSID。
Saraba1st
用于获取帖子里的图片
SARABA1ST_COOKIE: 对应网页端的 Cookie。
Sci-hub
用于科学期刊路由。
SCIHUB_HOST: 可访问的 sci-hub 镜像地址,默认为https://sci-hub.se。
Spotify
SPOTIFY_CLIENT_ID: Spotify 应用的 client IDSPOTIFY_CLIENT_SECRET: Spotify 应用的 client secret
用户相关路由
SPOTIFY_REFRESHTOKEN:用户在此 Spotify 应用的 refresh token。可以利用 alecchendev 制作的 spotify-refresh-token 获取。
TIP
记得为 Personal Top Items 或 Personal Saved Tracks 分别勾选 user-top-read 或 user-library-read scope。
Telegram
贴纸包路由:Telegram 机器人
TELEGRAM_TOKEN: Telegram 机器人 tokenTELEGRAM_SESSION: 可通过运行node lib/routes/telegram/tglib/client.js
Twitter
建议使用非重要账号,新账号或者不同地区登录可能会被限制登录
TWITTER_USERNAME: Twitter 用户名TWITTER_PASSWORD: Twitter 密码TWITTER_PHONE_OR_EMAIL: 可选,Twitter 手机号码或电子邮件地址TWITTER_AUTHENTICATION_SECRET: 可选,Twitter 两步验证 -> 认证应用 ->otpauth://totp/Twitter:@_RSSHub?secret=xxxxxxxxxxxxxxxx&issuer=Twitter中的 secret 部分
Wordpress
WORDPRESS_CDN: 用于中转 http 图片链接。可供考虑的服务见下表:url backbone https://imageproxy.pimg.tw/resize?url= akamai https://images.weserv.nl/?url= cloudflare https://pic1.xuehuaimg.com/proxy cloudflare https://cors.netnr.workers.dev cloudflare https://netnr-proxy.openode.io digitalocean
YouTube
- 全部路由
YOUTUBE_KEY: YouTube API Key,支持多个 key,用英文逗号,隔开- 订阅列表路由额外设置
YOUTUBE_CLIENT_ID: YouTube API 的 OAuth 2.0 客户端 IDYOUTUBE_CLIENT_SECRET: YouTube API 的 OAuth 2.0 客户端 SecretYOUTUBE_REFRESH_TOKEN: YouTube API 的 OAuth 2.0 客户端 Refresh Token。可以按照 此 gist 获取。
ZodGame
ZODGAME_COOKIE: ZodGame 登录后的 Cookie 值
北京大学
用于北大未名 BBS 全站十大
PKUBBS_COOKIE: BBS 注册用户登录后的 Cookie 值,获取方式:- 登录后打开论坛首页
- 打开控制台, 刷新
- 找到
https://bbs.pku.edu.cn/v2/home.php请求 - 找到请求头中的 Cookie
滴答清单
DIDA365_USERNAME: 滴答清单用户名DIDA365_PASSWORD: 滴答清单密码
豆瓣
用于想看
DOUBAN_COOKIE: 豆瓣登陆后的 Cookie 值
饭否
FANFOU_CONSUMER_KEY: 饭否 Consumer KeyFANFOU_CONSUMER_SECRET: 饭否 Consumer SecretFANFOU_USERNAME: 饭否登录用户名、邮箱、手机号FANFOU_PASSWORD: 饭否密码
和风天气
HEFENG_KEY:API key
今日热榜
TOPHUB_COOKIE: 今日热榜登录后的 cookie,目前只需要itc_center_user=...以获取原始链接
米游社
MIHOYO_COOKIE:登录米游社后的 cookie,用于获取用户关注动态时间线。
南方周末
付费全文
INFZM_COOKIE: infzm 账户登陆后的 cookie,目前只需要passport_session=...即可获取全文
轻小说文库
WENKU8_COOKIE: 登陆轻小说文库后的 cookie
色花堂
SEHUATANG_COOKIE: 登陆色花堂后的 cookie 值。
邮箱 邮件列表路由
EMAIL_CONFIG_{email}: 邮箱设置,替换{email}为 邮箱账号,邮件账户的@与.替换为_,例如EMAIL_CONFIG_xxx_qq_com。Linux 内容格式为password=密码&host=服务器&port=端口,docker 内容格式为password=密码&host=服务器&port=端口,例如:Linux 环境变量:
EMAIL_CONFIG_xxx_qq_com="password=123456&host=imap.qq.com&port=993"docker 环境变量:
EMAIL_CONFIG_xxx_qq_com=password=123456&host=imap.qq.com&port=993,请勿添加引号',"。注意:邮箱的路由不支持使用 socks5h 的代理,主要是受
ImapFlow这个第三方库的限制,使用的时候需要注意。
网易云歌单
用于歌单及听歌排行
NCM_COOKIES: 网易云音乐登陆后的 cookie 值,可在浏览器控制台通过document.cookie获取。
微博
用于个人时间线路由
WEIBO_APP_KEY: 微博 App KeyWEIBO_APP_SECRET: 微博 App SecretWEIBO_REDIRECT_URL: 微博登录授权回调地址,默认为RSSHub 地址/weibo/timeline/0,自定义回调地址请确保最后可以转跳到RSSHub 地址/weibo/timeline/0?code=xxx
用于自定义分组
WEIBO_COOKIES: 用户访问网页微博时所使用的 cookie, 获取方式:- 打开并登录 https://m.weibo.cn (确保打开页面为手机版,如果强制跳转电脑端可尝试使用可更改 UserAgent 的浏览器插件)
- 按下
F12打开控制台,切换至Network(网络)面板 - 在该网页切换至任意关注分组,并在面板打开最先捕获到的请求 (该情形下捕获到的请求路径应包含
/feed/group) - 查看该请求的
Headers(请求头), 找到Cookie字段并复制内容
小宇宙
需要 App 登陆后抓包获取相应数据。
XIAOYUZHOU_ID: 即数据包中的x-jike-device-id。XIAOYUZHOU_TOKEN: 即数据包中的x-jike-refresh-token。
新榜
NEWRANK_COOKIE: 登陆后的 COOKIE 值,其中 token 是必要的,其他可删除
喜马拉雅
XIMALAYA_TOKEN: 对应 cookie 中的1&_token,获取方式:- 登陆喜马拉雅网页版
- 打开控制台,刷新
- 查找名称为
1&_token的cookie,其内容即为XIMALAYA_TOKEN的值(即在cookie中查找1&_token=***;,并设置XIMALAYA_TOKEN = ***)
知乎用户
用于用户关注时间线
ZHIHU_COOKIES: 知乎登录后的 cookie 值。- 可以在知乎网页版的一些请求的请求头中找到,如
GET /moments请求头中的cookie值。
- 可以在知乎网页版的一些请求的请求头中找到,如
