短信现在似乎发不了包含网址的内容
『回复列表(43|隐藏机器人聊天)』
@上善若水,我发现了一个好方法,我先用ossfs把阿里云对象存储挂载为本地路径,然后就可以直接把它设为nginx wwwroot了。
https://github.com/aliyun/ossfs/blob/master/README-CN.md
nginx的话,宝塔选装 tengine 就可以在配置文件里编写lua代码实现相同的功能:
location / {
rewrite_by_lua_block {
---------------------------------------------------------------------------------
local LUTRIS_ACL_KEY = '一个key'
local ALLOW_UA_LIST = {'一个User-Agent正则表达式列表'}
local function is_valid_key(key, url, ua)
local t = ngx.time()
local tMod = t - (t % 30)
local signData = url .. LUTRIS_ACL_KEY .. tostring(tMod) .. ua
local sign = ngx.md5(signData)
return key == sign
end
local function is_allow_ua(ua)
for _, allowUA in ipairs(ALLOW_UA_LIST) do
if ngx.re.match(ua, allowUA) then
return true
end
end
return false
end
local ua = ngx.var.http_user_agent
local key = ngx.var.arg_k
local uri = ngx.var.uri
if not is_allow_ua(ua) then
if not is_valid_key(key, uri, ua) then
local newUrl = 'https://hu60.cn/q.php/lutris.acl.html?u=' .. ngx.escape_uri(uri)
return ngx.redirect(newUrl)
end
end
---------------------------------------------------------------------------------
}
}
备注:这个 lua 规则是 Github Copilot 帮我从阿里云 EdgeScript 翻译过来的,它一次就写对了,真是方便。不过阿里云 EdgeScript 的语法就很怪了,AI没办法帮我生成(它虽然能看懂并能转换为其他语言,但不能正确生成 EdgeScript 代码),我当初写这个规则用了几个小时,因为总是有奇怪的小问题导致代码没办法继续运行(比如 $arg_k
这种写法在URL中不包含?k=xxx
时会导致代码无法继续运行,必须用req_uri_arg('k')
才能避免这种情况):
LUTRIS_ACL_KEY = '一个key'
ALLOW_UA_LIST = ['一个User-Agent正则表达式列表']
def is_valid_key(key, url, ua) {
t = now()
tMod = sub(t, mod(t, 30))
signData = concat(url, LUTRIS_ACL_KEY, tostring(tMod), ua)
sign = md5(signData)
return eq(key, sign)
}
def is_allow_ua(ua) {
for _, allowUA in ALLOW_UA_LIST {
if match_re(ua, allowUA) {
return true
}
}
return false
}
if not(is_allow_ua($http_user_agent)) {
if not(is_valid_key(req_uri_arg('k'), $uri, $http_user_agent)) {
newUrl = concat('https://hu60.cn/q.php/lutris.acl.html?u=', url_escape($uri))
rewrite(newUrl, 'enhance_redirect')
}
}
拿到带 key 的地址后,30 秒内就能无限刷了
刷流量的人还没有那么饥渴,JS跳转就已经可以拦住他们了,key只是为了再增加一点难度让他们放弃我转投其他目标。
还有,我有一些客户端必须能够直接下载到文件,所以我在代码里刻意排除了这些User-Agent。如果这个列表暴露了,其他人也可以伪造此类请求来绕过验证。所以我也没必要把key做的特别安全的样子……
@上善若水,我已经把 file.winegame.net 切到轻量云了,欢迎来测速:
https://file.winegame.net/runners/wine/lutris-ge/wine-lutris-GE-Proton7-32-x86_64.tar.xz