配置
通过设置环境变量来配置 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:1080socks5h://user:pass@127.0.0.1:1080(用户名为user, 密码为pass)socks://127.0.0.1:1080(protocol 为 socks 时表示socks5h)http://127.0.0.1:8080http://user:pass@127.0.0.1:8080https://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