配置
通过设置环境变量来配置 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
两种缓存方式
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
代理配置
部分路由反爬严格,可以配置使用代理抓取。
可通过代理 URI 或代理选项或代理自动配置文件 (PAC) 或反向代理等方式来配置代理。
代理 URI
PROXY_URI
: 代理 URI,支持 socks4, socks5(本地查询域名的 SOCKS5,不推荐使用), socks5h(传域名的 SOCKS5,推荐使用,以防止 DNS 污染或 DNS 泄露), http, https,具体以 socks-proxy-agent NPM 包的支持为准,也可参考 curl 中 SOCKS 代理协 议的用法。
代理 URI 的格式为:
{protocol}://{host}:{port}
{protocol}://{username}:{password}@{host}:{port}
(带身份凭证)一些示例:
socks4://127.0.0.1:1080
socks5h://user:pass@127.0.0.1:1080
(用户名为user
, 密码为pass
)socks://127.0.0.1:1080
(protocol 为 socks 时表示socks5h
)http://127.0.0.1:8080
http://user:pass@127.0.0.1:8080
https://127.0.0.1:8443
代理选项
PROXY_PROTOCOL
: 使用代理,支持 socks,http,https
PROXY_HOST
: 代理服务器域名或 IP
PROXY_PORT
: 代理服务器端口
PROXY_AUTH
: 给代理服务器的身份验证凭证,Proxy-Authorization: Basic ${process.env.PROXY_AUTH}
PROXY_URL_REGEX
: 启用代理的 URL 正则表达式,默认全部开启 .*
代理自动配置文件 (PAC)
该方法会覆盖 PROXY_URI
, PROXY_PROTOCOL
, PROXY_HOST
以及 PROXY_PORT
。
关于代理自动配置文件 (PAC),请查看代理自动配置文件(PAC)文件。
PAC_URI
: PAC 文件 URI,支持 http, https, ftp, file, data。具体以 pac-proxy-agent NPM 包的支持为准。
PAC_SCRIPT
: 硬编码的 PAC 脚本字符串。覆盖 PAC_URI
。
反向代理
这种代理方式无法代理包含 cookie 的请求。
REVERSE_PROXY_URL
: 反向代理地址,RSSHub 将会使用该地址作为前缀来发起请求,例如 https://proxy.example.com/?target=
,对 https://google.com
发起的请求将被自动转换为 https://proxy.example.com/?target=https%3A%2F%2Fgoogle.com
你可以使用 Cloudflare Workers 来搭建一 个简易的反向代理,例如:
addEventListener('fetch', event => {
event.respondWith(handleRequest(event.request))
})
async function handleRequest(request) {
const url = new URL(request.url)
let target = url.searchParams.get('target')
if (!target) {
return new Response('Hello, this is Cloudflare Proxy Service. To proxy your requests, please use the "target" URL parameter.')
} else {
target = decodeURIComponent(target)
const newRequest = new Request(target, {
headers: request.headers,
method: request.method,
body: request.body
})
return await fetch(newRequest)
}
}
访问控制配置
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